diff --git a/config/alfresco/avm-clt-context.xml b/config/alfresco/avm-clt-context.xml
new file mode 100644
index 0000000000..130b1bf2b9
--- /dev/null
+++ b/config/alfresco/avm-clt-context.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+ rmi://localhost:1313/avm
+
+
+ org.alfresco.repo.avm.AVMRemote
+
+
+ true
+
+
+
+
+
+ rmi://localhost:1313/avmsync
+
+
+ org.alfresco.service.cmr.avmsync.AVMSyncService
+
+
+ true
+
+
+
diff --git a/source/java/org/alfresco/repo/avm/clt/AVMCltBase.java b/source/java/org/alfresco/repo/avm/clt/AVMCltBase.java
index f9254bbd24..37201c9686 100644
--- a/source/java/org/alfresco/repo/avm/clt/AVMCltBase.java
+++ b/source/java/org/alfresco/repo/avm/clt/AVMCltBase.java
@@ -10,7 +10,6 @@ import java.util.Map;
import org.alfresco.repo.avm.AVMRemote;
import org.alfresco.service.cmr.avmsync.AVMSyncService;
-import org.alfresco.util.Pair;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@@ -43,7 +42,7 @@ public abstract class AVMCltBase
*/
protected AVMCltBase()
{
- fContext = new ClassPathXmlApplicationContext("avm-clt-context.xml");
+ fContext = new ClassPathXmlApplicationContext("alfresco/avm-clt-context.xml");
fAVMRemote = (AVMRemote)fContext.getBean("avmRemote");
fAVMSyncService = (AVMSyncService)fContext.getBean("avmSyncService");
}
@@ -76,32 +75,27 @@ public abstract class AVMCltBase
int pos = 0;
while (pos < args.length)
{
- // If the argument begins with "-" then this could be a
- // flag.
- if (args[pos].startsWith("-"))
+ // If the argument is one of the accepted flags then it's
+ // a flag.
+ if (flagArgs.containsKey(args[pos]))
{
- // If the argument is one of the accepted flags then it's
- // a flag.
- if (flagArgs.containsKey(args[pos]))
+ String flag = args[pos];
+ pos++;
+ int count = flagArgs.get(flag);
+ // Check for too few arguments
+ if (args.length - pos < count)
{
- String flag = args[pos];
- pos++;
- int count = flagArgs.get(flag);
- // Check for too few arguments
- if (args.length - pos < count)
- {
- usage(usageMessage);
- }
- // Stuff the parsed flag away.
- List flArgs = new ArrayList();
- for (int i = 0; i < count; i++)
- {
- flArgs.add(args[pos + i]);
- }
- flagValues.put(flag, flArgs);
- pos += count;
- continue;
+ usage(usageMessage);
}
+ // Stuff the parsed flag away.
+ List flArgs = new ArrayList();
+ for (int i = 0; i < count; i++)
+ {
+ flArgs.add(args[pos + i]);
+ }
+ flagValues.put(flag, flArgs);
+ pos += count;
+ continue;
}
// Otherwise its just a plain old arg.
actualArgs.add(args[pos]);
diff --git a/source/java/org/alfresco/repo/avm/clt/AVMLs.java b/source/java/org/alfresco/repo/avm/clt/AVMLs.java
new file mode 100644
index 0000000000..35f4ae4c4a
--- /dev/null
+++ b/source/java/org/alfresco/repo/avm/clt/AVMLs.java
@@ -0,0 +1,77 @@
+/**
+ *
+ */
+package org.alfresco.repo.avm.clt;
+
+import java.util.List;
+import java.util.Map;
+
+import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
+
+/**
+ * Get a listing of a node.
+ * @author britt
+ */
+public class AVMLs extends AVMCltBase
+{
+ private static Object [] flagDefs = { "-R", 0 };
+
+ private static String USAGE = "usage: AVMLs [-R] nodepath";
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.avm.clt.AVMCltBase#run(java.util.Map, java.util.List)
+ */
+ @Override
+ protected void run(Map> flags, List args)
+ {
+ String[] pathVersion = args.get(0).split("@");
+ AVMNodeDescriptor desc = fAVMRemote.lookup(Integer.parseInt(pathVersion[1]),
+ pathVersion[0]);
+ if (flags.containsKey("-R"))
+ {
+ recursiveList(desc, 0);
+ }
+ else
+ {
+ list(desc);
+ }
+ }
+
+ private void list(AVMNodeDescriptor desc)
+ {
+ if (desc.isFile())
+ {
+ System.out.println(desc.getName() + '\t' + desc);
+ return;
+ }
+ Map listing = fAVMRemote.getDirectoryListing(desc);
+ for (Map.Entry entry : listing.entrySet())
+ {
+ System.out.println(entry.getKey() + '\t' + entry.getValue());
+ }
+ }
+
+ private void recursiveList(AVMNodeDescriptor desc, int indent)
+ {
+ for (int i = 0; i < indent; i++)
+ {
+ System.out.print(' ');
+ }
+ System.out.println(desc.getName() + '\t' + desc);
+ if (desc.isDirectory())
+ {
+ indent += 2;
+ Map listing = fAVMRemote.getDirectoryListing(desc);
+ for (Map.Entry entry : listing.entrySet())
+ {
+ recursiveList(entry.getValue(), indent);
+ }
+ }
+ }
+
+ public static void main(String[] args)
+ {
+ AVMLs me = new AVMLs();
+ me.exec(args, flagDefs, 1, USAGE);
+ }
+}
diff --git a/source/java/org/alfresco/repo/avm/clt/AVMLsStores.java b/source/java/org/alfresco/repo/avm/clt/AVMLsStores.java
new file mode 100644
index 0000000000..cd3b9a7d6d
--- /dev/null
+++ b/source/java/org/alfresco/repo/avm/clt/AVMLsStores.java
@@ -0,0 +1,39 @@
+/**
+ *
+ */
+package org.alfresco.repo.avm.clt;
+
+import java.util.List;
+import java.util.Map;
+
+import org.alfresco.service.cmr.avm.AVMStoreDescriptor;
+
+/**
+ * List all avm stores in the repository.
+ * @author britt
+ */
+public class AVMLsStores extends AVMCltBase
+{
+ private static Object[] flagDefs = { };
+
+ private static String USAGE = "usage: AVMLsStores";
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.avm.clt.AVMCltBase#run(java.util.Map, java.util.List)
+ */
+ @Override
+ protected void run(Map> flags, List args)
+ {
+ List stores = fAVMRemote.getAVMStores();
+ for (AVMStoreDescriptor store : stores)
+ {
+ System.out.println(store);
+ }
+ }
+
+ public static void main(String[] args)
+ {
+ AVMLsStores me = new AVMLsStores();
+ me.exec(args, flagDefs, 0, USAGE);
+ }
+}
diff --git a/source/java/org/alfresco/repo/avm/clt/AVMMkStore.java b/source/java/org/alfresco/repo/avm/clt/AVMMkStore.java
new file mode 100644
index 0000000000..1314911b3e
--- /dev/null
+++ b/source/java/org/alfresco/repo/avm/clt/AVMMkStore.java
@@ -0,0 +1,36 @@
+/**
+ *
+ */
+package org.alfresco.repo.avm.clt;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Create an AVM store.
+ * @author britt
+ */
+public class AVMMkStore extends AVMCltBase
+{
+ private static Object [] flagDefs = { };
+
+ private static String USAGE = "usage: AVMMkStore storename";
+
+ /* (non-Javadoc)
+ * @see org.alfresco.repo.avm.clt.AVMCltBase#run(java.util.Map, java.util.List)
+ */
+ @Override
+ protected void run(Map> flags, List args)
+ {
+ fAVMRemote.createAVMStore(args.get(0));
+ }
+
+ /**
+ * @param args
+ */
+ public static void main(String[] args)
+ {
+ AVMMkStore me = new AVMMkStore();
+ me.exec(args, flagDefs, 1, USAGE);
+ }
+}