package org.alfresco.repo.virtual; import java.io.InputStream; import java.io.Serializable; import java.util.List; import java.util.Map; import java.util.Set; import org.alfresco.service.cmr.dictionary.InvalidAspectException; import org.alfresco.service.cmr.dictionary.InvalidTypeException; import org.alfresco.service.cmr.model.FileExistsException; import org.alfresco.service.cmr.model.FileInfo; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.ContentWriter; import org.alfresco.service.cmr.repository.InvalidNodeRefException; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.Path; import org.alfresco.service.cmr.search.ResultSet; import org.alfresco.service.cmr.search.SearchParameters; import org.alfresco.service.namespace.NamespacePrefixResolver; import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QNamePattern; /** * Dependency inversion facade of the Alfresco repository environment. It offers * an interface to Alfresco repository capabilities needed for virtualization. * Implementors should consider loose repository beans coupling when * implementing the environment operations. * * @author Bogdan Horje */ public interface ActualEnvironment { QName getType(NodeRef nodeRef); boolean isSubClass(QName className, QName ofClassName); NodeRef getTargetAssocs(NodeRef nodeRef, QName aspectTypeQName); Serializable getProperty(NodeRef nodeRef, QName qname) throws ActualEnvironmentException; Map getProperties(NodeRef nodeRef); boolean hasAspect(NodeRef nodeRef, QName aspectTypeQName); Set getAspects(NodeRef nodeRef); String getCurrentUser(); Path getPath(NodeRef nodeRef); ChildAssociationRef getPrimaryParent(NodeRef nodeRef); List getChildAssocs(NodeRef nodeRef, QNamePattern typeQNamePattern, QNamePattern qnamePattern, int maxResults, boolean preload) throws InvalidNodeRefException; NodeRef getChildByName(NodeRef nodeRef, QName assocTypeQName, String childName); NamespacePrefixResolver getNamespacePrefixResolver(); InputStream openContentStream(NodeRef nodeRef) throws ActualEnvironmentException; InputStream openContentStream(String classpath) throws ActualEnvironmentException; ResultSet query(SearchParameters searchParameters); Object executeScript(String classpath, Map model) throws ActualEnvironmentException; Object executeScript(NodeRef templateNodeRef, Map model) throws ActualEnvironmentException; Object createScriptVirtualContext(VirtualContext context) throws ActualEnvironmentException; NodeRef findNodeRef(String referenceType, String[] reference); NodeRef findQNamePath(String[] patheElements); boolean exists(NodeRef nodeRef); boolean exists(String classpath); void delete(NodeRef nodeRef); FileInfo create(NodeRef parentNodeRef, String name, QName typeQName) throws FileExistsException; ContentWriter getWriter(NodeRef nodeRef, QName propertyQName, boolean update) throws InvalidNodeRefException, InvalidTypeException; void addAspect(NodeRef nodeRef, QName aspectTypeQName, Map aspectProperties) throws InvalidNodeRefException, InvalidAspectException; boolean hasPermission(NodeRef nodeRef, String perm); }