mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Merged V2.1 to HEAD
6580: AVM bulk import performance tweaks. 6582: WCM-767, WCM-768 6583: Fix for AWC-1528 (potential NPE in ErrorsRenderer) 6584: Fix for AWC-1256 (Links produced by inline HTML editor are incorrect) 6585: AR-1635: event listeners added in a beforeCommit event are now executed successfully 6586: AR-1561 Update Web Scripts readme.html to be consistent with "Category Search Sample" (or vice-versa) 6587: Fix for AWC-1390 (Paste all doesn't work for forum items) 6588: AR-1701 Script getDocument call doesn't check for non-existent content 6589: Fix for AWC-1530 - Saved search does not work for custom properties of type d:text with list constraint 6591: Improvement for submit speed. 6592: Removed obsolete tests. 6594: Index tracking sample to include AVM index tracking 6595: Added the AVM helpers methods from the FreeMarker AVM API that were missing from the JavaScript API 6597: Rationalize post commit execution hooks for deployment receiver 6598: Properly escape path names for ProgramRunnable. 6599: AVM store name lookup cache is (theoretically) clusterable. 6600: Some or other gramatically incorrect stuff about Chiba. 6601: Fix for AR-1121 and AR-1673 6602: AR-1655: Versioning is not MLText aware 6603: Updated messages from lang packs 6604: Fixed AR-1476: JCR import end element escaping 6605: Updated Japanese lang messages git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6746 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -882,4 +882,21 @@ public class AVMLockingAwareService implements AVMService, ApplicationContextAwa
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.service.cmr.avm.AVMService#createDirectory(java.lang.String, java.lang.String, java.util.List, java.util.Map)
|
||||
*/
|
||||
public void createDirectory(String path, String name, List<QName> aspects, Map<QName, PropertyValue> properties)
|
||||
{
|
||||
fService.createDirectory(path, name, aspects, properties);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.service.cmr.avm.AVMService#createFile(java.lang.String, java.lang.String, java.io.InputStream, java.util.List, java.util.Map)
|
||||
*/
|
||||
public void createFile(String path, String name, InputStream in, List<QName> aspects, Map<QName, PropertyValue> properties)
|
||||
{
|
||||
grabLock(path + '/' + name);
|
||||
fService.createFile(path, name, in, aspects, properties);
|
||||
}
|
||||
}
|
||||
|
@@ -254,7 +254,7 @@ public class AVMRepository
|
||||
* @param name The name to give the file.
|
||||
* @param data The file contents.
|
||||
*/
|
||||
public void createFile(String path, String name, File data)
|
||||
public void createFile(String path, String name, File data, List<QName> aspects, Map<QName, PropertyValue> properties)
|
||||
{
|
||||
fLookupCount.set(1);
|
||||
try
|
||||
@@ -266,7 +266,7 @@ public class AVMRepository
|
||||
throw new AVMNotFoundException("Store not found.");
|
||||
}
|
||||
fLookupCache.onWrite(pathParts[0]);
|
||||
store.createFile(pathParts[1], name, data);
|
||||
store.createFile(pathParts[1], name, data, aspects, properties);
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -279,7 +279,7 @@ public class AVMRepository
|
||||
* @param path The path to the containing directory.
|
||||
* @param name The name to give the directory.
|
||||
*/
|
||||
public void createDirectory(String path, String name)
|
||||
public void createDirectory(String path, String name, List<QName> aspects, Map<QName, PropertyValue> properties)
|
||||
{
|
||||
fLookupCount.set(1);
|
||||
try
|
||||
@@ -291,7 +291,7 @@ public class AVMRepository
|
||||
throw new AVMNotFoundException("Store not found.");
|
||||
}
|
||||
fLookupCache.onWrite(pathParts[0]);
|
||||
store.createDirectory(pathParts[1], name);
|
||||
store.createDirectory(pathParts[1], name, aspects, properties);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
@@ -357,6 +357,14 @@ public class AVMServiceImpl implements AVMService
|
||||
* @param in An InputStream containing data for file.
|
||||
*/
|
||||
public void createFile(String path, String name, InputStream in)
|
||||
{
|
||||
createFile(path, name, in, null, null);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.service.cmr.avm.AVMService#createFile(java.lang.String, java.lang.String, java.io.InputStream, java.util.List, java.util.Map)
|
||||
*/
|
||||
public void createFile(String path, String name, InputStream in, List<QName> aspects, Map<QName, PropertyValue> properties)
|
||||
{
|
||||
if (path == null || name == null || in == null || !FileNameValidator.IsValid(name))
|
||||
{
|
||||
@@ -383,7 +391,7 @@ public class AVMServiceImpl implements AVMService
|
||||
}
|
||||
try
|
||||
{
|
||||
fAVMRepository.createFile(path, name, temp);
|
||||
fAVMRepository.createFile(path, name, temp, aspects, properties);
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -397,12 +405,20 @@ public class AVMServiceImpl implements AVMService
|
||||
* @param name The name of the new directory.
|
||||
*/
|
||||
public void createDirectory(String path, String name)
|
||||
{
|
||||
createDirectory(path, name, null, null);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.service.cmr.avm.AVMService#createDirectory(java.lang.String, java.lang.String, java.util.List, java.util.Map)
|
||||
*/
|
||||
public void createDirectory(String path, String name, List<QName> aspects, Map<QName, PropertyValue> properties)
|
||||
{
|
||||
if (path == null || name == null || !FileNameValidator.IsValid(name))
|
||||
{
|
||||
throw new AVMBadArgumentException("Illegal argument.");
|
||||
}
|
||||
fAVMRepository.createDirectory(path, name);
|
||||
fAVMRepository.createDirectory(path, name, aspects, properties);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -5043,6 +5043,8 @@ public class AVMServiceTest extends AVMServiceTestBase
|
||||
AVMStoreDescriptor desc = fService.getStore("main");
|
||||
assertNotNull(desc);
|
||||
System.out.println(desc);
|
||||
fService.purgeStore("main");
|
||||
assertNull(fService.getStore("main"));
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
@@ -87,7 +87,7 @@ public interface AVMStore
|
||||
* @param path The path to the parent directory.
|
||||
* @param name The name to give the new directory.
|
||||
*/
|
||||
public void createDirectory(String path, String name);
|
||||
public void createDirectory(String path, String name, List<QName> aspects, Map<QName, PropertyValue> properties);
|
||||
|
||||
/**
|
||||
* Create a new layered directory.
|
||||
@@ -112,7 +112,7 @@ public interface AVMStore
|
||||
* @param name The name to give the file.
|
||||
* @param data The contents of the file.
|
||||
*/
|
||||
public void createFile(String path, String name, File data);
|
||||
public void createFile(String path, String name, File data, List<QName> aspects, Map<QName, PropertyValue> properties);
|
||||
|
||||
/**
|
||||
* Create a new layered file.
|
||||
|
@@ -319,7 +319,7 @@ public class AVMStoreImpl implements AVMStore, Serializable
|
||||
* @param path The path to the containing directory.
|
||||
* @param name The name of the new directory.
|
||||
*/
|
||||
public void createDirectory(String path, String name)
|
||||
public void createDirectory(String path, String name, List<QName> aspects, Map<QName, PropertyValue> properties)
|
||||
{
|
||||
Lookup lPath = lookupDirectory(-1, path, true);
|
||||
if (lPath == null)
|
||||
@@ -353,6 +353,14 @@ public class AVMStoreImpl implements AVMStore, Serializable
|
||||
}
|
||||
dir.updateModTime();
|
||||
dir.putChild(name, newDir);
|
||||
if (aspects != null)
|
||||
{
|
||||
newDir.getAspects().addAll(aspects);
|
||||
}
|
||||
if (properties != null)
|
||||
{
|
||||
newDir.getProperties().putAll(properties);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -442,7 +450,7 @@ public class AVMStoreImpl implements AVMStore, Serializable
|
||||
* @param name The name to give the new file.
|
||||
* @param data The contents.
|
||||
*/
|
||||
public void createFile(String path, String name, File data)
|
||||
public void createFile(String path, String name, File data, List<QName> aspects, Map<QName, PropertyValue> properties)
|
||||
{
|
||||
Lookup lPath = lookupDirectory(-1, path, true);
|
||||
if (lPath == null)
|
||||
@@ -468,10 +476,19 @@ public class AVMStoreImpl implements AVMStore, Serializable
|
||||
RawServices.Instance().getMimetypeService().guessMimetype(name),
|
||||
-1,
|
||||
"UTF-8"));
|
||||
if (aspects != null)
|
||||
{
|
||||
file.getAspects().addAll(aspects);
|
||||
}
|
||||
if (properties != null)
|
||||
{
|
||||
file.getProperties().putAll(properties);
|
||||
}
|
||||
// Yet another flush.
|
||||
AVMDAOs.Instance().fAVMNodeDAO.flush();
|
||||
ContentWriter writer = createContentWriter(AVMNodeConverter.ExtendAVMPath(path, name));
|
||||
writer.putContent(data);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -24,14 +24,13 @@
|
||||
package org.alfresco.repo.avm.hibernate;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.repo.avm.AVMNode;
|
||||
import org.alfresco.repo.avm.AVMStore;
|
||||
import org.alfresco.repo.avm.AVMStoreDAO;
|
||||
import org.alfresco.repo.avm.AVMStoreImpl;
|
||||
import org.alfresco.repo.cache.SimpleCache;
|
||||
import org.hibernate.Query;
|
||||
import org.hibernate.proxy.HibernateProxy;
|
||||
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
|
||||
@@ -46,7 +45,7 @@ class AVMStoreDAOHibernate extends HibernateDaoSupport implements
|
||||
/**
|
||||
* An in memory cache of name to primary key mappings.
|
||||
*/
|
||||
private Map<String, Long> fNameCache;
|
||||
private SimpleCache<String, Long> fNameCache;
|
||||
|
||||
/**
|
||||
* Do nothing constructor.
|
||||
@@ -54,7 +53,11 @@ class AVMStoreDAOHibernate extends HibernateDaoSupport implements
|
||||
public AVMStoreDAOHibernate()
|
||||
{
|
||||
super();
|
||||
fNameCache = new HashMap<String, Long>();
|
||||
}
|
||||
|
||||
public void setCache(SimpleCache<String, Long> cache)
|
||||
{
|
||||
fNameCache = cache;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -100,10 +103,7 @@ class AVMStoreDAOHibernate extends HibernateDaoSupport implements
|
||||
public AVMStore getByName(String name)
|
||||
{
|
||||
Long id = null;
|
||||
synchronized (this)
|
||||
{
|
||||
id = fNameCache.get(name);
|
||||
}
|
||||
id = fNameCache.get(name);
|
||||
if (id != null)
|
||||
{
|
||||
return forceNonLazy((AVMStore)getSession().get(AVMStoreImpl.class, id));
|
||||
@@ -112,12 +112,9 @@ class AVMStoreDAOHibernate extends HibernateDaoSupport implements
|
||||
"where st.name = :name");
|
||||
query.setParameter("name", name);
|
||||
AVMStore result = (AVMStore)query.uniqueResult();
|
||||
synchronized (this)
|
||||
if (result != null)
|
||||
{
|
||||
if (result != null)
|
||||
{
|
||||
fNameCache.put(name, result.getId());
|
||||
}
|
||||
fNameCache.put(name, result.getId());
|
||||
}
|
||||
return forceNonLazy(result);
|
||||
}
|
||||
|
@@ -182,7 +182,9 @@ public class AVMLockingServiceTest extends TestCase
|
||||
System.out.println(fAttributeService.getAttribute(".avm_lock_table"));
|
||||
// assertEquals(2, fService.getUsersLocks("Buffy").size());
|
||||
assertEquals(2, fService.getWebProjectLocks("alfresco").size());
|
||||
System.out.println("Before----------------------------");
|
||||
fService.removeLock("alfresco", "Revello Drive/1630");
|
||||
System.out.println("After----------------------------");
|
||||
System.out.println(fAttributeService.getAttribute(".avm_lock_table"));
|
||||
// assertEquals(1, fService.getUsersLocks("Buffy").size());
|
||||
assertEquals(1, fService.getWebProjectLocks("alfresco").size());
|
||||
|
@@ -108,7 +108,9 @@ public class AVMSubmitTransactionListener extends TransactionListenerAdapter
|
||||
true
|
||||
);
|
||||
if (log.isDebugEnabled())
|
||||
log.debug("JMX update to virt server called after commit");
|
||||
log.debug("JMX update to virt server called after commit." +
|
||||
" Version: " + requiresUpdate.getDestinationVersion() +
|
||||
" Path: " + requiresUpdate.getDestinationPath());
|
||||
}
|
||||
|
||||
// Remove virtual webapps from workflow sandbox prior to
|
||||
|
Reference in New Issue
Block a user