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:
@@ -10,6 +10,12 @@
|
|||||||
<property name="name">
|
<property name="name">
|
||||||
<value>node</value>
|
<value>node</value>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="issuerDAO">
|
||||||
|
<ref bean="issuerDAO"/>
|
||||||
|
</property>
|
||||||
|
<property name="issuerIDDAO">
|
||||||
|
<ref bean="issuerIDDAO"/>
|
||||||
|
</property>
|
||||||
<property name="transactionService">
|
<property name="transactionService">
|
||||||
<ref bean="transactionService"/>
|
<ref bean="transactionService"/>
|
||||||
</property>
|
</property>
|
||||||
@@ -19,6 +25,12 @@
|
|||||||
<property name="name">
|
<property name="name">
|
||||||
<value>layer</value>
|
<value>layer</value>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="issuerDAO">
|
||||||
|
<ref bean="issuerDAO"/>
|
||||||
|
</property>
|
||||||
|
<property name="issuerIDDAO">
|
||||||
|
<ref bean="issuerIDDAO"/>
|
||||||
|
</property>
|
||||||
<property name="transactionService">
|
<property name="transactionService">
|
||||||
<ref bean="transactionService"/>
|
<ref bean="transactionService"/>
|
||||||
</property>
|
</property>
|
||||||
@@ -26,6 +38,12 @@
|
|||||||
|
|
||||||
<!-- DAOs for persistent data types -->
|
<!-- DAOs for persistent data types -->
|
||||||
|
|
||||||
|
<bean id="issuerIDDAO" class="org.alfresco.repo.avm.hibernate.IssuerIDDAOHibernate">
|
||||||
|
<property name="sessionFactory">
|
||||||
|
<ref bean="sessionFactory"/>
|
||||||
|
</property>
|
||||||
|
</bean>
|
||||||
|
|
||||||
<!-- Issuers are not actual entities. More like pseudo entities. -->
|
<!-- Issuers are not actual entities. More like pseudo entities. -->
|
||||||
|
|
||||||
<bean id="issuerDAO" class="org.alfresco.repo.avm.hibernate.IssuerDAOHibernate">
|
<bean id="issuerDAO" class="org.alfresco.repo.avm.hibernate.IssuerDAOHibernate">
|
||||||
|
@@ -19,4 +19,4 @@ version.build=@build-number@
|
|||||||
|
|
||||||
# Schema number
|
# Schema number
|
||||||
|
|
||||||
version.schema=118
|
version.schema=119
|
||||||
|
@@ -89,7 +89,7 @@ public class AvmBootstrap extends AbstractLifecycleBean
|
|||||||
{
|
{
|
||||||
for (Issuer issuer : issuers)
|
for (Issuer issuer : issuers)
|
||||||
{
|
{
|
||||||
issuer.initialize();
|
issuer.init();
|
||||||
}
|
}
|
||||||
avmLockingAwareService.init();
|
avmLockingAwareService.init();
|
||||||
avmRepository.setPermissionService(permissionService);
|
avmRepository.setPermissionService(permissionService);
|
||||||
|
@@ -32,26 +32,78 @@ import org.alfresco.service.transaction.TransactionService;
|
|||||||
*/
|
*/
|
||||||
public class Issuer
|
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.
|
* The next number to issue.
|
||||||
*/
|
*/
|
||||||
private long fNext;
|
private long fNext;
|
||||||
|
|
||||||
|
private long fLast;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The name of this issuer.
|
* The name of this issuer.
|
||||||
*/
|
*/
|
||||||
private String fName;
|
private String fName;
|
||||||
|
|
||||||
/**
|
private IssuerIDDAO fIDDAO;
|
||||||
* The transaction service.
|
|
||||||
*/
|
private IssuerDAO fIssuerDAO;
|
||||||
private TransactionService fTransactionService;
|
|
||||||
|
private TransactionService fTxnService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default constructor.
|
* Default constructor.
|
||||||
*/
|
*/
|
||||||
public Issuer()
|
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;
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -63,47 +115,19 @@ public class Issuer
|
|||||||
fName = name;
|
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.
|
* Issue the next number.
|
||||||
* @return A serial number.
|
* @return A serial number.
|
||||||
*/
|
*/
|
||||||
public synchronized long issue()
|
public synchronized long issue()
|
||||||
{
|
{
|
||||||
|
if (fNext >= fLast)
|
||||||
return getNextId();
|
|
||||||
}
|
|
||||||
|
|
||||||
private long getNextId()
|
|
||||||
{
|
{
|
||||||
class TxnWork implements RetryingTransactionCallback<Long>
|
IssuerID isID = fIDDAO.get(fName);
|
||||||
{
|
fNext = isID.getNext();
|
||||||
public Long execute() throws Exception
|
fLast = fNext + BLOCK_SIZE;
|
||||||
{
|
isID.setNext(fLast);
|
||||||
return AVMDAOs.Instance().fIssuerDAO.getIssuerValue(fName);
|
}
|
||||||
}
|
return fNext++;
|
||||||
}
|
|
||||||
Long result = fTransactionService.getRetryingTransactionHelper().doInTransaction(new TxnWork(), true);
|
|
||||||
if (result == null)
|
|
||||||
{
|
|
||||||
fNext = 0L;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fNext = result + 1L;
|
|
||||||
}
|
|
||||||
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;
|
DeploymentReport report = null;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
// overwrite the password before logging
|
||||||
|
serverProps.put(WCMAppModel.PROP_DEPLOYSERVERPASSWORD, "*****");
|
||||||
|
|
||||||
// call the appropriate method to deploy
|
// call the appropriate method to deploy
|
||||||
if (fileServerDeployment)
|
if (fileServerDeployment)
|
||||||
{
|
{
|
||||||
|
@@ -240,6 +240,11 @@
|
|||||||
</composite-id>
|
</composite-id>
|
||||||
<property name="path" type="string" length="512" column="path"/>
|
<property name="path" type="string" length="512" column="path"/>
|
||||||
</class>
|
</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">
|
<query name="ChildEntry.DeleteByParent">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
delete ChildEntryImpl ce
|
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