You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2006/12/05 15:08:07 UTC
svn commit: r482657 [2/2] - in /jackrabbit/trunk/contrib/spi:
jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/
jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/
jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ jcr2spi/src/mai...
Modified: jackrabbit/trunk/contrib/spi/spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/URIResolverImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/URIResolverImpl.java?view=diff&rev=482657&r1=482656&r2=482657
==============================================================================
--- jackrabbit/trunk/contrib/spi/spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/URIResolverImpl.java (original)
+++ jackrabbit/trunk/contrib/spi/spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/URIResolverImpl.java Tue Dec 5 06:08:03 2006
@@ -185,35 +185,54 @@
NodeId nodeId;
DavPropertySet propSet = response.getProperties(DavServletResponse.SC_OK);
- if (propSet.contains(ItemResourceConstants.JCR_UUID)) {
- String uuid = propSet.get(ItemResourceConstants.JCR_UUID).getValue().toString();
+ String uuid = getUUID(propSet);
+ if (uuid != null) {
nodeId = service.getIdFactory().createNodeId(uuid);
} else {
- DavProperty nameProp = propSet.get(ItemResourceConstants.JCR_NAME);
- if (nameProp != null && nameProp.getValue() != null) {
- // not root node. Note that 'unespacing' is not required since
- // the jcr:name property does not provide the value in escaped form.
- String jcrName = nameProp.getValue().toString();
- int index = Path.INDEX_UNDEFINED;
- DavProperty indexProp = propSet.get(ItemResourceConstants.JCR_INDEX);
- if (indexProp != null && indexProp.getValue() != null) {
- index = Integer.parseInt(indexProp.getValue().toString());
- }
- try {
- QName qName = NameFormat.parse(jcrName, nsResolver);
- nodeId = service.getIdFactory().createNodeId(parentId, Path.create(qName, index));
- } catch (NameException e) {
- throw new RepositoryException(e);
- }
+ QName qName = getQName(propSet);
+ if (qName == QName.ROOT) {
+ nodeId = service.getIdFactory().createNodeId((String) null, Path.ROOT);
} else {
- // TODO: TO_BE_FIXED.... special case: root node
- return service.getIdFactory().createNodeId((String) null, Path.ROOT);
+ int index = getIndex(propSet);
+ nodeId = service.getIdFactory().createNodeId(parentId, Path.create(qName, index));
}
}
-
// cache
cache.add(response.getHref(), nodeId);
return nodeId;
+ }
+
+ String getUUID(DavPropertySet propSet) {
+ if (propSet.contains(ItemResourceConstants.JCR_UUID)) {
+ return propSet.get(ItemResourceConstants.JCR_UUID).getValue().toString();
+ } else {
+ return null;
+ }
+ }
+
+ QName getQName(DavPropertySet propSet) throws RepositoryException {
+ DavProperty nameProp = propSet.get(ItemResourceConstants.JCR_NAME);
+ if (nameProp != null && nameProp.getValue() != null) {
+ // not root node. Note that 'unespacing' is not required since
+ // the jcr:name property does not provide the value in escaped form.
+ String jcrName = nameProp.getValue().toString();
+ try {
+ return NameFormat.parse(jcrName, nsResolver);
+ } catch (NameException e) {
+ throw new RepositoryException(e);
+ }
+ } else {
+ return QName.ROOT;
+ }
+ }
+
+ int getIndex(DavPropertySet propSet) {
+ int index = Path.INDEX_UNDEFINED;
+ DavProperty indexProp = propSet.get(ItemResourceConstants.JCR_INDEX);
+ if (indexProp != null && indexProp.getValue() != null) {
+ index = Integer.parseInt(indexProp.getValue().toString());
+ }
+ return index;
}
PropertyId buildPropertyId(NodeId parentId, MultiStatusResponse response,