New commands for AVM Console (AVMInterpreter). Version parameter is not longer mandatory for simple commands.

setstoreproperty - Set the value of store property.
setstoreproperty, storename, qname, value

setstorepermission - Set a permission mask on a store.
setstorepermission, storename, authority, permission

clearstorepermission - Clears a permission mask on a store for a given authority.
clearstorepermission, storename, authority

setnodepermission - Set a permission mask on a node.
setnodepermission, avmpath, authority, permission

clearnodepermission - Clears a permission mask on a node for a given authority.
clearnodepermission, avmpath, authority

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@9482 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Kevin Roast
2008-06-16 11:12:11 +00:00
parent 99e5fbc045
commit 04baee14d8

View File

@@ -43,6 +43,7 @@ import java.util.regex.Pattern;
import org.alfresco.repo.avm.util.BulkLoader; import org.alfresco.repo.avm.util.BulkLoader;
import org.alfresco.repo.domain.PropertyValue; import org.alfresco.repo.domain.PropertyValue;
import org.alfresco.service.cmr.avm.AVMNodeDescriptor; import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
import org.alfresco.service.cmr.avm.AVMNotFoundException;
import org.alfresco.service.cmr.avm.AVMService; import org.alfresco.service.cmr.avm.AVMService;
import org.alfresco.service.cmr.avm.AVMStoreDescriptor; import org.alfresco.service.cmr.avm.AVMStoreDescriptor;
import org.alfresco.service.cmr.avm.VersionDescriptor; import org.alfresco.service.cmr.avm.VersionDescriptor;
@@ -52,6 +53,8 @@ import org.alfresco.service.cmr.avmsync.AVMDifference;
import org.alfresco.service.cmr.avmsync.AVMSyncService; import org.alfresco.service.cmr.avmsync.AVMSyncService;
import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.cmr.security.PermissionService;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
import org.springframework.context.support.FileSystemXmlApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext;
@@ -83,6 +86,11 @@ public class AVMInterpreter
*/ */
private AVMLockingService fLockingService; private AVMLockingService fLockingService;
/**
* The permission service.
*/
private PermissionService fPermissionService;
/** /**
* The reader for interaction. * The reader for interaction.
*/ */
@@ -105,6 +113,7 @@ public class AVMInterpreter
console.setAvmService((AVMService)context.getBean("AVMService")); console.setAvmService((AVMService)context.getBean("AVMService"));
console.setAvmSyncService((AVMSyncService)context.getBean("AVMSyncService")); console.setAvmSyncService((AVMSyncService)context.getBean("AVMSyncService"));
console.setAvmLockingService((AVMLockingService)context.getBean("AVMLockingService")); console.setAvmLockingService((AVMLockingService)context.getBean("AVMLockingService"));
console.setPermissionService((PermissionService)context.getBean("PermissionService"));
BulkLoader loader = new BulkLoader(); BulkLoader loader = new BulkLoader();
loader.setAvmService((AVMService)context.getBean("AVMService")); loader.setAvmService((AVMService)context.getBean("AVMService"));
console.setBulkLoader(loader); console.setBulkLoader(loader);
@@ -147,6 +156,15 @@ public class AVMInterpreter
fLockingService = lockService; fLockingService = lockService;
} }
/**
* Set the PermissionService.
* @param service The PermissionService instance.
*/
public void setPermissionService(PermissionService service)
{
fPermissionService = service;
}
/** /**
* Set the bulk loader. * Set the bulk loader.
* @param loader * @param loader
@@ -201,12 +219,12 @@ public class AVMInterpreter
PrintStream out = new PrintStream(bout); PrintStream out = new PrintStream(bout);
if (command[0].equals("ls")) if (command[0].equals("ls"))
{ {
if (command.length != 3) if (command.length < 2)
{ {
return "Syntax Error."; return "Syntax Error.";
} }
AVMNodeDescriptor desc = fService.lookup(Integer.parseInt(command[2]), int version = (command.length == 2) ? -1 : Integer.parseInt(command[2]);
command[1]); AVMNodeDescriptor desc = fService.lookup(version, command[1]);
if (desc == null) if (desc == null)
{ {
return "Not Found."; return "Not Found.";
@@ -220,12 +238,12 @@ public class AVMInterpreter
} }
else if (command[0].equals("lsr")) else if (command[0].equals("lsr"))
{ {
if (command.length != 3) if (command.length < 2)
{ {
return "Syntax Error."; return "Syntax Error.";
} }
AVMNodeDescriptor desc = fService.lookup(Integer.parseInt(command[2]), int version = (command.length == 2) ? -1 : Integer.parseInt(command[2]);
command[1]); AVMNodeDescriptor desc = fService.lookup(version, command[1]);
recursiveList(out, desc, 0); recursiveList(out, desc, 0);
} }
else if (command[0].equals("lsrep")) else if (command[0].equals("lsrep"))
@@ -347,14 +365,14 @@ public class AVMInterpreter
} }
else if (command[0].equals("cat")) else if (command[0].equals("cat"))
{ {
if (command.length != 3) if (command.length < 2)
{ {
return "Syntax Error."; return "Syntax Error.";
} }
int version = (command.length == 2) ? -1 : Integer.parseInt(command[2]);
BufferedReader reader = BufferedReader reader =
new BufferedReader( new BufferedReader(
new InputStreamReader(fService.getFileInputStream(Integer.parseInt(command[2]), new InputStreamReader(fService.getFileInputStream(version, command[1])));
command[1])));
String l; String l;
while ((l = reader.readLine()) != null) while ((l = reader.readLine()) != null)
{ {
@@ -418,11 +436,12 @@ public class AVMInterpreter
} }
else if (command[0].equals("stat")) else if (command[0].equals("stat"))
{ {
if (command.length != 3) if (command.length < 2)
{ {
return "Syntax Error."; return "Syntax Error.";
} }
AVMNodeDescriptor desc = fService.lookup(Integer.parseInt(command[2]), command[1]); int version = (command.length == 2) ? -1 : Integer.parseInt(command[2]);
AVMNodeDescriptor desc = fService.lookup(version, command[1]);
out.println(desc); out.println(desc);
out.println("Version: " + desc.getVersionID()); out.println("Version: " + desc.getVersionID());
out.println("Owner: " + desc.getOwner()); out.println("Owner: " + desc.getOwner());
@@ -430,26 +449,47 @@ public class AVMInterpreter
} }
else if (command[0].equals("getnodeproperties")) else if (command[0].equals("getnodeproperties"))
{ {
if (command.length != 3) if (command.length < 2)
{ {
return "Syntax Error."; return "Syntax Error.";
} }
final Map<QName, PropertyValue> properties = fService.getNodeProperties(Integer.parseInt(command[2]), command[1]); int version = (command.length == 2) ? -1 : Integer.parseInt(command[2]);
final Map<QName, PropertyValue> properties = fService.getNodeProperties(version, command[1]);
for (final Map.Entry<QName, PropertyValue> p : properties.entrySet()) for (final Map.Entry<QName, PropertyValue> p : properties.entrySet())
{ {
out.println(p.getKey() + ": " + p.getValue()); out.println(p.getKey() + ": " + p.getValue());
} }
} }
else if (command[0].equals("descnode")) else if (command[0].equals("setnodepermission"))
{
if (command.length != 4)
{
return "Syntax Error.";
}
fPermissionService.setPermission(
AVMNodeConverter.ToNodeRef(-1, command[1]), command[2], command[3], true);
}
else if (command[0].equals("clearnodepermission"))
{ {
if (command.length != 3) if (command.length != 3)
{ {
return "Syntax Error."; return "Syntax Error.";
} }
String path = command[1]; fPermissionService.clearPermission(
AVMNodeConverter.ToNodeRef(-1, command[1]), command[2]);
}
else if (command[0].equals("descnode"))
{
if (command.length < 2)
{
return "Syntax Error.";
}
AVMNodeDescriptor nodeDesc = fService.lookup(Integer.parseInt(command[2]), path); String path = command[1];
int version = (command.length == 2) ? -1 : Integer.parseInt(command[2]);
AVMNodeDescriptor nodeDesc = fService.lookup(version, path);
if (nodeDesc == null) if (nodeDesc == null)
{ {
return "Path Not Found."; return "Path Not Found.";
@@ -476,6 +516,8 @@ public class AVMInterpreter
mainStore = store.substring(0, store.indexOf("--")); mainStore = store.substring(0, store.indexOf("--"));
} }
try
{
AVMLock lock = fLockingService.getLock(mainStore, lockPath); AVMLock lock = fLockingService.getLock(mainStore, lockPath);
out.print("lock: "); out.print("lock: ");
if (lock != null) if (lock != null)
@@ -490,6 +532,11 @@ public class AVMInterpreter
out.println("No locks found"); out.println("No locks found");
} }
} }
catch (AVMNotFoundException avmerr)
{
out.println("No locks found");
}
}
else if (command[0].equals("deletenodeproperty")) else if (command[0].equals("deletenodeproperty"))
{ {
if (command.length != 3) if (command.length != 3)
@@ -663,7 +710,6 @@ public class AVMInterpreter
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
for (int i=3; i<command.length; i++) for (int i=3; i<command.length; i++)
{ {
// Add each value in turn
sb.append(command[i]); sb.append(command[i]);
} }
propertyValue = sb.toString(); propertyValue = sb.toString();
@@ -682,10 +728,65 @@ public class AVMInterpreter
out.println("set property " + command[2] + " of " + command[1]); out.println("set property " + command[2] + " of " + command[1]);
} }
else if (command[0].equals("setstoreproperty"))
{
if (command.length < 4)
{
return "Syntax Error.";
}
QName valueQName = QName.createQName(command[2]);
String propertyValue = "";
// If multiple values are specified then concatenate the values
if (command.length > 4)
{
StringBuffer sb = new StringBuffer();
for (int i=3; i<command.length; i++)
{
sb.append(command[i]);
}
propertyValue = sb.toString();
}
else
{
propertyValue = command[3];
}
Serializable serializableValue = convertValueFromSring(propertyValue);
QName valueTypeQName = getValueTypeQName(propertyValue);
fService.setStoreProperty(command[1], valueQName, new PropertyValue(valueTypeQName, serializableValue));
out.println("set property " + command[2] + " of " + command[1]);
}
else if (command[0].equals("setstorepermission"))
{
if (command.length != 4)
{
return "Syntax Error.";
}
fPermissionService.setPermission(
new StoreRef(StoreRef.PROTOCOL_AVM, command[1]), command[2], command[3], true);
}
else if (command[0].equals("clearstorepermission"))
{
if (command.length != 3)
{
return "Syntax Error.";
}
fPermissionService.clearPermission(
new StoreRef(StoreRef.PROTOCOL_AVM, command[1]), command[2]);
}
// unknown or invalid command specified
else else
{ {
return "Syntax Error."; return "Syntax Error.";
} }
out.flush(); out.flush();
String retVal = new String(bout.toByteArray()); String retVal = new String(bout.toByteArray());
out.close(); out.close();