mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-06-02 17:35:18 +00:00
Schema has been updated, DAO written, garbage collection updated to clean out aspects. Also some seemingly unnecessary changes in visibility declarations to deal with strange intermittent Spring wiring failures in one of my tests. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3560 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
101 lines
2.2 KiB
Java
101 lines
2.2 KiB
Java
/*
|
|
* Copyright (C) 2006 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.repo.avm;
|
|
|
|
/**
|
|
* This is a helper class that knows how to issue identifiers.
|
|
* @author britt
|
|
*/
|
|
public class Issuer
|
|
{
|
|
/**
|
|
* The next number to issue.
|
|
*/
|
|
private long fNext;
|
|
|
|
/**
|
|
* The name of this issuer.
|
|
*/
|
|
private String fName;
|
|
|
|
/**
|
|
* The transactional wrapper.
|
|
*/
|
|
private RetryingTransactionHelper fTransaction;
|
|
|
|
/**
|
|
* Default constructor.
|
|
*/
|
|
public Issuer()
|
|
{
|
|
}
|
|
|
|
/**
|
|
* Set the name of this issuer. For Spring.
|
|
* @param name The name to set.
|
|
*/
|
|
public void setName(String name)
|
|
{
|
|
fName = name;
|
|
}
|
|
|
|
/**
|
|
* Set the transactional wrapper.
|
|
* @param retryingTransaction The transactional wrapper.
|
|
*/
|
|
public void setRetryingTransaction(RetryingTransactionHelper retryingTransaction)
|
|
{
|
|
fTransaction = retryingTransaction;
|
|
}
|
|
|
|
/**
|
|
* After the database is up, get our value.
|
|
*/
|
|
public void init()
|
|
{
|
|
class TxnCallback implements RetryingTransactionCallback
|
|
{
|
|
public Long value;
|
|
|
|
public void perform()
|
|
{
|
|
value = AVMContext.fgInstance.fIssuerDAO.getIssuerValue(fName);
|
|
}
|
|
};
|
|
TxnCallback doit = new TxnCallback();
|
|
fTransaction.perform(doit, false);
|
|
if (doit.value == null)
|
|
{
|
|
fNext = 0L;
|
|
}
|
|
else
|
|
{
|
|
fNext = doit.value + 1;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Issue the next number.
|
|
* @return A serial number.
|
|
*/
|
|
public synchronized long issue()
|
|
{
|
|
return fNext++;
|
|
}
|
|
}
|