Taught AVM to be aware of the current user for tracking creator,

modifier, etc. AVM nodes can have ACLs. Not used for anything yet.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3657 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Britt Park
2006-09-01 20:56:11 +00:00
parent 8a8511c605
commit 5136c45e34
7 changed files with 64 additions and 28 deletions

View File

@@ -973,7 +973,7 @@
<!-- The AVMService --> <!-- The AVMService -->
<bean id="AVMService" class="org.alfresco.repo.avm.AVMServiceImpl" init-method="init"> <bean id="AVMService" class="org.alfresco.repo.avm.AVMServiceImpl">
<property name="retryingTransaction"> <property name="retryingTransaction">
<ref bean="retryingTransaction"/> <ref bean="retryingTransaction"/>
</property> </property>

View File

@@ -4,6 +4,7 @@
package org.alfresco.repo.avm; package org.alfresco.repo.avm;
import org.alfresco.repo.content.ContentStore; import org.alfresco.repo.content.ContentStore;
import org.alfresco.repo.security.authentication.AuthenticationComponent;
import org.alfresco.service.cmr.dictionary.DictionaryService; import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.repository.ContentService; import org.alfresco.service.cmr.repository.ContentService;
import org.alfresco.service.cmr.repository.MimetypeService; import org.alfresco.service.cmr.repository.MimetypeService;
@@ -119,7 +120,7 @@ public class AVMContext implements ApplicationContextAware
*/ */
private NodeService fNodeService; private NodeService fNodeService;
private AuthenticationService fAuthenticationService; private AuthenticationComponent fAuthenticationComponent;
/** /**
* The application context. * The application context.
@@ -297,12 +298,12 @@ public class AVMContext implements ApplicationContextAware
return fNodeService; return fNodeService;
} }
public AuthenticationService getAuthenticationService() public AuthenticationComponent getAuthenticationComponent()
{ {
if (fAuthenticationService == null) if (fAuthenticationComponent == null)
{ {
fAuthenticationService = (AuthenticationService)fAppContext.getBean("AuthenticationService"); fAuthenticationComponent = (AuthenticationComponent)fAppContext.getBean("authenticationComponent");
} }
return fAuthenticationService; return fAuthenticationComponent;
} }
} }

View File

@@ -18,6 +18,7 @@ package org.alfresco.repo.avm;
import java.util.Map; import java.util.Map;
import org.alfresco.repo.domain.DbAccessControlList;
import org.alfresco.repo.domain.PropertyValue; import org.alfresco.repo.domain.PropertyValue;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
@@ -171,4 +172,16 @@ interface AVMNode
* Delete all properties from this node. * Delete all properties from this node.
*/ */
public void deleteProperties(); public void deleteProperties();
/**
* Set an ACL on this node.
* @param acl The ACL to set.
*/
public void setAcl(DbAccessControlList acl);
/**
* Get the ACL on this node.
* @return The ACL on this node.
*/
public DbAccessControlList getAcl();
} }

View File

@@ -22,6 +22,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.alfresco.repo.domain.DbAccessControlList;
import org.alfresco.repo.domain.PropertyValue; import org.alfresco.repo.domain.PropertyValue;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
@@ -56,6 +57,11 @@ abstract class AVMNodeImpl implements AVMNode, Serializable
*/ */
private boolean fIsRoot; private boolean fIsRoot;
/**
* The ACL on this node.
*/
private DbAccessControlList fACL;
/** /**
* Default constructor. * Default constructor.
*/ */
@@ -75,9 +81,15 @@ abstract class AVMNodeImpl implements AVMNode, Serializable
fVersionID = -1; fVersionID = -1;
fIsRoot = false; fIsRoot = false;
long time = System.currentTimeMillis(); long time = System.currentTimeMillis();
fBasicAttributes = new BasicAttributesImpl("britt", String user =
"britt", AVMContext.fgInstance.getAuthenticationComponent().getCurrentUserName();
"britt", if (user == null)
{
user = AVMContext.fgInstance.getAuthenticationComponent().getSystemUserName();
}
fBasicAttributes = new BasicAttributesImpl(user,
user,
user,
time, time,
time, time,
time); time);
@@ -265,7 +277,14 @@ abstract class AVMNodeImpl implements AVMNode, Serializable
*/ */
public void updateModTime() public void updateModTime()
{ {
String user =
AVMContext.fgInstance.getAuthenticationComponent().getCurrentUserName();
if (user == null)
{
user = AVMContext.fgInstance.getAuthenticationComponent().getSystemUserName();
}
fBasicAttributes.setModDate(System.currentTimeMillis()); fBasicAttributes.setModDate(System.currentTimeMillis());
fBasicAttributes.setLastModifier(user);
} }
/** /**
@@ -364,4 +383,22 @@ abstract class AVMNodeImpl implements AVMNode, Serializable
{ {
AVMContext.fgInstance.fAVMNodePropertyDAO.deleteAll(this); AVMContext.fgInstance.fAVMNodePropertyDAO.deleteAll(this);
} }
/**
* Set the ACL on this node.
* @param acl The ACL to set.
*/
public void setAcl(DbAccessControlList acl)
{
fACL = acl;
}
/**
* Get the ACL on this node.
* @return The ACL on this node.
*/
public DbAccessControlList getAcl()
{
return fACL;
}
} }

View File

@@ -59,23 +59,6 @@ public class AVMServiceImpl implements AVMService
{ {
} }
/**
* Final initialization of the service. Must be called only on a
* fully initialized instance.
*/
public void init()
{
try
{
createAVMStore("main");
fgLogger.info("Created new main AVMStore");
}
catch (AVMExistsException e)
{
fgLogger.info("AVMStore main already exists");
}
}
/** /**
* Set the Retrying Transaction wrapper. * Set the Retrying Transaction wrapper.
* @param txn * @param txn

View File

@@ -19,7 +19,6 @@ package org.alfresco.repo.avm;
import java.io.IOException; import java.io.IOException;
import java.io.PrintStream; import java.io.PrintStream;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -69,6 +68,7 @@ public class AVMServiceTestBase extends TestCase
fService = (AVMService)fContext.getBean("AVMService"); fService = (AVMService)fContext.getBean("AVMService");
fReaper = (OrphanReaper)fContext.getBean("orphanReaper"); fReaper = (OrphanReaper)fContext.getBean("orphanReaper");
} }
fService.createAVMStore("main");
fStartTime = System.currentTimeMillis(); fStartTime = System.currentTimeMillis();
} }
@@ -86,7 +86,6 @@ public class AVMServiceTestBase extends TestCase
{ {
fService.purgeAVMStore(desc.getName()); fService.purgeAVMStore(desc.getName());
} }
fService.createAVMStore("main");
// fContext.close(); // fContext.close();
// File alfData = new File("alf_data"); // File alfData = new File("alf_data");
// File target = new File("alf_data" + now); // File target = new File("alf_data" + now);

View File

@@ -41,6 +41,9 @@
<property name="accessDate" type="long" not-null="true"/> <property name="accessDate" type="long" not-null="true"/>
</component> </component>
<property name="isRoot" column="is_root" type="boolean"/> <property name="isRoot" column="is_root" type="boolean"/>
<!-- ACL -->
<many-to-one name="acl" column="acl_id"
class="org.alfresco.repo.domain.hibernate.DbAccessControlListImpl"/>
<!-- Directories, two flavors. --> <!-- Directories, two flavors. -->
<subclass name="DirectoryNodeImpl" <subclass name="DirectoryNodeImpl"
proxy="DirectoryNode" proxy="DirectoryNode"