From 8c434ca49676b524b24a02afef5298714ae9a6c4 Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Tue, 26 Feb 2008 15:28:17 +0000 Subject: [PATCH] Merged V2.2 to HEAD 7530: Merged V2.1 to V2.2 7378: Fix AR-1862: Failure to map Alfresco properties whose namespace prefix contains _ to jBPM variable 7379: Fixes to handling of invalid web script definitions on startup of server. Done previously 7379: HEAD rev 8343 (CHK-2418) 7380: Adds some evicts during snapshotting to reduce 1st level cache use for large snapshots. 7385: Fix for File Upload message XSS (or not) issue Outstanding 7391: Fix for AWC-1686 - WebClientPortletAuthenticator does not start usertxn when calling public services Outstanding 7394: AR-1875: New Edition on a multilingual document when a rule is present on the parent space 7396: Fix AR-1873: Add Location to webscript response status Done previously in HEAD rev 8344 (CHK-2419) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@8384 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../org/alfresco/repo/avm/AVMNodeDAO.java | 7 ++++ .../org/alfresco/repo/avm/AVMStoreImpl.java | 9 +++- .../alfresco/repo/avm/hibernate/AVM.hbm.xml | 41 +++++++++++-------- .../avm/hibernate/AVMNodeDAOHibernate.java | 13 ++++++ .../alfresco/repo/rule/RuleServiceImpl.java | 25 ++++++----- .../repo/workflow/jbpm/JBPMEngine.java | 9 +++- 6 files changed, 73 insertions(+), 31 deletions(-) diff --git a/source/java/org/alfresco/repo/avm/AVMNodeDAO.java b/source/java/org/alfresco/repo/avm/AVMNodeDAO.java index 07dc95b932..f4e12a6cfd 100644 --- a/source/java/org/alfresco/repo/avm/AVMNodeDAO.java +++ b/source/java/org/alfresco/repo/avm/AVMNodeDAO.java @@ -95,6 +95,13 @@ public interface AVMNodeDAO */ public List getNewInStore(AVMStore store); + /** + * Get the id's of all AVMNodes new in a given store. + * @param store + * @return + */ + public List getNewInStoreIDs(AVMStore store); + /** * Inappropriate hack to get Hibernate to play nice. */ diff --git a/source/java/org/alfresco/repo/avm/AVMStoreImpl.java b/source/java/org/alfresco/repo/avm/AVMStoreImpl.java index 84b6826b64..6e201914c4 100644 --- a/source/java/org/alfresco/repo/avm/AVMStoreImpl.java +++ b/source/java/org/alfresco/repo/avm/AVMStoreImpl.java @@ -247,10 +247,11 @@ public class AVMStoreImpl implements AVMStore, Serializable */ } // Clear out the new nodes. - List newInRep = AVMDAOs.Instance().fAVMNodeDAO.getNewInStore(this); + List newInRep = AVMDAOs.Instance().fAVMNodeDAO.getNewInStoreIDs(this); List layeredNodes = new ArrayList(); - for (AVMNode newGuy : newInRep) + for (Long newGuyID : newInRep) { + AVMNode newGuy = AVMDAOs.Instance().fAVMNodeDAO.getByID(newGuyID); newGuy.setStoreNew(null); Layered layered = null; if (newGuy.getType() == AVMNodeType.LAYERED_DIRECTORY && @@ -285,6 +286,10 @@ public class AVMStoreImpl implements AVMStore, Serializable layered.setIndirectionVersion(snapShotMap.get(storeName)); } } + else + { + AVMDAOs.Instance().fAVMNodeDAO.evict(newGuy); + } } // Make up a new version record. String user = RawServices.Instance().getAuthenticationComponent().getCurrentUserName(); diff --git a/source/java/org/alfresco/repo/avm/hibernate/AVM.hbm.xml b/source/java/org/alfresco/repo/avm/hibernate/AVM.hbm.xml index aa57cdbef4..ff4a20204a 100644 --- a/source/java/org/alfresco/repo/avm/hibernate/AVM.hbm.xml +++ b/source/java/org/alfresco/repo/avm/hibernate/AVM.hbm.xml @@ -10,22 +10,22 @@ - - - - - @@ -221,7 +221,7 @@ - + @@ -230,7 +230,7 @@ @@ -252,9 +252,16 @@ where an.storeNew = :store ]]> + + + @@ -295,10 +302,10 @@ @@ -311,5 +318,5 @@ where pfn.contentURL is not null ]]> - + diff --git a/source/java/org/alfresco/repo/avm/hibernate/AVMNodeDAOHibernate.java b/source/java/org/alfresco/repo/avm/hibernate/AVMNodeDAOHibernate.java index 0ba3699472..1e6ad46524 100644 --- a/source/java/org/alfresco/repo/avm/hibernate/AVMNodeDAOHibernate.java +++ b/source/java/org/alfresco/repo/avm/hibernate/AVMNodeDAOHibernate.java @@ -170,6 +170,17 @@ class AVMNodeDAOHibernate extends HibernateDaoSupport implements return (List)query.list(); } + /* (non-Javadoc) + * @see org.alfresco.repo.avm.AVMNodeDAO#getNewInStoreIDs(org.alfresco.repo.avm.AVMStore) + */ + @SuppressWarnings("unchecked") + public List getNewInStoreIDs(AVMStore store) + { + Query query = getSession().getNamedQuery("AVMNode.GetNewInStoreID"); + query.setEntity("store", store); + return (List)query.list(); + } + /** * Inappropriate hack to get Hibernate to play nice. */ @@ -218,5 +229,7 @@ class AVMNodeDAOHibernate extends HibernateDaoSupport implements */ public void evict(AVMNode node) { + getSession().flush(); + getSession().evict(node); } } diff --git a/source/java/org/alfresco/repo/rule/RuleServiceImpl.java b/source/java/org/alfresco/repo/rule/RuleServiceImpl.java index 67423f9569..d37c1713d6 100644 --- a/source/java/org/alfresco/repo/rule/RuleServiceImpl.java +++ b/source/java/org/alfresco/repo/rule/RuleServiceImpl.java @@ -987,22 +987,25 @@ public class RuleServiceImpl implements RuleService, RuntimeRuleService if (logger.isDebugEnabled() == true && copiedFrom != null) {logger.debug(" >> Got the copedFrom nodeRef (" + copiedFrom.getId() + ")");}; - if (copiedFrom != null && executedRules.contains(new ExecutedRuleData(copiedFrom, rule)) == true) + if (copiedFrom != null) { - if (logger.isDebugEnabled() == true) + if (executedRules.contains(new ExecutedRuleData(copiedFrom, rule)) == true) { - logger.debug(" >> Already executed this rule (" + rule.getTitle()+ ") on this the copied from nodeRef (" + copiedFrom.getId() + ")"); + if (logger.isDebugEnabled() == true) + { + logger.debug(" >> Already executed this rule (" + rule.getTitle()+ ") on this the copied from nodeRef (" + copiedFrom.getId() + ")"); + } + return false; } - return false; - } - else - { - if (logger.isDebugEnabled() == true) + else { - logger.debug(" >> Executed this rule (" + rule.getTitle()+ ") on (" + actionedUponNodeRef.getId() + ") copiedFrom is not is list"); - logger.debug(" > Checking copy"); + if (logger.isDebugEnabled() == true) + { + logger.debug(" >> Executed this rule (" + rule.getTitle()+ ") on (" + actionedUponNodeRef.getId() + ") copiedFrom is not is list"); + logger.debug(" > Checking copy"); + } + result = checkForCopy(executedRules, copiedFrom, rule); } - result = checkForCopy(executedRules, copiedFrom, rule); } } else diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java index 0243edae7d..a7fd4d3480 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java @@ -2557,7 +2557,8 @@ public class JBPMEngine extends BPMEngine private QName mapNameToQName(String name) { QName qname = null; - String qnameStr = name.replaceFirst("_", ":"); + // NOTE: Map names using old conversion scheme (i.e. : -> _) as well as new scheme (i.e. } -> _) + String qnameStr = (name.indexOf('}') == -1) ? name.replaceFirst("_", ":") : name.replace("}", ":"); try { qname = QName.createQName(qnameStr, this.namespaceService); @@ -2577,7 +2578,13 @@ public class JBPMEngine extends BPMEngine */ private String mapQNameToName(QName name) { + // NOTE: Map names using old conversion scheme (i.e. : -> _) as well as new scheme (i.e. } -> _) + // NOTE: Use new scheme String nameStr = name.toPrefixString(this.namespaceService); + if (nameStr.indexOf('_') != -1 && nameStr.indexOf('_') < nameStr.indexOf(':')) + { + return nameStr.replace(':', '}'); + } return nameStr.replace(':', '_'); }