Yet another merge from head to WCM-DEV2.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3774 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Britt Park
2006-09-12 18:55:07 +00:00
parent e459c188f6
commit 39a18df7f2
65 changed files with 11344 additions and 8063 deletions

View File

@@ -0,0 +1,202 @@
/*
* Copyright (C) 2005 Alfresco, Inc.
*
* Licensed under the Mozilla Public License version 1.1
* with a permitted attribution clause. You may obtain a
* copy of the License at
*
* http://www.alfresco.org/legal/license.txt
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific
* language governing permissions and limitations under the
* License.
*/
package org.alfresco.service.cmr.audit;
import java.io.Serializable;
import java.net.InetAddress;
import java.util.Date;
import java.util.Map;
import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.namespace.QName;
/**
* A single entry in an audit trail
*
* @author Andy Hind
*/
public interface AuditInfo
{
/**
* The identifier for the application that performed the audit. Method interceptors around public services will use the string 'SystemMethodInterceptor'.
*
* @return - the application (may not be null).
*/
public String getAuditApplication();
/**
* The name of the method executed on a public service.
*
* @return - the method name - this may be null for external audit entries.
*/
public String getAuditMethod();
/**
* The public service on which a method was invoked.
*
* @return - the service name - this may be null for external audit entries.
*/
public String getAuditService();
/**
* The address for the client. (This will be null in version 1.4)
*
* @return - the client address - may be null.
*/
public String getClientAddress();
/**
* The timestamp for the audit entry.
*
* @return
*/
public Date getDate();
/**
* Is this entry recording an error?
*
* @return
*/
public boolean isFail();
/**
* Was this audit entry subject to filtering (which must have been met if an entry is found). Filters are not applied in version 1.4.
*
* @return
*/
public boolean isFiltered();
/**
* Get the host address of the server machine.
*
* @return
*/
public String getHostAddress();
/**
* Get the ID of the key node.
*
* @return - the id of the key node - this may be null if there is no key or the key is not a node ref.
*/
public String getKeyGUID();
/**
* The serialized properties on the key node, if one exists, after the method invocation. Note these values are serialized before the method is called so they are unaffected by
* the method invocation. In V1.4 these are not stored.
*
* @return
*/
public Map<QName, Serializable> getKeyPropertiesAfter();
/**
* The serialized properties on the key node, if one exists, before the method invocation. In V1.4 these are not stored.
*
* @return
*/
public Map<QName, Serializable> getKeyPropertiesBefore();
/**
* The store ref for the key.
*
* @return - the store ref - this may be null if there is no key.
*/
public StoreRef getKeyStore();
/**
* The message entered for application audit entries.
*
* @return - the audit message. This may be null, and will be null for audit entries generated from method invocations.
*/
public String getMessage();
/**
* Get the serailized mehod arguments.
*
* These are not stored in V1.4.
*
* @return
*/
public Serializable[] getMethodArguments();
/**
* Get the method arguments as strings.
*
* @return
*/
public String[] getMethodArgumentsAsStrings();
/**
* Get the path to the key node, if one exists.
*
* @return - the path or null.
*/
public String getPath();
/**
* The serialized value of the return object.
*
* This is not available in V1.4.
*
* @return
*/
public Serializable getReturnObject();
/**
* Get the return object string value.
*
* @return - the string value of the return object. May be null if the method is of type void or returns null.
*/
public String getReturnObjectAsString();
/**
* Get the session id.
*
* This is not stored in V1.4.
*
* @return
*/
public String getSessionId();
/**
* Get the deserialized error, if one occurred.
*
* @return the throwable or null.
*/
public Throwable getThrowable();
/**
* In 1.4, get the error message (no stack trace).
*
* @return - the error message
*/
public String getThrowableAsString();
/**
* Get the transaction id which caused the audit.
*
* @return the Tx id (not null).
*/
public String getTxId();
/**
* Get the name of the user who caused the audit entry.
*
* @return - the user name / user authority (not null)
*/
public String getUserIdentifier();
}

View File

@@ -16,6 +16,9 @@
*/
package org.alfresco.service.cmr.audit;
import java.util.List;
import org.alfresco.repo.audit.AuditState;
import org.alfresco.service.NotAuditable;
import org.alfresco.service.PublicService;
import org.alfresco.service.cmr.repository.NodeRef;
@@ -81,5 +84,14 @@ public interface AuditService
*/
@NotAuditable
public void audit(String source, String description, NodeRef key, Object... args);
/**
* Get the audit trail for a node ref.
*
* @param nodeRef - the node ref for which to get the audit trail.
* @return - tha audit trail
*/
@NotAuditable
public List<AuditInfo> getAuditTrail(NodeRef nodeRef);
}

View File

@@ -59,6 +59,11 @@ public interface CopyService
* not copied.
* <p>
* Source association are not copied.
* <p>
* <b>NOTE:</b> The top-level node has it's <b>cm:name</b> property removed for
* associations that do not allow duplicately named children in order
* to prevent any chance of a duplicate name clash. Reassign the
* <b>cm:name</b> property and catch the {@link DuplicateChildNodeNameException}.
*
* @param sourceNodeRef the node reference used as the source of the copy
* @param destinationParent the intended parent of the new node

View File

@@ -34,6 +34,7 @@ import org.alfresco.repo.template.NodeSearchResultsMap;
import org.alfresco.repo.template.SavedSearchResultsMap;
import org.alfresco.repo.template.XPathResultsMap;
import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.audit.AuditInfo;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.lock.LockStatus;
import org.alfresco.service.cmr.security.AccessPermission;
@@ -495,7 +496,7 @@ public final class TemplateNode implements Serializable
}
/**
* @return Display path to this node
* @return Display path to this node - the path built of 'cm:name' attribute values.
*/
public String getDisplayPath()
{
@@ -514,6 +515,14 @@ public final class TemplateNode implements Serializable
return displayPath;
}
/**
* @return QName path to this node. This can be used for Lucene PATH: style queries
*/
public String getQnamePath()
{
return this.services.getNodeService().getPath(this.nodeRef).toPrefixString(this.services.getNamespaceService());
}
/**
* @return the small icon image for this node
*/
@@ -652,6 +661,14 @@ public final class TemplateNode implements Serializable
}
// Audit API
public List<AuditInfo> getAuditTrail()
{
return this.services.getAuditService().getAuditTrail(this.nodeRef);
}
// ------------------------------------------------------------------------------
// Misc helpers

View File

@@ -21,6 +21,7 @@ import java.util.Map;
import java.util.Set;
import org.alfresco.service.Auditable;
import org.alfresco.service.NotAuditable;
import org.alfresco.service.PublicService;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.namespace.QName;
@@ -171,7 +172,7 @@ public interface PersonService
* @param caseSensitiveUserName
* @return
*/
@NotAuditable
public String getUserIdentifier(String caseSensitiveUserName);
}

View File

@@ -111,6 +111,7 @@ public interface WorkflowService
* @param workflowName workflow name e.g. jbpm://review
* @return the deployed workflow definition
*/
@Auditable(parameters = {"workflowName"})
public WorkflowDefinition getDefinitionByName(String workflowName);