diff --git a/source/generated/org/alfresco/repo/webservice/accesscontrol/ACE.java b/source/generated/org/alfresco/repo/webservice/accesscontrol/ACE.java
index 3b94483fea..9672d1be87 100644
--- a/source/generated/org/alfresco/repo/webservice/accesscontrol/ACE.java
+++ b/source/generated/org/alfresco/repo/webservice/accesscontrol/ACE.java
@@ -10,7 +10,7 @@ package org.alfresco.repo.webservice.accesscontrol;
public class ACE implements java.io.Serializable {
private java.lang.String authority;
private java.lang.String permission;
- private boolean allow;
+ private org.alfresco.repo.webservice.accesscontrol.AccessStatus accessStatus;
public ACE() {
}
@@ -18,10 +18,10 @@ public class ACE implements java.io.Serializable {
public ACE(
java.lang.String authority,
java.lang.String permission,
- boolean allow) {
+ org.alfresco.repo.webservice.accesscontrol.AccessStatus accessStatus) {
this.authority = authority;
this.permission = permission;
- this.allow = allow;
+ this.accessStatus = accessStatus;
}
@@ -66,22 +66,22 @@ public class ACE implements java.io.Serializable {
/**
- * Gets the allow value for this ACE.
+ * Gets the accessStatus value for this ACE.
*
- * @return allow
+ * @return accessStatus
*/
- public boolean isAllow() {
- return allow;
+ public org.alfresco.repo.webservice.accesscontrol.AccessStatus getAccessStatus() {
+ return accessStatus;
}
/**
- * Sets the allow value for this ACE.
+ * Sets the accessStatus value for this ACE.
*
- * @param allow
+ * @param accessStatus
*/
- public void setAllow(boolean allow) {
- this.allow = allow;
+ public void setAccessStatus(org.alfresco.repo.webservice.accesscontrol.AccessStatus accessStatus) {
+ this.accessStatus = accessStatus;
}
private java.lang.Object __equalsCalc = null;
@@ -102,7 +102,9 @@ public class ACE implements java.io.Serializable {
((this.permission==null && other.getPermission()==null) ||
(this.permission!=null &&
this.permission.equals(other.getPermission()))) &&
- this.allow == other.isAllow();
+ ((this.accessStatus==null && other.getAccessStatus()==null) ||
+ (this.accessStatus!=null &&
+ this.accessStatus.equals(other.getAccessStatus())));
__equalsCalc = null;
return _equals;
}
@@ -120,7 +122,9 @@ public class ACE implements java.io.Serializable {
if (getPermission() != null) {
_hashCode += getPermission().hashCode();
}
- _hashCode += (isAllow() ? Boolean.TRUE : Boolean.FALSE).hashCode();
+ if (getAccessStatus() != null) {
+ _hashCode += getAccessStatus().hashCode();
+ }
__hashCodeCalc = false;
return _hashCode;
}
@@ -144,9 +148,9 @@ public class ACE implements java.io.Serializable {
elemField.setNillable(false);
typeDesc.addFieldDesc(elemField);
elemField = new org.apache.axis.description.ElementDesc();
- elemField.setFieldName("allow");
- elemField.setXmlName(new javax.xml.namespace.QName("http://www.alfresco.org/ws/service/accesscontrol/1.0", "allow"));
- elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "boolean"));
+ elemField.setFieldName("accessStatus");
+ elemField.setXmlName(new javax.xml.namespace.QName("http://www.alfresco.org/ws/service/accesscontrol/1.0", "accessStatus"));
+ elemField.setXmlType(new javax.xml.namespace.QName("http://www.alfresco.org/ws/service/accesscontrol/1.0", "AccessStatus"));
elemField.setNillable(false);
typeDesc.addFieldDesc(elemField);
}
diff --git a/source/generated/org/alfresco/repo/webservice/accesscontrol/AccessControlServiceSoapPort.java b/source/generated/org/alfresco/repo/webservice/accesscontrol/AccessControlServiceSoapPort.java
index aa92d6560a..0d3b69e7d2 100644
--- a/source/generated/org/alfresco/repo/webservice/accesscontrol/AccessControlServiceSoapPort.java
+++ b/source/generated/org/alfresco/repo/webservice/accesscontrol/AccessControlServiceSoapPort.java
@@ -32,13 +32,13 @@ public interface AccessControlServiceSoapPort extends java.rmi.Remote {
/**
* Gets a list of the settable permissions for a list of classes.
*/
- public org.alfresco.repo.webservice.accesscontrol.GetPermissionsResult[] getClassPermissions(java.lang.String[] classNames) throws java.rmi.RemoteException, org.alfresco.repo.webservice.accesscontrol.AccessControlFault;
+ public org.alfresco.repo.webservice.accesscontrol.GetClassPermissionsResult[] getClassPermissions(java.lang.String[] classNames) throws java.rmi.RemoteException, org.alfresco.repo.webservice.accesscontrol.AccessControlFault;
/**
* Determines whether the current authenticated user has the permissions
* on each of the specified references.
*/
- public org.alfresco.repo.webservice.accesscontrol.HasPermissionsResult hasPermissions(org.alfresco.repo.webservice.types.Predicate predicate, java.lang.String[] permissions) throws java.rmi.RemoteException, org.alfresco.repo.webservice.accesscontrol.AccessControlFault;
+ public org.alfresco.repo.webservice.accesscontrol.HasPermissionsResult[] hasPermissions(org.alfresco.repo.webservice.types.Predicate predicate, java.lang.String[] permissions) throws java.rmi.RemoteException, org.alfresco.repo.webservice.accesscontrol.AccessControlFault;
/**
* Set the inherit permission property of a set of references.
diff --git a/source/generated/org/alfresco/repo/webservice/accesscontrol/AccessState.java b/source/generated/org/alfresco/repo/webservice/accesscontrol/AccessStatus.java
similarity index 77%
rename from source/generated/org/alfresco/repo/webservice/accesscontrol/AccessState.java
rename to source/generated/org/alfresco/repo/webservice/accesscontrol/AccessStatus.java
index 05d6e0ef84..34f0b915c8 100644
--- a/source/generated/org/alfresco/repo/webservice/accesscontrol/AccessState.java
+++ b/source/generated/org/alfresco/repo/webservice/accesscontrol/AccessStatus.java
@@ -1,5 +1,5 @@
/**
- * AccessState.java
+ * AccessStatus.java
*
* This file was auto-generated from WSDL
* by the Apache Axis 1.2.1 Jun 14, 2005 (09:15:57 EDT) WSDL2Java emitter.
@@ -7,29 +7,29 @@
package org.alfresco.repo.webservice.accesscontrol;
-public class AccessState implements java.io.Serializable {
+public class AccessStatus implements java.io.Serializable {
private java.lang.String _value_;
private static java.util.HashMap _table_ = new java.util.HashMap();
// Constructor
- protected AccessState(java.lang.String value) {
+ protected AccessStatus(java.lang.String value) {
_value_ = value;
_table_.put(_value_,this);
}
public static final java.lang.String _acepted = "acepted";
public static final java.lang.String _declined = "declined";
- public static final AccessState acepted = new AccessState(_acepted);
- public static final AccessState declined = new AccessState(_declined);
+ public static final AccessStatus acepted = new AccessStatus(_acepted);
+ public static final AccessStatus declined = new AccessStatus(_declined);
public java.lang.String getValue() { return _value_;}
- public static AccessState fromValue(java.lang.String value)
+ public static AccessStatus fromValue(java.lang.String value)
throws java.lang.IllegalArgumentException {
- AccessState enumeration = (AccessState)
+ AccessStatus enumeration = (AccessStatus)
_table_.get(value);
if (enumeration==null) throw new java.lang.IllegalArgumentException();
return enumeration;
}
- public static AccessState fromString(java.lang.String value)
+ public static AccessStatus fromString(java.lang.String value)
throws java.lang.IllegalArgumentException {
return fromValue(value);
}
@@ -55,10 +55,10 @@ public class AccessState implements java.io.Serializable {
}
// Type metadata
private static org.apache.axis.description.TypeDesc typeDesc =
- new org.apache.axis.description.TypeDesc(AccessState.class);
+ new org.apache.axis.description.TypeDesc(AccessStatus.class);
static {
- typeDesc.setXmlType(new javax.xml.namespace.QName("http://www.alfresco.org/ws/service/accesscontrol/1.0", "AccessState"));
+ typeDesc.setXmlType(new javax.xml.namespace.QName("http://www.alfresco.org/ws/service/accesscontrol/1.0", "AccessStatus"));
}
/**
* Return type metadata object
diff --git a/source/generated/org/alfresco/repo/webservice/accesscontrol/GetClassPermissionsResult.java b/source/generated/org/alfresco/repo/webservice/accesscontrol/GetClassPermissionsResult.java
index b1cf50d50f..c4c2f39905 100644
--- a/source/generated/org/alfresco/repo/webservice/accesscontrol/GetClassPermissionsResult.java
+++ b/source/generated/org/alfresco/repo/webservice/accesscontrol/GetClassPermissionsResult.java
@@ -9,14 +9,14 @@ package org.alfresco.repo.webservice.accesscontrol;
public class GetClassPermissionsResult implements java.io.Serializable {
private java.lang.String className;
- private java.lang.String permissions;
+ private java.lang.String[] permissions;
public GetClassPermissionsResult() {
}
public GetClassPermissionsResult(
java.lang.String className,
- java.lang.String permissions) {
+ java.lang.String[] permissions) {
this.className = className;
this.permissions = permissions;
}
@@ -47,7 +47,7 @@ public class GetClassPermissionsResult implements java.io.Serializable {
*
* @return permissions
*/
- public java.lang.String getPermissions() {
+ public java.lang.String[] getPermissions() {
return permissions;
}
@@ -57,10 +57,18 @@ public class GetClassPermissionsResult implements java.io.Serializable {
*
* @param permissions
*/
- public void setPermissions(java.lang.String permissions) {
+ public void setPermissions(java.lang.String[] permissions) {
this.permissions = permissions;
}
+ public java.lang.String getPermissions(int i) {
+ return this.permissions[i];
+ }
+
+ public void setPermissions(int i, java.lang.String _value) {
+ this.permissions[i] = _value;
+ }
+
private java.lang.Object __equalsCalc = null;
public synchronized boolean equals(java.lang.Object obj) {
if (!(obj instanceof GetClassPermissionsResult)) return false;
@@ -78,7 +86,7 @@ public class GetClassPermissionsResult implements java.io.Serializable {
this.className.equals(other.getClassName()))) &&
((this.permissions==null && other.getPermissions()==null) ||
(this.permissions!=null &&
- this.permissions.equals(other.getPermissions())));
+ java.util.Arrays.equals(this.permissions, other.getPermissions())));
__equalsCalc = null;
return _equals;
}
@@ -94,7 +102,15 @@ public class GetClassPermissionsResult implements java.io.Serializable {
_hashCode += getClassName().hashCode();
}
if (getPermissions() != null) {
- _hashCode += getPermissions().hashCode();
+ for (int i=0;
+ i
-
+
@@ -216,6 +216,14 @@
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle=""
/>
+
-
()
+ {
+ public ACL[] doWork() throws Exception
+ {
+ return getACLsImpl(predicate, filter);
+ }
+ });
+ }
+ catch (Throwable exception)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", exception);
+ }
+
+ throw new ActionFault(0, exception.getMessage());
+ }
}
- public ACL[] addACEs(Predicate predicate, ACE[] aces) throws RemoteException, AccessControlFault
+ /**
+ * Get the ACL's for the predicate, filtered if appropraite.
+ *
+ * @param predicate the predicate
+ * @param filter the fileter (optional)
+ * @return an array of ACL's
+ */
+ private ACL[] getACLsImpl(Predicate predicate, ACE filter)
{
- // TODO Auto-generated method stub
- return null;
+ // Resolve the nodes
+ List nodes = Utils.resolvePredicate(predicate, this.nodeService, this.searchService, this.namespaceService);
+ ACL[] acls = new ACL[nodes.size()];
+
+ int index = 0;
+ for (NodeRef node : nodes)
+ {
+ // Create ACL of node
+ ACL acl = getACLFromNodeRef(node, filter);
+
+ // Add the acl to the results
+ acls[index] = acl;
+ index++;
+ }
+
+ return acls;
}
- public ACL[] removeACEs(Predicate predicate, ACE[] aces) throws RemoteException, AccessControlFault
+ /**
+ * Given a node reference, creates the relating ACL
+ *
+ * @param node the node reference
+ * @return the ACL
+ */
+ private ACL getACLFromNodeRef(NodeRef node, ACE filter)
{
- // TODO Auto-generated method stub
- return null;
+ // Create the acl
+ ACL acl = new ACL();
+ acl.setReference(Utils.convertToReference(node));
+
+ // Set the inhertied value
+ boolean inheritPermission = this.permissionService.getInheritParentPermissions(node);
+ acl.setInheritPermissions(inheritPermission);
+
+ // Get the access permissions
+ Set accessPermissions = this.permissionService.getAllSetPermissions(node);
+ ACE[] aces = new ACE[accessPermissions.size()];
+
+ // Marshal the permissions into ACE's
+ int count = 0;
+ for (AccessPermission permission : accessPermissions)
+ {
+ // TODO need to filter the results accordingly using ACE filter
+
+ // Create the ace
+ org.alfresco.repo.webservice.accesscontrol.AccessStatus accessStatus = org.alfresco.repo.webservice.accesscontrol.AccessStatus.declined;
+ if (AccessStatus.ALLOWED.equals(permission.getAccessStatus()) == true)
+ {
+ accessStatus = org.alfresco.repo.webservice.accesscontrol.AccessStatus.acepted;
+ }
+ ACE ace = new ACE(permission.getAuthority(),permission.getPermission(), accessStatus);
+
+ // Add ace to array
+ aces[count] = ace;
+ count ++;
+ }
+ acl.setAces(aces);
+ return acl;
}
- public GetPermissionsResult[] getPermissions(Predicate predicate) throws RemoteException, AccessControlFault
+ /**
+ * @see org.alfresco.repo.webservice.accesscontrol.AccessControlServiceSoapPort#addACEs(org.alfresco.repo.webservice.types.Predicate, org.alfresco.repo.webservice.accesscontrol.ACE[])
+ */
+ public ACL[] addACEs(final Predicate predicate, final ACE[] aces) throws RemoteException, AccessControlFault
{
- // TODO Auto-generated method stub
- return null;
+ try
+ {
+ return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
+ {
+ public ACL[] doWork() throws Exception
+ {
+ return addACEsImpl(predicate, aces);
+ }
+ });
+ }
+ catch (Throwable exception)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", exception);
+ }
+
+ throw new ActionFault(0, exception.getMessage());
+ }
}
- public GetPermissionsResult[] getClassPermissions(String[] classNames) throws RemoteException, AccessControlFault
+ /**
+ * Add ACE to a collection of nodes
+ *
+ * @param predicate the predicate
+ * @param aces the ACE's to add
+ * @return the ACL's of the modified node
+ */
+ private ACL[] addACEsImpl(Predicate predicate, ACE[] aces)
{
- // TODO Auto-generated method stub
- return null;
+ // Resolce the predicate
+ List nodes = Utils.resolvePredicate(predicate, this.nodeService, this.searchService, this.namespaceService);
+ ACL[] acls = new ACL[nodes.size()];
+
+ int count = 0;
+ for (NodeRef node : nodes)
+ {
+ // Add the permissions for each ace
+ for (ACE ace : aces)
+ {
+ // Add the permissions associated with the ace
+ boolean allow = false;
+ if (ace.getAccessStatus().equals(org.alfresco.repo.webservice.accesscontrol.AccessStatus.acepted) == true)
+ {
+ allow = true;
+ }
+ this.permissionService.setPermission(node, ace.getAuthority(), ace.getPermission(), allow);
+ }
+
+ // Add the ACL forthis node to the returned array
+ acls[count] = getACLFromNodeRef(node, null);
+ count++;
+ }
+
+ return acls;
}
- public HasPermissionsResult hasPermissions(Predicate predicate, String[] permissions) throws RemoteException, AccessControlFault
+ /**
+ * @see org.alfresco.repo.webservice.accesscontrol.AccessControlServiceSoapPort#removeACEs(org.alfresco.repo.webservice.types.Predicate, org.alfresco.repo.webservice.accesscontrol.ACE[])
+ */
+ public ACL[] removeACEs(final Predicate predicate, final ACE[] aces) throws RemoteException, AccessControlFault
{
- // TODO Auto-generated method stub
- return null;
+ try
+ {
+ return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
+ {
+ public ACL[] doWork() throws Exception
+ {
+ return removeACEsImpl(predicate, aces);
+ }
+ });
+ }
+ catch (Throwable exception)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", exception);
+ }
+
+ throw new ActionFault(0, exception.getMessage());
+ }
}
- public ACL[] setInheritPermission(Predicate predicate, boolean inheritPermission) throws RemoteException, AccessControlFault
+ /**
+ * Remove specified ACE's from the nodes. Removes all permissions if no ACE's specified.
+ *
+ * @param predicate the predicate
+ * @param aces the ACE's to remove
+ * @return the modified ACL's
+ */
+ private ACL[] removeACEsImpl(Predicate predicate, ACE[] aces)
{
- // TODO Auto-generated method stub
- return null;
+ // Resolce the predicate
+ List nodes = Utils.resolvePredicate(predicate, this.nodeService, this.searchService, this.namespaceService);
+ ACL[] acls = new ACL[nodes.size()];
+
+ int count = 0;
+ for (NodeRef node : nodes)
+ {
+ if (aces == null)
+ {
+ // Delete all the permissions
+ this.permissionService.deletePermissions(node);
+ }
+ else
+ {
+ // Delete the permissions for each ACE
+ for (ACE ace : aces)
+ {
+ boolean allow = false;
+ if (ace.getAccessStatus().equals(org.alfresco.repo.webservice.accesscontrol.AccessStatus.acepted) == true)
+ {
+ allow = true;
+ }
+ this.permissionService.deletePermission(node, ace.getAuthority(), ace.getPermission(), allow);
+ }
+ }
+
+ // Add the ACL forthis node to the returned array
+ acls[count] = getACLFromNodeRef(node, null);
+ count++;
+ }
+
+ return acls;
}
- public OwnerResult[] getOwners(Predicate predicate) throws RemoteException, AccessControlFault
+ /**
+ * @see org.alfresco.repo.webservice.accesscontrol.AccessControlServiceSoapPort#getPermissions(org.alfresco.repo.webservice.types.Predicate)
+ */
+ public GetPermissionsResult[] getPermissions(final Predicate predicate) throws RemoteException, AccessControlFault
{
- // TODO Auto-generated method stub
- return null;
+ try
+ {
+ return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
+ {
+ public GetPermissionsResult[] doWork() throws Exception
+ {
+ return getPermissionsImpl(predicate);
+ }
+ });
+ }
+ catch (Throwable exception)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", exception);
+ }
+
+ throw new ActionFault(0, exception.getMessage());
+ }
}
- public OwnerResult[] setOwners(Predicate predicate, String owner) throws RemoteException, AccessControlFault
+ /**
+ * Get the permissions
+ *
+ * @param predicate the predicate
+ * @return the permissions available
+ */
+ private GetPermissionsResult[] getPermissionsImpl(Predicate predicate)
{
- // TODO Auto-generated method stub
- return null;
+ // Resolve the predicate
+ List nodes = Utils.resolvePredicate(predicate, this.nodeService, this.searchService, this.namespaceService);
+ GetPermissionsResult[] results = new GetPermissionsResult[nodes.size()];
+
+ int count = 0;
+ for (NodeRef node : nodes)
+ {
+ // Get the permissions
+ Set permissions = this.permissionService.getSettablePermissions(node);
+
+ // Create the permissions result object
+ GetPermissionsResult result = new GetPermissionsResult();
+ result.setReference(Utils.convertToReference(node));
+ result.setPermissions((String[])permissions.toArray(new String[permissions.size()]));
+
+ // Add result to array
+ results[count] = result;
+ count ++;
+ }
+
+ return results;
}
+ /**
+ * @see org.alfresco.repo.webservice.accesscontrol.AccessControlServiceSoapPort#getClassPermissions(java.lang.String[])
+ */
+ public GetClassPermissionsResult[] getClassPermissions(final String[] classNames) throws RemoteException, AccessControlFault
+ {
+ try
+ {
+ return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
+ {
+ public GetClassPermissionsResult[] doWork() throws Exception
+ {
+ return getClassPermissionsImpl(classNames);
+ }
+ });
+ }
+ catch (Throwable exception)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", exception);
+ }
+
+ throw new ActionFault(0, exception.getMessage());
+ }
+ }
+
+ /**
+ * Get the permissions based on type
+ *
+ * @param classNames the class names
+ * @return the permission results
+ */
+ private GetClassPermissionsResult[] getClassPermissionsImpl(String[] classNames)
+ {
+ // Resolve the predicate
+ GetClassPermissionsResult[] results = new GetClassPermissionsResult[classNames.length];
+
+ int count = 0;
+ for (String className : classNames)
+ {
+ // Get the permissions
+ Set permissions = this.permissionService.getSettablePermissions(QName.createQName(className));
+
+ // Create the permissions result object
+ GetClassPermissionsResult result = new GetClassPermissionsResult();
+ result.setClassName(className);
+ result.setPermissions((String[])permissions.toArray(new String[permissions.size()]));
+
+ // Add result to array
+ results[count] = result;
+ count ++;
+ }
+
+ return results;
+ }
+
+ /**
+ * @see org.alfresco.repo.webservice.accesscontrol.AccessControlServiceSoapPort#hasPermissions(org.alfresco.repo.webservice.types.Predicate, java.lang.String[])
+ */
+ public HasPermissionsResult[] hasPermissions(final Predicate predicate, final String[] permissions) throws RemoteException, AccessControlFault
+ {
+ try
+ {
+ return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
+ {
+ public HasPermissionsResult[] doWork() throws Exception
+ {
+ return hasPermissionsImpl(predicate, permissions);
+ }
+ });
+ }
+ catch (Throwable exception)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", exception);
+ }
+
+ throw new ActionFault(0, exception.getMessage());
+ }
+ }
+
+ /**
+ * Determines whether a set of node has a given set of permissions.
+ *
+ * @param predicate the predicate
+ * @param permissions the permissions
+ * @return the permissions result
+ */
+ private HasPermissionsResult[] hasPermissionsImpl(Predicate predicate, String[] permissions)
+ {
+ // Resolve the predicate
+ List nodes = Utils.resolvePredicate(predicate, this.nodeService, this.searchService, this.namespaceService);
+ List results = new ArrayList(20);
+
+ for (NodeRef node : nodes)
+ {
+ for (String permission : permissions)
+ {
+ // Detemine whether the node has the permissions
+ AccessStatus accessStatus = this.permissionService.hasPermission(node, permission);
+ org.alfresco.repo.webservice.accesscontrol.AccessStatus accessState = org.alfresco.repo.webservice.accesscontrol.AccessStatus.declined;
+ if (AccessStatus.ALLOWED.equals(accessStatus) == true)
+ {
+ accessState = org.alfresco.repo.webservice.accesscontrol.AccessStatus.acepted;
+ }
+
+ // Add to the results list
+ results.add(new HasPermissionsResult(Utils.convertToReference(node), permission, accessState));
+ }
+ }
+
+ return (HasPermissionsResult[])results.toArray(new HasPermissionsResult[results.size()]);
+ }
+
+ /**
+ * @see org.alfresco.repo.webservice.accesscontrol.AccessControlServiceSoapPort#setInheritPermission(org.alfresco.repo.webservice.types.Predicate, boolean)
+ */
+ public ACL[] setInheritPermission(final Predicate predicate, final boolean inheritPermission) throws RemoteException, AccessControlFault
+ {
+ try
+ {
+ return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
+ {
+ public ACL[] doWork() throws Exception
+ {
+ return setInheritPermissionImpl(predicate, inheritPermission);
+ }
+ });
+ }
+ catch (Throwable exception)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", exception);
+ }
+
+ throw new ActionFault(0, exception.getMessage());
+ }
+ }
+
+ /**
+ * Set the inherit permissions flag
+ *
+ * @param predicate the predicate
+ * @param inheritPermission indicates whether the permissions are inherited or not
+ * @return the updated acl's
+ */
+ private ACL[] setInheritPermissionImpl(Predicate predicate, boolean inheritPermission)
+ {
+ // Resolve the predicate
+ List nodes = Utils.resolvePredicate(predicate, this.nodeService, this.searchService, this.namespaceService);
+ ACL[] acls = new ACL[nodes.size()];
+
+ int count = 0;
+ for (NodeRef node : nodes)
+ {
+ // Set the inherited permission value
+ this.permissionService.setInheritParentPermissions(node, inheritPermission);
+
+ // Add the ACL of the modified node to the result
+ acls[count] = getACLFromNodeRef(node, null);
+ count ++;
+ }
+
+ return acls;
+ }
+
+ /**
+ * @see org.alfresco.repo.webservice.accesscontrol.AccessControlServiceSoapPort#getOwners(org.alfresco.repo.webservice.types.Predicate)
+ */
+ public OwnerResult[] getOwners(final Predicate predicate) throws RemoteException, AccessControlFault
+ {
+ try
+ {
+ return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
+ {
+ public OwnerResult[] doWork() throws Exception
+ {
+ return getOwnersImpl(predicate);
+ }
+ });
+ }
+ catch (Throwable exception)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", exception);
+ }
+
+ throw new ActionFault(0, exception.getMessage());
+ }
+ }
+
+ /**
+ * Gets the owners of the nodes
+ *
+ * @param predicate the predicate
+ * @return the owner details
+ */
+ private OwnerResult[] getOwnersImpl(Predicate predicate)
+ {
+ // Convert predicate
+ List nodes = Utils.resolvePredicate(predicate, this.nodeService, this.searchService, this.namespaceService);
+ OwnerResult[] result = new OwnerResult[nodes.size()];
+
+ int count = 0;
+ for (NodeRef node : nodes)
+ {
+ // Get the current owner of the node
+ String owner = this.ownableService.getOwner(node);
+
+ // Marshal into result
+ result[count] = new OwnerResult(Utils.convertToReference(node), owner);
+ count ++;
+ }
+
+ return result;
+ }
+
+ /**
+ * @see org.alfresco.repo.webservice.accesscontrol.AccessControlServiceSoapPort#setOwners(org.alfresco.repo.webservice.types.Predicate, java.lang.String)
+ */
+ public OwnerResult[] setOwners(final Predicate predicate, final String owner) throws RemoteException, AccessControlFault
+ {
+ try
+ {
+ return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
+ {
+ public OwnerResult[] doWork() throws Exception
+ {
+ return setOwnersImpl(predicate, owner);
+ }
+ });
+ }
+ catch (Throwable exception)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", exception);
+ }
+
+ throw new ActionFault(0, exception.getMessage());
+ }
+ }
+
+ /**
+ * Set the owner of a nodes
+ *
+ * @param predicate the predicate
+ * @param owner the owner
+ * @return the owner results updated
+ */
+ private OwnerResult[] setOwnersImpl(Predicate predicate, String owner)
+ {
+ // Convert predicate
+ List nodes = Utils.resolvePredicate(predicate, this.nodeService, this.searchService, this.namespaceService);
+ OwnerResult[] result = new OwnerResult[nodes.size()];
+
+ int count = 0;
+ for (NodeRef node : nodes)
+ {
+ // Set the owner of the node
+ this.ownableService.setOwner(node, owner);
+
+ // Marshal into result
+ result[count] = new OwnerResult(Utils.convertToReference(node), owner);
+ count ++;
+ }
+
+ return result;
+ }
}
diff --git a/source/java/org/alfresco/repo/webservice/action/ActionWebService.java b/source/java/org/alfresco/repo/webservice/action/ActionWebService.java
index 15fc12641f..6c8b86282a 100644
--- a/source/java/org/alfresco/repo/webservice/action/ActionWebService.java
+++ b/source/java/org/alfresco/repo/webservice/action/ActionWebService.java
@@ -52,6 +52,8 @@ import org.alfresco.service.cmr.rule.Rule;
import org.alfresco.service.cmr.rule.RuleService;
import org.alfresco.service.cmr.rule.RuleType;
import org.alfresco.util.GUID;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
/**
* Action web service implementation
@@ -60,6 +62,9 @@ import org.alfresco.util.GUID;
*/
public class ActionWebService extends AbstractWebService implements ActionServiceSoapPort
{
+ /** Log */
+ private static Log logger = LogFactory.getLog(ActionWebService.class);
+
/** The action service */
private ActionService actionService;
@@ -118,13 +123,25 @@ public class ActionWebService extends AbstractWebService implements ActionServic
public ActionItemDefinition[] getConditionDefinitions() throws RemoteException,
ActionFault
{
- return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
+ try
{
- public ActionItemDefinition[] doWork() throws Exception
+ return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
{
- return getConditionDefintionsImpl();
+ public ActionItemDefinition[] doWork() throws Exception
+ {
+ return getConditionDefintionsImpl();
+ }
+ });
+ }
+ catch (Throwable exception)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", exception);
}
- });
+
+ throw new ActionFault(0, exception.getMessage());
+ }
}
/**
@@ -155,13 +172,25 @@ public class ActionWebService extends AbstractWebService implements ActionServic
public ActionItemDefinition[] getActionDefinitions() throws RemoteException,
ActionFault
{
- return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
+ try
{
- public ActionItemDefinition[] doWork() throws Exception
+ return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
{
- return getActionDefinitionsImpl();
+ public ActionItemDefinition[] doWork() throws Exception
+ {
+ return getActionDefinitionsImpl();
+ }
+ });
+ }
+ catch (Throwable exception)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", exception);
}
- });
+
+ throw new ActionFault(0, exception.getMessage());
+ }
}
/**
@@ -191,13 +220,25 @@ public class ActionWebService extends AbstractWebService implements ActionServic
*/
public ActionItemDefinition getActionItemDefinition(final String name, final ActionItemDefinitionType definitionType) throws RemoteException, ActionFault
{
- return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
+ try
{
- public ActionItemDefinition doWork() throws Exception
+ return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
{
- return getActionItemDefinitionImpl(name, definitionType);
+ public ActionItemDefinition doWork() throws Exception
+ {
+ return getActionItemDefinitionImpl(name, definitionType);
+ }
+ });
+ }
+ catch (Throwable exception)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", exception);
}
- });
+
+ throw new ActionFault(0, exception.getMessage());
+ }
}
/**
@@ -273,13 +314,25 @@ public class ActionWebService extends AbstractWebService implements ActionServic
*/
public org.alfresco.repo.webservice.action.RuleType[] getRuleTypes() throws RemoteException, ActionFault
{
- return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
+ try
{
- public org.alfresco.repo.webservice.action.RuleType[] doWork() throws Exception
+ return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
{
- return getRuleTypesImpl();
+ public org.alfresco.repo.webservice.action.RuleType[] doWork() throws Exception
+ {
+ return getRuleTypesImpl();
+ }
+ });
+ }
+ catch (Throwable exception)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", exception);
}
- });
+
+ throw new ActionFault(0, exception.getMessage());
+ }
}
public org.alfresco.repo.webservice.action.RuleType[] getRuleTypesImpl() throws RemoteException, ActionFault
@@ -307,13 +360,25 @@ public class ActionWebService extends AbstractWebService implements ActionServic
*/
public org.alfresco.repo.webservice.action.RuleType getRuleType(final String name) throws RemoteException, ActionFault
{
- return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
+ try
{
- public org.alfresco.repo.webservice.action.RuleType doWork() throws Exception
+ return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
{
- return getRuleTypeImpl(name);
+ public org.alfresco.repo.webservice.action.RuleType doWork() throws Exception
+ {
+ return getRuleTypeImpl(name);
+ }
+ });
+ }
+ catch (Throwable exception)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", exception);
}
- });
+
+ throw new ActionFault(0, exception.getMessage());
+ }
}
public org.alfresco.repo.webservice.action.RuleType getRuleTypeImpl(String name) throws RemoteException, ActionFault
@@ -334,13 +399,25 @@ public class ActionWebService extends AbstractWebService implements ActionServic
*/
public org.alfresco.repo.webservice.action.Action[] getActions(final Reference reference, final ActionFilter filter) throws RemoteException, ActionFault
{
- return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
+ try
{
- public org.alfresco.repo.webservice.action.Action[] doWork() throws Exception
+ return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
{
- return getActionsImpl(reference, filter);
+ public org.alfresco.repo.webservice.action.Action[] doWork() throws Exception
+ {
+ return getActionsImpl(reference, filter);
+ }
+ });
+ }
+ catch (Throwable exception)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", exception);
}
- });
+
+ throw new ActionFault(0, exception.getMessage());
+ }
}
private org.alfresco.repo.webservice.action.Action[] getActionsImpl(Reference reference, ActionFilter filter) throws RemoteException, ActionFault
@@ -486,15 +563,35 @@ public class ActionWebService extends AbstractWebService implements ActionServic
final Reference reference,
final org.alfresco.repo.webservice.action.Action[] webServiceActions) throws RemoteException, ActionFault
{
- return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
+ try
{
- public org.alfresco.repo.webservice.action.Action[] doWork() throws Exception
+ return TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork()
{
- return saveActionsImpl(reference, webServiceActions);
+ public org.alfresco.repo.webservice.action.Action[] doWork() throws Exception
+ {
+ return saveActionsImpl(reference, webServiceActions);
+ }
+ });
+ }
+ catch (Throwable exception)
+ {
+ if (logger.isDebugEnabled())
+ {
+ logger.error("Unexpected error occurred", exception);
}
- });
+
+ throw new ActionFault(0, exception.getMessage());
+ }
}
+ /**
+ *
+ * @param reference
+ * @param webServiceActions
+ * @return
+ * @throws RemoteException
+ * @throws ActionFault
+ */
private org.alfresco.repo.webservice.action.Action[] saveActionsImpl(
Reference reference,
org.alfresco.repo.webservice.action.Action[] webServiceActions) throws RemoteException, ActionFault
@@ -688,14 +785,26 @@ public class ActionWebService extends AbstractWebService implements ActionServic
public void removeActions(final Reference reference, final org.alfresco.repo.webservice.action.Action[] webServiceActions)
throws RemoteException, ActionFault
{
- TransactionUtil.executeInUserTransaction(this.transactionService, new TransactionWork
-
+
@@ -2535,6 +2535,14 @@
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
encodingStyle=""
/>
+
-
+
+
+
+
+
+
+
-
+
@@ -38,7 +45,7 @@
-
+
@@ -46,23 +53,16 @@
-
+
-
-
-
-
-
-
-
-
+
@@ -163,7 +163,7 @@
-
+
@@ -180,7 +180,7 @@
-
+