mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Merged V2.2 to HEAD
7536: Encoded all outputted strings to avoid cross-site scripting issues Fixed potential issue where same id for a div could be used multiple times on one page 7537: Ensured no passwords are logged when deployment debug is turned on 7538: Fixed ordering of deployment attempts in 'more reports' panel 7539: Allocated test server is now released when a user sandbox is deleted 7540: Merged V2.1 to V2.2 7411: This makes issuers compatible with clustering without a huge performance drop 7547: AWC-1711 (contribution) - simple workflow actions are not displayed if the user does not have write permission 7548: Fixed IE scrolling issue when editing deployment server config 7551: Changed the way scrolling is done to support IE6 (for deployment server config editing) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@8414 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -89,7 +89,7 @@ public class AvmBootstrap extends AbstractLifecycleBean
|
||||
{
|
||||
for (Issuer issuer : issuers)
|
||||
{
|
||||
issuer.initialize();
|
||||
issuer.init();
|
||||
}
|
||||
avmLockingAwareService.init();
|
||||
avmRepository.setPermissionService(permissionService);
|
||||
|
@@ -32,28 +32,80 @@ import org.alfresco.service.transaction.TransactionService;
|
||||
*/
|
||||
public class Issuer
|
||||
{
|
||||
/**
|
||||
* How large a block of ids to grab at a time.
|
||||
*/
|
||||
private static final int BLOCK_SIZE = 100;
|
||||
|
||||
/**
|
||||
* The next number to issue.
|
||||
*/
|
||||
private long fNext;
|
||||
|
||||
|
||||
private long fLast;
|
||||
|
||||
/**
|
||||
* The name of this issuer.
|
||||
*/
|
||||
private String fName;
|
||||
|
||||
/**
|
||||
* The transaction service.
|
||||
*/
|
||||
private TransactionService fTransactionService;
|
||||
|
||||
|
||||
private IssuerIDDAO fIDDAO;
|
||||
|
||||
private IssuerDAO fIssuerDAO;
|
||||
|
||||
private TransactionService fTxnService;
|
||||
|
||||
/**
|
||||
* Default constructor.
|
||||
*/
|
||||
public Issuer()
|
||||
{
|
||||
fNext = 0;
|
||||
fLast = 0;
|
||||
}
|
||||
|
||||
|
||||
public void setIssuerIDDAO(IssuerIDDAO dao)
|
||||
{
|
||||
fIDDAO = dao;
|
||||
}
|
||||
|
||||
public void setIssuerDAO(IssuerDAO dao)
|
||||
{
|
||||
fIssuerDAO = dao;
|
||||
}
|
||||
|
||||
public void setTransactionService(TransactionService service)
|
||||
{
|
||||
fTxnService = service;
|
||||
}
|
||||
|
||||
public void init()
|
||||
{
|
||||
fTxnService.getRetryingTransactionHelper().doInTransaction(
|
||||
new RetryingTransactionCallback<Object>()
|
||||
{
|
||||
public Object execute()
|
||||
{
|
||||
IssuerID issuerID = fIDDAO.get(fName);
|
||||
if (issuerID == null)
|
||||
{
|
||||
Long id = fIssuerDAO.getIssuerValue(fName);
|
||||
if (id == null)
|
||||
{
|
||||
id = 0L;
|
||||
}
|
||||
else
|
||||
{
|
||||
id = id + 1L;
|
||||
}
|
||||
issuerID = new IssuerIDImpl(fName, id);
|
||||
fIDDAO.save(issuerID);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the name of this issuer. For Spring.
|
||||
* @param name The name to set.
|
||||
@@ -62,48 +114,20 @@ public class Issuer
|
||||
{
|
||||
fName = name;
|
||||
}
|
||||
|
||||
public void setTransactionService(TransactionService transactionService)
|
||||
{
|
||||
fTransactionService = transactionService;
|
||||
}
|
||||
|
||||
/**
|
||||
* After the database is up, get our value.
|
||||
*/
|
||||
public void initialize()
|
||||
{
|
||||
getNextId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Issue the next number.
|
||||
* @return A serial number.
|
||||
*/
|
||||
public synchronized long issue()
|
||||
{
|
||||
|
||||
return getNextId();
|
||||
}
|
||||
|
||||
private long getNextId()
|
||||
{
|
||||
class TxnWork implements RetryingTransactionCallback<Long>
|
||||
if (fNext >= fLast)
|
||||
{
|
||||
public Long execute() throws Exception
|
||||
{
|
||||
return AVMDAOs.Instance().fIssuerDAO.getIssuerValue(fName);
|
||||
}
|
||||
IssuerID isID = fIDDAO.get(fName);
|
||||
fNext = isID.getNext();
|
||||
fLast = fNext + BLOCK_SIZE;
|
||||
isID.setNext(fLast);
|
||||
}
|
||||
Long result = fTransactionService.getRetryingTransactionHelper().doInTransaction(new TxnWork(), true);
|
||||
if (result == null)
|
||||
{
|
||||
fNext = 0L;
|
||||
}
|
||||
else
|
||||
{
|
||||
fNext = result + 1L;
|
||||
}
|
||||
return fNext;
|
||||
return fNext++;
|
||||
}
|
||||
}
|
||||
|
29
source/java/org/alfresco/repo/avm/IssuerID.java
Normal file
29
source/java/org/alfresco/repo/avm/IssuerID.java
Normal file
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package org.alfresco.repo.avm;
|
||||
|
||||
/**
|
||||
* Trivial interface for accessing issuer ids.
|
||||
* @author britt
|
||||
*/
|
||||
public interface IssuerID
|
||||
{
|
||||
/**
|
||||
* Get the name of the issuer.
|
||||
* @return
|
||||
*/
|
||||
public String getIssuer();
|
||||
|
||||
/**
|
||||
* Get the highest id.
|
||||
* @return
|
||||
*/
|
||||
public long getNext();
|
||||
|
||||
/**
|
||||
* Set the next id to be issued.
|
||||
* @param next The next id to be issued.
|
||||
*/
|
||||
public void setNext(long next);
|
||||
}
|
24
source/java/org/alfresco/repo/avm/IssuerIDDAO.java
Normal file
24
source/java/org/alfresco/repo/avm/IssuerIDDAO.java
Normal file
@@ -0,0 +1,24 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package org.alfresco.repo.avm;
|
||||
|
||||
/**
|
||||
* DAO interface for IssuerIDs.
|
||||
* @author britt
|
||||
*/
|
||||
public interface IssuerIDDAO
|
||||
{
|
||||
/**
|
||||
* Get one by name (primary key).
|
||||
* @param name
|
||||
* @return
|
||||
*/
|
||||
public IssuerID get(String name);
|
||||
|
||||
/**
|
||||
* Save one.
|
||||
* @param issuerID
|
||||
*/
|
||||
public void save(IssuerID issuerID);
|
||||
}
|
66
source/java/org/alfresco/repo/avm/IssuerIDImpl.java
Normal file
66
source/java/org/alfresco/repo/avm/IssuerIDImpl.java
Normal file
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package org.alfresco.repo.avm;
|
||||
|
||||
/**
|
||||
* Bean for issuer id tracking.
|
||||
* @author britt
|
||||
*/
|
||||
public class IssuerIDImpl implements IssuerID
|
||||
{
|
||||
private String fIssuer;
|
||||
|
||||
private long fNext;
|
||||
|
||||
private long fVersion;
|
||||
|
||||
public IssuerIDImpl()
|
||||
{
|
||||
}
|
||||
|
||||
public IssuerIDImpl(String issuer, long next)
|
||||
{
|
||||
fIssuer = issuer;
|
||||
fNext = next;
|
||||
}
|
||||
|
||||
public void setVersion(long version)
|
||||
{
|
||||
fVersion = version;
|
||||
}
|
||||
|
||||
public long getVersion()
|
||||
{
|
||||
return fVersion;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.repo.avm.IssuerID#getIssuer()
|
||||
*/
|
||||
public String getIssuer()
|
||||
{
|
||||
return fIssuer;
|
||||
}
|
||||
|
||||
public void setIssuer(String issuer)
|
||||
{
|
||||
fIssuer = issuer;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.repo.avm.IssuerID#getNext()
|
||||
*/
|
||||
public long getNext()
|
||||
{
|
||||
return fNext;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.repo.avm.IssuerID#setNext(long)
|
||||
*/
|
||||
public void setNext(long next)
|
||||
{
|
||||
fNext = next;
|
||||
}
|
||||
}
|
@@ -374,6 +374,9 @@ public class AVMDeployWebsiteAction extends ActionExecuterAbstractBase
|
||||
DeploymentReport report = null;
|
||||
try
|
||||
{
|
||||
// overwrite the password before logging
|
||||
serverProps.put(WCMAppModel.PROP_DEPLOYSERVERPASSWORD, "*****");
|
||||
|
||||
// call the appropriate method to deploy
|
||||
if (fileServerDeployment)
|
||||
{
|
||||
|
@@ -240,6 +240,11 @@
|
||||
</composite-id>
|
||||
<property name="path" type="string" length="512" column="path"/>
|
||||
</class>
|
||||
<class name="IssuerIDImpl" proxy="IssuerID" table="avm_issuer_ids" optimistic-lock="version" lazy="false">
|
||||
<id name="issuer" type="string" length="32" column="issuer"/>
|
||||
<version name="version" column="version" type="long"/>
|
||||
<property name="next" type="long" column="next" not-null="true"/>
|
||||
</class>
|
||||
<query name="ChildEntry.DeleteByParent">
|
||||
<![CDATA[
|
||||
delete ChildEntryImpl ce
|
||||
|
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
*
|
||||
*/
|
||||
package org.alfresco.repo.avm.hibernate;
|
||||
|
||||
import org.alfresco.repo.avm.IssuerID;
|
||||
import org.alfresco.repo.avm.IssuerIDDAO;
|
||||
import org.alfresco.repo.avm.IssuerIDImpl;
|
||||
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
|
||||
|
||||
/**
|
||||
* Hibernate implementation of IssuerIDDAO
|
||||
* @author britt
|
||||
*/
|
||||
public class IssuerIDDAOHibernate extends HibernateDaoSupport implements IssuerIDDAO
|
||||
{
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.repo.avm.IssuerIDDAO#get(java.lang.String)
|
||||
*/
|
||||
public IssuerID get(String name)
|
||||
{
|
||||
return (IssuerID)getSession().get(IssuerIDImpl.class, name);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.repo.avm.IssuerIDDAO#save(org.alfresco.repo.avm.IssuerID)
|
||||
*/
|
||||
public void save(IssuerID issuerID)
|
||||
{
|
||||
getSession().save(issuerID);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user