mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-09-17 14:21:39 +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:
@@ -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++;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user