The Node Browser in the UI can now navigate AVM stores.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3553 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Britt Park
2006-08-21 14:05:52 +00:00
parent 0135279f47
commit 26877f6105
5 changed files with 47 additions and 7 deletions

View File

@@ -99,6 +99,13 @@ public class AVMNodeConverter
*/
public static String [] SplitBase(String path)
{
if (path.endsWith(":/"))
{
String [] res = new String[2];
res[0] = null;
res[1] = "";
return res;
}
int off = path.lastIndexOf("/");
if (off == -1)
{
@@ -106,6 +113,10 @@ public class AVMNodeConverter
}
String [] decomposed = new String[2];
decomposed[0] = path.substring(0, off);
if (decomposed[0].endsWith(":"))
{
decomposed[0] = decomposed[0] + "/";
}
decomposed[1] = path.substring(off + 1);
return decomposed;
}

View File

@@ -356,7 +356,7 @@ public class AVMNodeService implements NodeService
throw new InvalidNodeRefException("Invalid src path.", nodeToMoveRef);
}
String srcParent = splitSrc[0];
if (srcParent.endsWith(":"))
if (srcParent == null)
{
throw new InvalidNodeRefException("Cannot rename root node.", nodeToMoveRef);
}
@@ -549,7 +549,7 @@ public class AVMNodeService implements NodeService
throw new InvalidNodeRefException("Read only store.", nodeRef);
}
String [] avmPathBase = AVMNodeConverter.SplitBase((String)avmVersionPath[1]);
if (avmPathBase[0].endsWith(":"))
if (avmPathBase[0] == null)
{
throw new InvalidNodeRefException("Cannot delete root node.", nodeRef);
}
@@ -609,7 +609,7 @@ public class AVMNodeService implements NodeService
String parentPath = (String)parentVersionPath[1];
String childPath = (String)childVersionPath[1];
String [] childPathBase = AVMNodeConverter.SplitBase(childPath);
if (!childPathBase[0].equals(parentPath))
if (childPathBase[0] == null || !childPathBase[0].equals(parentPath))
{
throw new InvalidNodeRefException("Not a child.", childRef);
}
@@ -875,7 +875,10 @@ public class AVMNodeService implements NodeService
String path = (String)avmVersionPath[1];
List<ChildAssociationRef> result = new ArrayList<ChildAssociationRef>();
String [] splitPath = AVMNodeConverter.SplitBase(path);
if (splitPath[0].endsWith(":"))
// TODO Remove when you figure this out.
fgLogger.error(splitPath[0]);
fgLogger.error(splitPath[1]);
if (splitPath[0] == null)
{
return result;
}
@@ -1029,7 +1032,7 @@ public class AVMNodeService implements NodeService
List<ChildAssociationRef> parents = getParentAssocs(nodeRef);
if (parents.size() == 0)
{
return null;
return new ChildAssociationRef(null, null, null, nodeRef);
}
return parents.get(0);
}
@@ -1123,6 +1126,8 @@ public class AVMNodeService implements NodeService
String [] splitPath = AVMNodeConverter.SplitBase(currPath);
String parentPath = splitPath[0];
String name = splitPath[1];
// TODO Remove when understood.
fgLogger.error("parentpath = " + parentPath);
ChildAssociationRef caRef =
new ChildAssociationRef(ContentModel.ASSOC_CONTAINS,
AVMNodeConverter.ToNodeRef(version, parentPath),
@@ -1132,7 +1137,14 @@ public class AVMNodeService implements NodeService
true,
-1);
path.prepend(new Path.ChildAssocElement(caRef));
currPath = parentPath;
}
ChildAssociationRef caRef = new ChildAssociationRef(null, null, null,
AVMNodeConverter.ToNodeRef(version,
currPath));
path.prepend(new Path.ChildAssocElement(caRef));
// TODO Get rid of this when you figure this out.
fgLogger.error(path);
return path;
}

View File

@@ -96,12 +96,16 @@ class HibernateRetryingTransactionHelper extends HibernateTemplate implements Re
t.printStackTrace(System.err);
throw new AVMException("Unrecoverable error.", t);
}
if (!status.isCompleted())
if (newTxn && !status.isCompleted())
{
fTransactionManager.rollback(status);
}
if (!newTxn)
{
if (t instanceof AVMException)
{
throw (AVMException)t;
}
throw new AVMException("Unrecoverable error.", t);
}
// If we've lost a race or we've deadlocked, retry.

View File

@@ -56,6 +56,7 @@ import org.alfresco.service.cmr.repository.InvalidChildAssociationRefException;
import org.alfresco.service.cmr.repository.InvalidNodeRefException;
import org.alfresco.service.cmr.repository.InvalidStoreRefException;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.repository.Path;
import org.alfresco.service.cmr.repository.StoreExistsException;
import org.alfresco.service.cmr.repository.StoreRef;
@@ -79,6 +80,7 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl
private DictionaryService dictionaryService;
private NodeDaoService nodeDaoService;
private StoreArchiveMap storeArchiveMap;
private NodeService avmNodeService;
public DbNodeServiceImpl()
{
@@ -100,6 +102,11 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl
this.storeArchiveMap = storeArchiveMap;
}
public void setAvmNodeService(NodeService avmNodeService)
{
this.avmNodeService = avmNodeService;
}
/**
* Performs a null-safe get of the node
*
@@ -159,7 +166,10 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl
{
storeRefs.add(store.getStoreRef());
}
// done
// Now get the AVMStores.
List<StoreRef> avmStores = avmNodeService.getStores();
storeRefs.addAll(avmStores);
// Return them all.
return storeRefs;
}