exo-jcr SVN: r4455 - in jcr/trunk: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl and 24 other directories.
by do-not-reply@jboss.org
Author: dkuleshov
Date: 2011-05-31 02:54:06 -0400 (Tue, 31 May 2011)
New Revision: 4455
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/datamodel/InternalQName.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNCacheableLockManagerImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/ControllerCacheLoader.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/XmlNodeTypeDataPersister.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/ISPNIndexChangesFilter.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/LocalIndexChangesFilter.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/LocalIndexChangesFilter.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/AbstractIndex.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/NodeIndexer.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/RedoLog.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/Util.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/BufferedISPNCache.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/SerializationSpoolFile.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/GenericConnectionFactory.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBMultiDbJDBCConnection.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBSingleDbJDBCConnection.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/CQJDBCStorageConnection.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/GenericCQConnectionFactory.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/HSQLDBMultiDbJDBCConnection.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/HSQLDBSingleDbJDBCConnection.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/TreeFile.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/ValueFileOperation.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleaner.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SpoolFile.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SwapFile.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializer.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/infinispan/ISPNCacheFactory.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/infinispan/PrivilegedISPNCacheHelper.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/jbosscache/ExoJBossCacheFactory.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/jbosscache/PrivilegedJBossCacheHelper.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/transaction/ActionNonTxAware.java
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScript2RestLoader.java
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScriptAddRepoPlugin.java
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/JcrGroovyClassLoaderProvider.java
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/JcrGroovyCompiler.java
jcr/trunk/exo.jcr.connectors.jca/src/main/java/org/exoplatform/connectors/jcr/impl/adapter/ManagedSessionFactory.java
Log:
EXOJCR-1365: reworkerd source code to improve performance
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/datamodel/InternalQName.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/datamodel/InternalQName.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/datamodel/InternalQName.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -40,14 +40,9 @@
*/
public InternalQName(String namespace, String name)
{
- super(safeIntern(namespace), name);
+ super(namespace, name);
}
- private static String safeIntern(String s)
- {
- return s != null ? s.intern() : null;
- }
-
/**
* Parse qname in form of eXo-JCR names conversion string. E.g. [name_space]item_name,
* [http://www.jcp.org/jcr/nt/1.0]:base.
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -69,6 +69,8 @@
import org.exoplatform.services.log.Log;
import java.security.PrivilegedAction;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
import java.util.List;
import javax.jcr.NamespaceRegistry;
@@ -268,16 +270,16 @@
try
{
- final boolean isSystem = config.getSystemWorkspaceName().equals(wsConfig.getName());
-
- if (getWorkspaceContainer(wsConfig.getName()) != null)
- throw new RepositoryException("Workspace " + wsConfig.getName() + " already registered");
-
- final WorkspaceContainer workspaceContainer = new WorkspaceContainer(this, wsConfig);
- SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
+ SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<Void>()
{
- public Void run()
+ public Void run() throws RepositoryException, RepositoryConfigurationException
{
+ final boolean isSystem = config.getSystemWorkspaceName().equals(wsConfig.getName());
+
+ if (getWorkspaceContainer(wsConfig.getName()) != null)
+ throw new RepositoryException("Workspace " + wsConfig.getName() + " already registered");
+
+ final WorkspaceContainer workspaceContainer = new WorkspaceContainer(RepositoryContainer.this, wsConfig);
registerComponentInstance(wsConfig.getName(), workspaceContainer);
wsConfig.setUniqueName(getName() + "_" + wsConfig.getName());
@@ -285,35 +287,21 @@
workspaceContainer.registerComponentInstance(wsConfig);
workspaceContainer.registerComponentImplementation(StandaloneStoragePluginProvider.class);
- return null;
- }
- });
- try
- {
- final Class<?> containerType = Class.forName(wsConfig.getContainer().getType());
- SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
- {
- public Void run()
+ try
{
+ final Class<?> containerType = Class.forName(wsConfig.getContainer().getType());
workspaceContainer.registerComponentImplementation(containerType);
if (isSystem)
{
registerComponentInstance(new SystemDataContainerHolder((WorkspaceDataContainer)workspaceContainer
.getComponentInstanceOfType(WorkspaceDataContainer.class)));
}
- return null;
}
- });
- }
- catch (ClassNotFoundException e)
- {
- throw new RepositoryConfigurationException("Class not found for workspace data container "
- + wsConfig.getUniqueName() + " : " + e);
- }
- SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
- {
- public Void run()
- {
+ catch (ClassNotFoundException e)
+ {
+ throw new RepositoryConfigurationException("Class not found for workspace data container "
+ + wsConfig.getUniqueName() + " : " + e);
+ }
// cache type
try
{
@@ -335,68 +323,40 @@
workspaceContainer.registerComponentImplementation(CacheableWorkspaceDataManager.class);
workspaceContainer.registerComponentImplementation(LocalWorkspaceDataManagerStub.class);
workspaceContainer.registerComponentImplementation(ObservationManagerRegistry.class);
- return null;
- }
- });
- // Lock manager and Lock persister is a optional parameters
- if (wsConfig.getLockManager() != null && wsConfig.getLockManager().getPersister() != null)
- {
- try
- {
- final Class<?> lockPersister = Class.forName(wsConfig.getLockManager().getPersister().getType());
- SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
+ // Lock manager and Lock persister is a optional parameters
+ if (wsConfig.getLockManager() != null && wsConfig.getLockManager().getPersister() != null)
{
- public Void run()
+ try
{
+ final Class<?> lockPersister = Class.forName(wsConfig.getLockManager().getPersister().getType());
workspaceContainer.registerComponentImplementation(lockPersister);
- return null;
}
- });
- }
- catch (ClassNotFoundException e)
- {
- throw new RepositoryConfigurationException("Class not found for workspace lock persister "
- + wsConfig.getLockManager().getPersister().getType() + ", container " + wsConfig.getUniqueName()
- + " : " + e);
- }
- }
+ catch (ClassNotFoundException e)
+ {
+ throw new RepositoryConfigurationException("Class not found for workspace lock persister "
+ + wsConfig.getLockManager().getPersister().getType() + ", container " + wsConfig.getUniqueName()
+ + " : " + e);
+ }
+ }
- if (wsConfig.getLockManager() != null && wsConfig.getLockManager().getType() != null)
- {
- try
- {
- final Class<?> lockManagerType = Class.forName(wsConfig.getLockManager().getType());
- SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
+ if (wsConfig.getLockManager() != null && wsConfig.getLockManager().getType() != null)
{
- public Void run()
+ try
{
+ final Class<?> lockManagerType = Class.forName(wsConfig.getLockManager().getType());
workspaceContainer.registerComponentImplementation(lockManagerType);
- return null;
}
- });
- }
- catch (ClassNotFoundException e)
- {
- throw new RepositoryConfigurationException("Class not found for workspace lock manager "
- + wsConfig.getLockManager().getType() + ", container " + wsConfig.getUniqueName() + " : " + e);
- }
- }
- else
- {
- SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
- {
- public Void run()
+ catch (ClassNotFoundException e)
+ {
+ throw new RepositoryConfigurationException("Class not found for workspace lock manager "
+ + wsConfig.getLockManager().getType() + ", container " + wsConfig.getUniqueName() + " : " + e);
+ }
+ }
+ else
{
workspaceContainer.registerComponentImplementation(LockManagerImpl.class);
- return null;
}
- });
- }
- SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
- {
- public Void run()
- {
// Query handler
if (wsConfig.getQueryHandler() != null)
{
@@ -409,109 +369,105 @@
workspaceContainer.registerComponentImplementation(SystemSearchManager.class);
}
}
- return null;
- }
- });
- // access manager
- if (wsConfig.getAccessManager() != null && wsConfig.getAccessManager().getType() != null)
- {
- try
- {
- final Class<?> am = Class.forName(wsConfig.getAccessManager().getType());
- SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
+ // access manager
+ if (wsConfig.getAccessManager() != null && wsConfig.getAccessManager().getType() != null)
{
- public Void run()
+ try
{
+ final Class<?> am = Class.forName(wsConfig.getAccessManager().getType());
workspaceContainer.registerComponentImplementation(am);
- return null;
}
- });
- }
- catch (ClassNotFoundException e)
- {
- throw new RepositoryConfigurationException("Class not found for workspace access manager "
- + wsConfig.getAccessManager().getType() + ", container " + wsConfig.getUniqueName() + " : " + e);
- }
- }
+ catch (ClassNotFoundException e)
+ {
+ throw new RepositoryConfigurationException("Class not found for workspace access manager "
+ + wsConfig.getAccessManager().getType() + ", container " + wsConfig.getUniqueName() + " : " + e);
+ }
+ }
- // initializer
- final Class<?> initilizerType;
- if (wsConfig.getInitializer() != null && wsConfig.getInitializer().getType() != null)
- {
- // use user defined
- try
- {
- initilizerType = Class.forName(wsConfig.getInitializer().getType());
- }
- catch (ClassNotFoundException e)
- {
- throw new RepositoryConfigurationException("Class not found for workspace initializer "
- + wsConfig.getInitializer().getType() + ", container " + wsConfig.getUniqueName() + " : " + e);
- }
- }
- else
- {
- // use default
- initilizerType = ScratchWorkspaceInitializer.class;
- }
- SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
- {
- public Void run()
- {
+ // initializer
+ final Class<?> initilizerType;
+ if (wsConfig.getInitializer() != null && wsConfig.getInitializer().getType() != null)
+ {
+ // use user defined
+ try
+ {
+ initilizerType = Class.forName(wsConfig.getInitializer().getType());
+ }
+ catch (ClassNotFoundException e)
+ {
+ throw new RepositoryConfigurationException("Class not found for workspace initializer "
+ + wsConfig.getInitializer().getType() + ", container " + wsConfig.getUniqueName() + " : " + e);
+ }
+ }
+ else
+ {
+ // use default
+ initilizerType = ScratchWorkspaceInitializer.class;
+ }
workspaceContainer.registerComponentImplementation(initilizerType);
workspaceContainer.registerComponentImplementation(TransactionableResourceManager.class);
workspaceContainer.registerComponentImplementation(SessionFactory.class);
- return null;
- }
- });
- final LocalWorkspaceDataManagerStub wsDataManager =
- (LocalWorkspaceDataManagerStub)workspaceContainer
- .getComponentInstanceOfType(LocalWorkspaceDataManagerStub.class);
+ final LocalWorkspaceDataManagerStub wsDataManager =
+ (LocalWorkspaceDataManagerStub)workspaceContainer
+ .getComponentInstanceOfType(LocalWorkspaceDataManagerStub.class);
- if (isSystem)
- {
- // system workspace
- systemDataManager = wsDataManager;
- SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
- {
- public Void run()
+ if (isSystem)
{
+ // system workspace
+ systemDataManager = wsDataManager;
registerComponentInstance(systemDataManager);
- return null;
}
- });
- }
- wsDataManager.setSystemDataManager(systemDataManager);
+ wsDataManager.setSystemDataManager(systemDataManager);
- if (!config.getWorkspaceEntries().contains(wsConfig))
- config.getWorkspaceEntries().add(wsConfig);
+ if (!config.getWorkspaceEntries().contains(wsConfig))
+ config.getWorkspaceEntries().add(wsConfig);
+ return null;
+ }
+ });
}
- catch (RuntimeException e)
+ catch (PrivilegedActionException pae)
{
- int depth = 0;
- Throwable retval = e;
- while (retval.getCause() != null && depth < 100)
+ Throwable cause = pae.getCause();
+ if (cause instanceof RepositoryConfigurationException)
{
- retval = retval.getCause();
- if (retval instanceof RepositoryException)
+ throw (RepositoryConfigurationException)cause;
+ }
+ else if (cause instanceof RepositoryException)
+ {
+ throw (RepositoryException)cause;
+ }
+ else if (cause instanceof RuntimeException)
+ {
+ RuntimeException e = (RuntimeException)cause;
+ int depth = 0;
+ Throwable retval = e;
+ while (retval.getCause() != null && depth < 100)
{
- throw new RepositoryException(retval.getMessage(), e);
+ retval = retval.getCause();
+ if (retval instanceof RepositoryException)
+ {
+ throw new RepositoryException(retval.getMessage(), e);
+ }
+ else if (retval instanceof RepositoryConfigurationException)
+ {
+ throw new RepositoryConfigurationException(retval.getMessage(), e);
+ }
+ else if (retval instanceof NameNotFoundException)
+ {
+ throw new RepositoryException(retval.getMessage(), e);
+ }
+ depth++;
}
- else if (retval instanceof RepositoryConfigurationException)
- {
- throw new RepositoryConfigurationException(retval.getMessage(), e);
- }
- else if (retval instanceof NameNotFoundException)
- {
- throw new RepositoryException(retval.getMessage(), e);
- }
- depth++;
+ throw e;
}
- throw e;
- }
+ else
+ {
+ throw new RepositoryException(cause);
+ }
+ }
}
// Components access methods -------
@@ -636,73 +592,77 @@
private void registerRepositoryComponents() throws RepositoryConfigurationException, RepositoryException
{
- SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
+ try
{
- public Void run()
+ SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<Void>()
{
+ public Void run() throws RepositoryConfigurationException, RepositoryException
+ {
- registerComponentImplementation(RepositorySuspendController.class);
- registerComponentImplementation(IdGenerator.class);
+ registerComponentImplementation(RepositorySuspendController.class);
+ registerComponentImplementation(IdGenerator.class);
- registerComponentImplementation(RepositoryIndexSearcherHolder.class);
+ registerComponentImplementation(RepositoryIndexSearcherHolder.class);
- registerComponentImplementation(LocationFactory.class);
- registerComponentImplementation(ValueFactoryImpl.class);
+ registerComponentImplementation(LocationFactory.class);
+ registerComponentImplementation(ValueFactoryImpl.class);
- registerComponentInstance(new AddNamespacePluginHolder(addNamespacePlugins));
+ registerComponentInstance(new AddNamespacePluginHolder(addNamespacePlugins));
- registerComponentImplementation(JCRNodeTypeDataPersister.class);
- registerComponentImplementation(NamespaceDataPersister.class);
- registerComponentImplementation(NamespaceRegistryImpl.class);
+ registerComponentImplementation(JCRNodeTypeDataPersister.class);
+ registerComponentImplementation(NamespaceDataPersister.class);
+ registerComponentImplementation(NamespaceRegistryImpl.class);
- registerComponentImplementation(NodeTypeManagerImpl.class);
- registerComponentImplementation(NodeTypeDataManagerImpl.class);
+ registerComponentImplementation(NodeTypeManagerImpl.class);
+ registerComponentImplementation(NodeTypeDataManagerImpl.class);
- registerComponentImplementation(DefaultAccessManagerImpl.class);
+ registerComponentImplementation(DefaultAccessManagerImpl.class);
- registerComponentImplementation(SessionRegistry.class);
+ registerComponentImplementation(SessionRegistry.class);
- String systemWsname = config.getSystemWorkspaceName();
- WorkspaceEntry systemWsEntry = getWorkspaceEntry(systemWsname);
+ String systemWsname = config.getSystemWorkspaceName();
+ WorkspaceEntry systemWsEntry = getWorkspaceEntry(systemWsname);
- if (systemWsEntry != null && systemWsEntry.getQueryHandler() != null)
- {
- SystemSearchManager systemSearchManager =
- (SystemSearchManager)getWorkspaceContainer(systemWsname).getComponentInstanceOfType(
- SystemSearchManager.class);
- registerComponentInstance(new SystemSearchManagerHolder(systemSearchManager));
- }
- return null;
- }
- });
+ if (systemWsEntry != null && systemWsEntry.getQueryHandler() != null)
+ {
+ SystemSearchManager systemSearchManager =
+ (SystemSearchManager)getWorkspaceContainer(systemWsname).getComponentInstanceOfType(
+ SystemSearchManager.class);
+ registerComponentInstance(new SystemSearchManagerHolder(systemSearchManager));
+ }
+ try
+ {
+ final Class<?> authenticationPolicyClass = Class.forName(config.getAuthenticationPolicy());
+ registerComponentImplementation(authenticationPolicyClass);
+ }
+ catch (ClassNotFoundException e)
+ {
+ throw new RepositoryConfigurationException("Class not found for repository authentication policy: " + e);
+ }
- try
- {
- final Class<?> authenticationPolicyClass = Class.forName(config.getAuthenticationPolicy());
- SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
- {
- public Void run()
- {
- registerComponentImplementation(authenticationPolicyClass);
+ // Repository
+ final RepositoryImpl repository = new RepositoryImpl(RepositoryContainer.this);
+ registerComponentInstance(repository);
return null;
}
});
}
- catch (ClassNotFoundException e)
+ catch (PrivilegedActionException pae)
{
- throw new RepositoryConfigurationException("Class not found for repository authentication policy: " + e);
- }
-
- // Repository
- final RepositoryImpl repository = new RepositoryImpl(this);
- SecurityHelper.doPrivilegedAction(new PrivilegedAction<Void>()
- {
- public Void run()
+ Throwable cause = pae.getCause();
+ if (cause instanceof RepositoryConfigurationException)
{
- registerComponentInstance(repository);
- return null;
+ throw (RepositoryConfigurationException)cause;
}
- });
+ else if (cause instanceof RepositoryException)
+ {
+ throw (RepositoryException)cause;
+ }
+ else
+ {
+ throw new RepositoryException(cause);
+ }
+ }
}
private void registerWorkspacesComponents() throws RepositoryException, RepositoryConfigurationException
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -48,7 +48,6 @@
import java.io.IOException;
import java.io.InputStream;
-import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
@@ -597,7 +596,7 @@
};
try
{
- state = AccessController.doPrivileged(action);
+ state = SecurityHelper.doPrivilegedExceptionAction(action);
}
catch (PrivilegedActionException pae)
{
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNCacheableLockManagerImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNCacheableLockManagerImpl.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/infinispan/ISPNCacheableLockManagerImpl.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -17,6 +17,7 @@
*/
package org.exoplatform.services.jcr.impl.core.lock.infinispan;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.container.configuration.ConfigurationManager;
import org.exoplatform.management.annotations.Managed;
import org.exoplatform.management.jmx.annotations.NameTemplate;
@@ -41,7 +42,6 @@
import org.infinispan.lifecycle.ComponentStatus;
import java.io.Serializable;
-import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.sql.Connection;
@@ -233,7 +233,7 @@
};
try
{
- jdbcConn = AccessController.doPrivileged(action);
+ jdbcConn = SecurityHelper.doPrivilegedExceptionAction(action);
}
catch (PrivilegedActionException pae)
{
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -52,7 +52,6 @@
import org.jboss.cache.lock.TimeoutException;
import java.io.Serializable;
-import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
@@ -337,7 +336,7 @@
};
try
{
- jdbcConn = AccessController.doPrivileged(action);
+ jdbcConn = SecurityHelper.doPrivilegedExceptionAction(action);
}
catch (PrivilegedActionException pae)
{
@@ -602,7 +601,7 @@
return cache.getRoot().addChild(fqn);
}
};
- node = AccessController.doPrivileged(action);
+ node = SecurityHelper.doPrivilegedAction(action);
}
node.setResident(true);
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/ControllerCacheLoader.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/ControllerCacheLoader.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/ControllerCacheLoader.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -16,7 +16,6 @@
*/
package org.exoplatform.services.jcr.impl.core.lock.jbosscache;
-import org.exoplatform.commons.utils.SecurityHelper;
import org.jboss.cache.CacheSPI;
import org.jboss.cache.CacheStatus;
import org.jboss.cache.Fqn;
@@ -29,10 +28,6 @@
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -83,31 +78,7 @@
*/
public void commit(final Object tx) throws Exception
{
- PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
- {
- public Object run() throws Exception
- {
- cl.commit(tx);
- return null;
- }
- };
- try
- {
- AccessController.doPrivileged(action);
- }
- catch (PrivilegedActionException pae)
- {
- Throwable cause = pae.getCause();
-
- if (cause instanceof Exception)
- {
- throw (Exception)cause;
- }
- else
- {
- throw new RuntimeException(cause);
- }
- }
+ cl.commit(tx);
}
/**
@@ -202,31 +173,7 @@
public void prepare(final Object tx, final List<Modification> modifications, final boolean onePhase)
throws Exception
{
- PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
- {
- public Object run() throws Exception
- {
- cl.prepare(tx, modifications, onePhase);
- return null;
- }
- };
- try
- {
- AccessController.doPrivileged(action);
- }
- catch (PrivilegedActionException pae)
- {
- Throwable cause = pae.getCause();
-
- if (cause instanceof Exception)
- {
- throw (Exception)cause;
- }
- else
- {
- throw new RuntimeException(cause);
- }
- }
+ cl.prepare(tx, modifications, onePhase);
}
/**
@@ -234,14 +181,7 @@
*/
public void put(final List<Modification> modifications) throws Exception
{
- SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<Void>()
- {
- public Void run() throws Exception
- {
- cl.put(modifications);
- return null;
- }
- });
+ cl.put(modifications);
}
/**
@@ -249,14 +189,7 @@
*/
public void put(final Fqn name, final Map<Object, Object> attributes) throws Exception
{
- SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<Void>()
- {
- public Void run() throws Exception
- {
- cl.put(name, attributes);
- return null;
- }
- });
+ cl.put(name, attributes);
}
/**
@@ -264,13 +197,7 @@
*/
public Object put(final Fqn name, final Object key, final Object value) throws Exception
{
- return SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<Object>()
- {
- public Object run() throws Exception
- {
- return cl.put(name, key, value);
- }
- });
+ return cl.put(name, key, value);
}
/**
@@ -278,14 +205,7 @@
*/
public void remove(final Fqn fqn) throws Exception
{
- SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<Void>()
- {
- public Void run() throws Exception
- {
- cl.remove(fqn);
- return null;
- }
- });
+ cl.remove(fqn);
}
/**
@@ -293,13 +213,7 @@
*/
public Object remove(final Fqn fqn, final Object key) throws Exception
{
- return SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<Object>()
- {
- public Object run() throws Exception
- {
- return cl.remove(fqn, key);
- }
- });
+ return cl.remove(fqn, key);
}
/**
@@ -307,14 +221,7 @@
*/
public void removeData(final Fqn fqn) throws Exception
{
- SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<Void>()
- {
- public Void run() throws Exception
- {
- cl.removeData(fqn);
- return null;
- }
- });
+ cl.removeData(fqn);
}
/**
@@ -322,15 +229,7 @@
*/
public void rollback(final Object tx)
{
- PrivilegedAction<Object> action = new PrivilegedAction<Object>()
- {
- public Object run()
- {
- cl.rollback(tx);
- return null;
- }
- };
- AccessController.doPrivileged(action);
+ cl.rollback(tx);
}
/**
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/XmlNodeTypeDataPersister.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/XmlNodeTypeDataPersister.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/nodetype/registration/XmlNodeTypeDataPersister.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -18,6 +18,7 @@
*/
package org.exoplatform.services.jcr.impl.core.nodetype.registration;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.jcr.core.nodetype.NodeTypeData;
import org.exoplatform.services.jcr.core.nodetype.NodeTypeValuesList;
import org.exoplatform.services.jcr.datamodel.InternalQName;
@@ -30,7 +31,6 @@
import java.io.InputStream;
import java.io.OutputStream;
-import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.util.List;
@@ -148,7 +148,7 @@
};
try
{
- factory = AccessController.doPrivileged(action);
+ factory = SecurityHelper.doPrivilegedExceptionAction(action);
}
catch (PrivilegedActionException pae)
{
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -22,6 +22,7 @@
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.WildcardQuery;
import org.exoplatform.commons.utils.PrivilegedFileHelper;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.container.configuration.ConfigurationManager;
import org.exoplatform.management.annotations.Managed;
@@ -87,6 +88,8 @@
import java.io.Serializable;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
@@ -1433,7 +1436,35 @@
if (handler instanceof Suspendable)
{
- ((Suspendable)handler).resume();
+ PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
+ {
+ public Object run() throws Exception
+ {
+ ((Suspendable)handler).resume();
+ return null;
+ }
+ };
+ try
+ {
+ SecurityHelper.doPrivilegedExceptionAction(action);
+ }
+ catch (PrivilegedActionException pae)
+ {
+ Throwable cause = pae.getCause();
+
+ if (cause instanceof ResumeException)
+ {
+ throw (ResumeException)cause;
+ }
+ else if (cause instanceof RuntimeException)
+ {
+ throw (RuntimeException)cause;
+ }
+ else
+ {
+ throw new RuntimeException(cause);
+ }
+ }
}
isSuspended = false;
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/ISPNIndexChangesFilter.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/ISPNIndexChangesFilter.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/ISPNIndexChangesFilter.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -28,7 +28,6 @@
import org.exoplatform.services.jcr.impl.core.query.QueryHandler;
import org.exoplatform.services.jcr.impl.core.query.SearchManager;
import org.exoplatform.services.jcr.infinispan.ISPNCacheFactory;
-import org.exoplatform.services.jcr.infinispan.PrivilegedISPNCacheHelper;
import org.exoplatform.services.jcr.util.IdGenerator;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -117,7 +116,7 @@
{
ChangesKey changesKey = new ChangesKey(wsId, IdGenerator.generate());
cache.getAdvancedCache().withFlags(Flag.SKIP_LOCKING);
- PrivilegedISPNCacheHelper.put(cache, changesKey, changes);
+ cache.put(changesKey, changes);
}
/**
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/LocalIndexChangesFilter.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/LocalIndexChangesFilter.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/ispn/LocalIndexChangesFilter.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -28,7 +28,6 @@
import org.exoplatform.services.jcr.impl.core.query.QueryHandler;
import org.exoplatform.services.jcr.impl.core.query.SearchManager;
import org.exoplatform.services.jcr.infinispan.ISPNCacheFactory;
-import org.exoplatform.services.jcr.infinispan.PrivilegedISPNCacheHelper;
import org.exoplatform.services.jcr.util.IdGenerator;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -110,6 +109,6 @@
{
ChangesKey changesKey = new ChangesKey(wsId, IdGenerator.generate());
cache.getAdvancedCache().withFlags(Flag.SKIP_LOCKING);
- PrivilegedISPNCacheHelper.put(cache, changesKey, changes);
+ cache.put(changesKey, changes);
}
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -191,7 +191,7 @@
protected void doUpdateIndex(ChangesFilterListsWrapper changes)
{
String id = IdGenerator.generate();
- PrivilegedJBossCacheHelper.put(cache, Fqn.fromRelativeElements(rootFqn, id), LISTWRAPPER, changes);
+ cache.put(Fqn.fromRelativeElements(rootFqn, id), LISTWRAPPER, changes);
}
/**
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/LocalIndexChangesFilter.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/LocalIndexChangesFilter.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/LocalIndexChangesFilter.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -170,7 +170,7 @@
protected void doUpdateIndex(ChangesFilterListsWrapper changes)
{
String id = IdGenerator.generate();
- PrivilegedJBossCacheHelper.put(cache, Fqn.fromRelativeElements(rootFqn, id), LISTWRAPPER, changes);
+ cache.put(Fqn.fromRelativeElements(rootFqn, id), LISTWRAPPER, changes);
}
/**
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/AbstractIndex.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/AbstractIndex.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/AbstractIndex.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -25,7 +25,6 @@
import org.apache.lucene.index.Term;
import org.apache.lucene.search.Similarity;
import org.apache.lucene.store.Directory;
-import org.exoplatform.commons.utils.SecurityHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -33,8 +32,6 @@
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.StringReader;
-import java.security.PrivilegedAction;
-import java.security.PrivilegedExceptionAction;
import java.util.BitSet;
import java.util.Iterator;
@@ -134,23 +131,15 @@
this.cache = cache;
this.indexingQueue = indexingQueue;
- SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<Object>()
- {
- public Object run() throws Exception
- {
- AbstractIndex.this.isExisting = IndexReader.indexExists(directory);
+ AbstractIndex.this.isExisting = IndexReader.indexExists(directory);
- if (!isExisting)
- {
- indexWriter = new IndexWriter(directory, analyzer, IndexWriter.MaxFieldLength.LIMITED);
- // immediately close, now that index has been created
- indexWriter.close();
- indexWriter = null;
- }
- return null;
- }
- });
-
+ if (!isExisting)
+ {
+ indexWriter = new IndexWriter(directory, analyzer, IndexWriter.MaxFieldLength.LIMITED);
+ // immediately close, now that index has been created
+ indexWriter.close();
+ indexWriter = null;
+ }
}
/**
@@ -184,65 +173,58 @@
*/
void addDocuments(final Document[] docs) throws IOException
{
- SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<Object>()
+ final IndexWriter writer = getIndexWriter();
+ DynamicPooledExecutor.Command[] commands = new DynamicPooledExecutor.Command[docs.length];
+ for (int i = 0; i < docs.length; i++)
{
- public Object run() throws Exception
+ // check if text extractor completed its work
+ final Document doc = getFinishedDocument(docs[i]);
+ // create a command for inverting the document
+ commands[i] = new DynamicPooledExecutor.Command()
{
- final IndexWriter writer = getIndexWriter();
- DynamicPooledExecutor.Command[] commands = new DynamicPooledExecutor.Command[docs.length];
- for (int i = 0; i < docs.length; i++)
+ public Object call() throws Exception
{
- // check if text extractor completed its work
- final Document doc = getFinishedDocument(docs[i]);
- // create a command for inverting the document
- commands[i] = new DynamicPooledExecutor.Command()
- {
- public Object call() throws Exception
- {
- long time = System.currentTimeMillis();
- writer.addDocument(doc);
- return new Long(System.currentTimeMillis() - time);
- }
- };
+ long time = System.currentTimeMillis();
+ writer.addDocument(doc);
+ return new Long(System.currentTimeMillis() - time);
}
- DynamicPooledExecutor.Result[] results = EXECUTOR.executeAndWait(commands);
- invalidateSharedReader();
- IOException ex = null;
- for (int i = 0; i < results.length; i++)
+ };
+ }
+ DynamicPooledExecutor.Result[] results = EXECUTOR.executeAndWait(commands);
+ invalidateSharedReader();
+ IOException ex = null;
+ for (int i = 0; i < results.length; i++)
+ {
+ if (results[i].getException() != null)
+ {
+ Throwable cause = results[i].getException().getCause();
+ if (ex == null)
{
- if (results[i].getException() != null)
+ // only throw the first exception
+ if (cause instanceof IOException)
{
- Throwable cause = results[i].getException().getCause();
- if (ex == null)
- {
- // only throw the first exception
- if (cause instanceof IOException)
- {
- ex = (IOException)cause;
- }
- else
- {
- throw Util.createIOException(cause);
- }
- }
- else
- {
- // all others are logged
- log.warn("Exception while inverting document", cause);
- }
+ ex = (IOException)cause;
}
else
{
- log.debug("Inverted document in {} ms", results[i].get());
+ throw Util.createIOException(cause);
}
}
- if (ex != null)
+ else
{
- throw ex;
+ // all others are logged
+ log.warn("Exception while inverting document", cause);
}
- return null;
}
- });
+ else
+ {
+ log.debug("Inverted document in {} ms", results[i].get());
+ }
+ }
+ if (ex != null)
+ {
+ throw ex;
+ }
}
/**
@@ -256,13 +238,7 @@
*/
int removeDocument(final Term idTerm) throws IOException
{
- return SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return getIndexReader().deleteDocuments(idTerm);
- }
- });
+ return getIndexReader().deleteDocuments(idTerm);
}
/**
@@ -274,25 +250,19 @@
*/
protected synchronized CommittableIndexReader getIndexReader() throws IOException
{
- return SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<CommittableIndexReader>()
+ if (indexWriter != null)
{
- public CommittableIndexReader run() throws Exception
- {
- if (indexWriter != null)
- {
- indexWriter.close();
- log.debug("closing IndexWriter.");
- indexWriter = null;
- }
+ indexWriter.close();
+ log.debug("closing IndexWriter.");
+ indexWriter = null;
+ }
- if (indexReader == null || !indexReader.isCurrent())
- {
- IndexReader reader = IndexReader.open(getDirectory(), null, false, termInfosIndexDivisor);
- indexReader = new CommittableIndexReader(reader);
- }
- return indexReader;
- }
- });
+ if (indexReader == null || !indexReader.isCurrent())
+ {
+ IndexReader reader = IndexReader.open(getDirectory(), null, false, termInfosIndexDivisor);
+ indexReader = new CommittableIndexReader(reader);
+ }
+ return indexReader;
}
/**
@@ -308,63 +278,57 @@
*/
synchronized ReadOnlyIndexReader getReadOnlyIndexReader(final boolean initCache) throws IOException
{
- return SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<ReadOnlyIndexReader>()
+ // get current modifiable index reader
+ CommittableIndexReader modifiableReader = getIndexReader();
+ long modCount = modifiableReader.getModificationCount();
+ if (readOnlyReader != null)
{
- public ReadOnlyIndexReader run() throws Exception
+ if (readOnlyReader.getDeletedDocsVersion() == modCount)
{
- // get current modifiable index reader
- CommittableIndexReader modifiableReader = getIndexReader();
- long modCount = modifiableReader.getModificationCount();
- if (readOnlyReader != null)
+ // reader up-to-date
+ readOnlyReader.acquire();
+ return readOnlyReader;
+ }
+ else
+ {
+ // reader outdated
+ if (readOnlyReader.getRefCount() == 1)
{
- if (readOnlyReader.getDeletedDocsVersion() == modCount)
- {
- // reader up-to-date
- readOnlyReader.acquire();
- return readOnlyReader;
- }
- else
- {
- // reader outdated
- if (readOnlyReader.getRefCount() == 1)
- {
- // not in use, except by this index
- // update the reader
- readOnlyReader.updateDeletedDocs(modifiableReader);
- readOnlyReader.acquire();
- return readOnlyReader;
- }
- else
- {
- // cannot update reader, it is still in use
- // need to create a new instance
- readOnlyReader.release();
- readOnlyReader = null;
- }
- }
+ // not in use, except by this index
+ // update the reader
+ readOnlyReader.updateDeletedDocs(modifiableReader);
+ readOnlyReader.acquire();
+ return readOnlyReader;
}
- // if we get here there is no up-to-date read-only reader
- // capture snapshot of deleted documents
- BitSet deleted = new BitSet(modifiableReader.maxDoc());
- for (int i = 0; i < modifiableReader.maxDoc(); i++)
+ else
{
- if (modifiableReader.isDeleted(i))
- {
- deleted.set(i);
- }
+ // cannot update reader, it is still in use
+ // need to create a new instance
+ readOnlyReader.release();
+ readOnlyReader = null;
}
- if (sharedReader == null)
- {
- // create new shared reader
- IndexReader reader = IndexReader.open(getDirectory(), null, true, termInfosIndexDivisor);
- CachingIndexReader cr = new CachingIndexReader(reader, cache, initCache);
- sharedReader = new SharedIndexReader(cr);
- }
- readOnlyReader = new ReadOnlyIndexReader(sharedReader, deleted, modCount);
- readOnlyReader.acquire();
- return readOnlyReader;
}
- });
+ }
+ // if we get here there is no up-to-date read-only reader
+ // capture snapshot of deleted documents
+ BitSet deleted = new BitSet(modifiableReader.maxDoc());
+ for (int i = 0; i < modifiableReader.maxDoc(); i++)
+ {
+ if (modifiableReader.isDeleted(i))
+ {
+ deleted.set(i);
+ }
+ }
+ if (sharedReader == null)
+ {
+ // create new shared reader
+ IndexReader reader = IndexReader.open(getDirectory(), null, true, termInfosIndexDivisor);
+ CachingIndexReader cr = new CachingIndexReader(reader, cache, initCache);
+ sharedReader = new SharedIndexReader(cr);
+ }
+ readOnlyReader = new ReadOnlyIndexReader(sharedReader, deleted, modCount);
+ readOnlyReader.acquire();
+ return readOnlyReader;
}
/**
@@ -388,26 +352,20 @@
*/
protected synchronized IndexWriter getIndexWriter() throws IOException
{
- return SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<IndexWriter>()
+ if (indexReader != null)
{
- public IndexWriter run() throws Exception
- {
- if (indexReader != null)
- {
- indexReader.close();
- log.debug("closing IndexReader.");
- indexReader = null;
- }
- if (indexWriter == null)
- {
- indexWriter = new IndexWriter(getDirectory(), analyzer, new IndexWriter.MaxFieldLength(maxFieldLength));
- indexWriter.setSimilarity(similarity);
- indexWriter.setUseCompoundFile(useCompoundFile);
- indexWriter.setInfoStream(STREAM_LOGGER);
- }
- return indexWriter;
- }
- });
+ indexReader.close();
+ log.debug("closing IndexReader.");
+ indexReader = null;
+ }
+ if (indexWriter == null)
+ {
+ indexWriter = new IndexWriter(getDirectory(), analyzer, new IndexWriter.MaxFieldLength(maxFieldLength));
+ indexWriter.setSimilarity(similarity);
+ indexWriter.setUseCompoundFile(useCompoundFile);
+ indexWriter.setInfoStream(STREAM_LOGGER);
+ }
+ return indexWriter;
}
/**
@@ -428,31 +386,24 @@
*/
protected synchronized void commit(final boolean optimize) throws IOException
{
- SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<Object>()
+ if (indexReader != null)
{
- public Object run() throws Exception
- {
- if (indexReader != null)
- {
- log.debug("committing IndexReader.");
- indexReader.flush();
- }
- if (indexWriter != null)
- {
- log.debug("committing IndexWriter.");
- indexWriter.commit();
- }
- // optimize if requested
- if (optimize)
- {
- IndexWriter writer = getIndexWriter();
- writer.optimize();
- writer.close();
- indexWriter = null;
- }
- return null;
- }
- });
+ log.debug("committing IndexReader.");
+ indexReader.flush();
+ }
+ if (indexWriter != null)
+ {
+ log.debug("committing IndexWriter.");
+ indexWriter.commit();
+ }
+ // optimize if requested
+ if (optimize)
+ {
+ IndexWriter writer = getIndexWriter();
+ writer.optimize();
+ writer.close();
+ indexWriter = null;
+ }
}
/**
@@ -460,25 +411,18 @@
*/
synchronized void close()
{
- SecurityHelper.doPrivilegedAction(new PrivilegedAction<Object>()
+ releaseWriterAndReaders();
+ if (directory != null)
{
- public Object run()
+ try
{
- releaseWriterAndReaders();
- if (directory != null)
- {
- try
- {
- directory.close();
- }
- catch (IOException e)
- {
- directory = null;
- }
- }
- return null;
+ directory.close();
}
- });
+ catch (IOException e)
+ {
+ directory = null;
+ }
+ }
}
/**
@@ -486,61 +430,54 @@
*/
protected void releaseWriterAndReaders()
{
- SecurityHelper.doPrivilegedAction(new PrivilegedAction<Object>()
+ if (indexWriter != null)
{
- public Object run()
+ try
{
- if (indexWriter != null)
- {
- try
- {
- indexWriter.close();
- }
- catch (IOException e)
- {
- log.warn("Exception closing index writer: " + e.toString());
- }
- indexWriter = null;
- }
- if (indexReader != null)
- {
- try
- {
- indexReader.close();
- }
- catch (IOException e)
- {
- log.warn("Exception closing index reader: " + e.toString());
- }
- indexReader = null;
- }
- if (readOnlyReader != null)
- {
- try
- {
- readOnlyReader.release();
- }
- catch (IOException e)
- {
- log.warn("Exception closing index reader: " + e.toString());
- }
- readOnlyReader = null;
- }
- if (sharedReader != null)
- {
- try
- {
- sharedReader.release();
- }
- catch (IOException e)
- {
- log.warn("Exception closing index reader: " + e.toString());
- }
- sharedReader = null;
- }
- return null;
+ indexWriter.close();
}
- });
+ catch (IOException e)
+ {
+ log.warn("Exception closing index writer: " + e.toString());
+ }
+ indexWriter = null;
+ }
+ if (indexReader != null)
+ {
+ try
+ {
+ indexReader.close();
+ }
+ catch (IOException e)
+ {
+ log.warn("Exception closing index reader: " + e.toString());
+ }
+ indexReader = null;
+ }
+ if (readOnlyReader != null)
+ {
+ try
+ {
+ readOnlyReader.release();
+ }
+ catch (IOException e)
+ {
+ log.warn("Exception closing index reader: " + e.toString());
+ }
+ readOnlyReader = null;
+ }
+ if (sharedReader != null)
+ {
+ try
+ {
+ sharedReader.release();
+ }
+ catch (IOException e)
+ {
+ log.warn("Exception closing index reader: " + e.toString());
+ }
+ sharedReader = null;
+ }
}
/**
@@ -565,25 +502,18 @@
*/
protected synchronized void invalidateSharedReader() throws IOException
{
- SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<Object>()
+ // also close the read-only reader
+ if (readOnlyReader != null)
{
- public Object run() throws Exception
- {
- // also close the read-only reader
- if (readOnlyReader != null)
- {
- readOnlyReader.release();
- readOnlyReader = null;
- }
- // invalidate shared reader
- if (sharedReader != null)
- {
- sharedReader.release();
- sharedReader = null;
- }
- return null;
- }
- });
+ readOnlyReader.release();
+ readOnlyReader = null;
+ }
+ // invalidate shared reader
+ if (sharedReader != null)
+ {
+ sharedReader.release();
+ sharedReader = null;
+ }
}
/**
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -56,11 +56,11 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
import java.util.Queue;
import java.util.Set;
import java.util.Timer;
import java.util.TimerTask;
+import java.util.Map.Entry;
import java.util.concurrent.Callable;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.LinkedBlockingQueue;
@@ -1523,44 +1523,51 @@
*/
public void flush() throws IOException
{
- synchronized (this)
+ SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<Void>()
{
- // commit volatile index
- executeAndLog(new Start(Action.INTERNAL_TRANSACTION));
- commitVolatileIndex();
-
- // commit persistent indexes
- for (int i = indexes.size() - 1; i >= 0; i--)
+ public Void run() throws Exception
{
- PersistentIndex index = indexes.get(i);
- // only commit indexes we own
- // index merger also places PersistentIndex instances in
- // indexes,
- // but does not make them public by registering the name in
- // indexNames
- if (indexNames.contains(index.getName()))
+ synchronized (this)
{
- index.commit();
- // check if index still contains documents
- if (index.getNumDocuments() == 0)
+ // commit volatile index
+ executeAndLog(new Start(Action.INTERNAL_TRANSACTION));
+ commitVolatileIndex();
+
+ // commit persistent indexes
+ for (int i = indexes.size() - 1; i >= 0; i--)
{
- executeAndLog(new DeleteIndex(getTransactionId(), index.getName()));
+ PersistentIndex index = indexes.get(i);
+ // only commit indexes we own
+ // index merger also places PersistentIndex instances in
+ // indexes,
+ // but does not make them public by registering the name in
+ // indexNames
+ if (indexNames.contains(index.getName()))
+ {
+ index.commit();
+ // check if index still contains documents
+ if (index.getNumDocuments() == 0)
+ {
+ executeAndLog(new DeleteIndex(getTransactionId(), index.getName()));
+ }
+ }
}
- }
- }
- executeAndLog(new Commit(getTransactionId()));
+ executeAndLog(new Commit(getTransactionId()));
+
+ indexNames.write();
- indexNames.write();
+ // reset redo log
+ redoLog.clear();
- // reset redo log
- redoLog.clear();
+ lastFlushTime = System.currentTimeMillis();
+ lastFileSystemFlushTime = System.currentTimeMillis();
+ }
- lastFlushTime = System.currentTimeMillis();
- lastFileSystemFlushTime = System.currentTimeMillis();
- }
-
- // delete obsolete indexes
- attemptDelete();
+ // delete obsolete indexes
+ attemptDelete();
+ return null;
+ }
+ });
}
/**
@@ -1578,24 +1585,17 @@
*/
void releaseMultiReader() throws IOException
{
- SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<Object>()
+ if (multiReader != null)
{
- public Object run() throws Exception
+ try
{
- if (multiReader != null)
- {
- try
- {
- multiReader.release();
- }
- finally
- {
- multiReader = null;
- }
- }
- return null;
+ multiReader.release();
}
- });
+ finally
+ {
+ multiReader = null;
+ }
+ }
}
// -------------------------< internal >-------------------------------------
@@ -1707,23 +1707,17 @@
*/
private Action executeAndLog(final Action a) throws IOException
{
- return SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<Action>()
+ a.execute(MultiIndex.this);
+ redoLog.append(a);
+ // please note that flushing the redo log is only required on
+ // commit, but we also want to keep track of new indexes for sure.
+ // otherwise it might happen that unused index folders are orphaned
+ // after a crash.
+ if (a.getType() == Action.TYPE_COMMIT || a.getType() == Action.TYPE_ADD_INDEX)
{
- public Action run() throws Exception
- {
- a.execute(MultiIndex.this);
- redoLog.append(a);
- // please note that flushing the redo log is only required on
- // commit, but we also want to keep track of new indexes for sure.
- // otherwise it might happen that unused index folders are orphaned
- // after a crash.
- if (a.getType() == Action.TYPE_COMMIT || a.getType() == Action.TYPE_ADD_INDEX)
- {
- redoLog.flush();
- }
- return a;
- }
- });
+ redoLog.flush();
+ }
+ return a;
}
/**
@@ -3730,4 +3724,4 @@
}
return true;
}
-}
\ No newline at end of file
+}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/NodeIndexer.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/NodeIndexer.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/NodeIndexer.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -43,9 +43,6 @@
import java.io.InputStream;
import java.io.Reader;
import java.io.StringReader;
-import java.security.AccessController;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
@@ -235,34 +232,7 @@
{
addPropertyName(doc, prop.getQPath().getName());
}
-
- try
- {
- AccessController.doPrivileged((new PrivilegedExceptionAction<Object>()
- {
- public Object run() throws Exception
- {
- addValues(doc, prop);
- return null;
- }
- }));
- }
- catch (PrivilegedActionException pae)
- {
- Throwable cause = pae.getCause();
- if (cause instanceof RepositoryException)
- {
- throw (RepositoryException)cause;
- }
- else if (cause instanceof RuntimeException)
- {
- throw (RuntimeException)cause;
- }
- else
- {
- throw new RuntimeException(cause);
- }
- }
+ addValues(doc, prop);
}
// now add fields that are not used in excerpt (must go at the end)
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/RedoLog.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/RedoLog.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/RedoLog.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -17,7 +17,6 @@
package org.exoplatform.services.jcr.impl.core.query.lucene;
import org.apache.lucene.store.Directory;
-import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.jcr.impl.core.query.lucene.directory.IndexInputStream;
import org.exoplatform.services.jcr.impl.core.query.lucene.directory.IndexOutputStream;
import org.slf4j.Logger;
@@ -31,7 +30,6 @@
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
-import java.security.PrivilegedExceptionAction;
import java.util.ArrayList;
import java.util.List;
@@ -147,16 +145,9 @@
*/
void append(final MultiIndex.Action action) throws IOException
{
- SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<Object>()
- {
- public Object run() throws Exception
- {
- initOut();
- out.write(action.toString() + "\n");
- entryCount++;
- return null;
- }
- });
+ initOut();
+ out.write(action.toString() + "\n");
+ entryCount++;
}
/**
@@ -165,17 +156,10 @@
*/
void flush() throws IOException
{
- SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<Object>()
+ if (out != null)
{
- public Object run() throws Exception
- {
- if (out != null)
- {
- out.flush();
- }
- return null;
- }
- });
+ out.flush();
+ }
}
/**
@@ -184,28 +168,21 @@
*/
synchronized void clear() throws IOException
{
- SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<Object>()
+ if (out != null)
{
- public Object run() throws Exception
- {
- if (out != null)
- {
- out.close();
- out = null;
- }
- try
- {
- dir.deleteFile(REDO_LOG);
- }
- catch (Exception e)
- {
- log.error(e.getLocalizedMessage(), e);
- throw e;
- }
- entryCount = 0;
- return null;
- }
- });
+ out.close();
+ out = null;
+ }
+ try
+ {
+ dir.deleteFile(REDO_LOG);
+ }
+ catch (IOException e)
+ {
+ log.error(e.getLocalizedMessage(), e);
+ throw e;
+ }
+ entryCount = 0;
}
/**
@@ -215,18 +192,11 @@
*/
private synchronized void initOut() throws IOException
{
- SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<Object>()
+ if (out == null)
{
- public Object run() throws Exception
- {
- if (out == null)
- {
- OutputStream os = new IndexOutputStream(dir.createOutput(REDO_LOG));
- out = new BufferedWriter(new OutputStreamWriter(os));
- }
- return null;
- }
- });
+ OutputStream os = new IndexOutputStream(dir.createOutput(REDO_LOG));
+ out = new BufferedWriter(new OutputStreamWriter(os));
+ }
}
/**
@@ -238,48 +208,41 @@
*/
private void read(final ActionCollector collector) throws IOException
{
- SecurityHelper.doPrivilegedIOExceptionAction(new PrivilegedExceptionAction<Object>()
+ if (!dir.fileExists(REDO_LOG))
{
- public Object run() throws Exception
+ return;
+ }
+ InputStream in = new IndexInputStream(dir.openInput(REDO_LOG));
+ try
+ {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(in));
+ String line;
+ while ((line = reader.readLine()) != null)
{
- if (!dir.fileExists(REDO_LOG))
+ try
{
- return null;
+ collector.collect(MultiIndex.Action.fromString(line));
}
- InputStream in = new IndexInputStream(dir.openInput(REDO_LOG));
+ catch (IllegalArgumentException e)
+ {
+ log.warn("Malformed redo entry: " + e.getMessage());
+ }
+ }
+ }
+ finally
+ {
+ if (in != null)
+ {
try
{
- BufferedReader reader = new BufferedReader(new InputStreamReader(in));
- String line;
- while ((line = reader.readLine()) != null)
- {
- try
- {
- collector.collect(MultiIndex.Action.fromString(line));
- }
- catch (IllegalArgumentException e)
- {
- log.warn("Malformed redo entry: " + e.getMessage());
- }
- }
+ in.close();
}
- finally
+ catch (IOException e)
{
- if (in != null)
- {
- try
- {
- in.close();
- }
- catch (IOException e)
- {
- log.warn("Exception while closing redo log: " + e.toString());
- }
- }
+ log.warn("Exception while closing redo log: " + e.toString());
}
- return null;
}
- });
+ }
}
//-----------------------< internal >---------------------------------------
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/SearchIndex.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -75,7 +75,6 @@
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
-import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
@@ -588,7 +587,7 @@
try
{
- AccessController.doPrivileged((new PrivilegedExceptionAction<Object>()
+ SecurityHelper.doPrivilegedExceptionAction((new PrivilegedExceptionAction<Object>()
{
public Object run() throws Exception
{
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/Util.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/Util.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/Util.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -31,7 +31,6 @@
import java.io.IOException;
import java.io.UnsupportedEncodingException;
-import java.security.PrivilegedAction;
import java.security.PrivilegedExceptionAction;
import java.util.Iterator;
import java.util.regex.Pattern;
@@ -60,33 +59,26 @@
*/
public static void disposeDocument(final Document old)
{
- SecurityHelper.doPrivilegedAction(new PrivilegedAction<Object>()
+ for (Iterator it = old.getFields().iterator(); it.hasNext();)
{
- public Object run()
+ Fieldable f = (Fieldable)it.next();
+ try
{
- for (Iterator it = old.getFields().iterator(); it.hasNext();)
+ if (f.readerValue() != null)
{
- Fieldable f = (Fieldable)it.next();
- try
- {
- if (f.readerValue() != null)
- {
- f.readerValue().close();
- }
- else if (f instanceof LazyTextExtractorField)
- {
- LazyTextExtractorField field = (LazyTextExtractorField)f;
- field.dispose();
- }
- }
- catch (IOException ex)
- {
- log.warn("Exception while disposing index document: " + ex);
- }
+ f.readerValue().close();
}
- return null;
+ else if (f instanceof LazyTextExtractorField)
+ {
+ LazyTextExtractorField field = (LazyTextExtractorField)f;
+ field.dispose();
+ }
}
- });
+ catch (IOException ex)
+ {
+ log.warn("Exception while disposing index document: " + ex);
+ }
+ }
}
/**
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -557,7 +557,7 @@
* {@inheritDoc}
*/
@Override
- public ItemData getItemData(NodeData parentData, QPathEntry name, ItemType itemType) throws RepositoryException
+ public ItemData getItemData(final NodeData parentData, final QPathEntry name, final ItemType itemType) throws RepositoryException
{
if (cache.isEnabled())
{
@@ -577,7 +577,13 @@
data = getCachedItemData(parentData, name, itemType);
if (data == null)
{
- data = getPersistedItemData(parentData, name, itemType);
+ data = executeAction(new PrivilegedExceptionAction<ItemData>()
+ {
+ public ItemData run() throws RepositoryException
+ {
+ return getPersistedItemData(parentData, name, itemType);
+ }
+ });
}
}
finally
@@ -608,7 +614,7 @@
* {@inheritDoc}
*/
@Override
- public ItemData getItemData(String identifier) throws RepositoryException
+ public ItemData getItemData(final String identifier) throws RepositoryException
{
if (cache.isEnabled())
{
@@ -628,7 +634,13 @@
data = getCachedItemData(identifier);
if (data == null)
{
- data = getPersistedItemData(identifier);
+ data = executeAction(new PrivilegedExceptionAction<ItemData>()
+ {
+ public ItemData run() throws RepositoryException
+ {
+ return getPersistedItemData(identifier);
+ }
+ });
}
}
finally
@@ -694,7 +706,6 @@
/**
* {@inheritDoc}
*/
- @Override
public void save(final ItemStateChangesLog changesLog) throws RepositoryException
{
if (isSuspended)
@@ -936,7 +947,7 @@
* @throws RepositoryException
* Repository error
*/
- protected List<NodeData> getChildNodesData(NodeData nodeData, boolean forcePersistentRead)
+ protected List<NodeData> getChildNodesData(final NodeData nodeData, boolean forcePersistentRead)
throws RepositoryException
{
@@ -964,17 +975,23 @@
return childNodes;
}
}
- childNodes = super.getChildNodesData(nodeData);
- if (cache.isEnabled())
+ return executeAction(new PrivilegedExceptionAction<List<NodeData>>()
{
- NodeData parentData = (NodeData)getItemData(nodeData.getIdentifier());
+ public List<NodeData> run() throws RepositoryException
+ {
+ List<NodeData> childNodes = CacheableWorkspaceDataManager.super.getChildNodesData(nodeData);
+ if (cache.isEnabled())
+ {
+ NodeData parentData = (NodeData)getItemData(nodeData.getIdentifier());
- if (parentData != null)
- {
- cache.addChildNodes(parentData, childNodes);
+ if (parentData != null)
+ {
+ cache.addChildNodes(parentData, childNodes);
+ }
+ }
+ return childNodes;
}
- }
- return childNodes;
+ });
}
finally
{
@@ -1159,7 +1176,7 @@
* @throws RepositoryException
* Repository error
*/
- protected List<PropertyData> getReferencedPropertiesData(String identifier) throws RepositoryException
+ protected List<PropertyData> getReferencedPropertiesData(final String identifier) throws RepositoryException
{
List<PropertyData> refProps = null;
if (cache.isEnabled())
@@ -1185,12 +1202,18 @@
return refProps;
}
}
- refProps = super.getReferencesData(identifier, false);
- if (cache.isEnabled())
+ return executeAction(new PrivilegedExceptionAction<List<PropertyData>>()
{
- cache.addReferencedProperties(identifier, refProps);
- }
- return refProps;
+ public List<PropertyData> run() throws RepositoryException
+ {
+ List<PropertyData> refProps = CacheableWorkspaceDataManager.super.getReferencesData(identifier, false);
+ if (cache.isEnabled())
+ {
+ cache.addReferencedProperties(identifier, refProps);
+ }
+ return refProps;
+ }
+ });
}
finally
{
@@ -1209,7 +1232,7 @@
* @throws RepositoryException
* Repository error
*/
- protected List<PropertyData> getChildPropertiesData(NodeData nodeData, boolean forcePersistentRead)
+ protected List<PropertyData> getChildPropertiesData(final NodeData nodeData, boolean forcePersistentRead)
throws RepositoryException
{
@@ -1237,19 +1260,25 @@
return childProperties;
}
}
-
- childProperties = super.getChildPropertiesData(nodeData);
- // TODO childProperties.size() > 0 for SDB
- if (childProperties.size() > 0 && cache.isEnabled())
+ return executeAction(new PrivilegedExceptionAction<List<PropertyData>>()
{
- NodeData parentData = (NodeData)getItemData(nodeData.getIdentifier());
+ public List<PropertyData> run() throws RepositoryException
+ {
+ List<PropertyData> childProperties =
+ CacheableWorkspaceDataManager.super.getChildPropertiesData(nodeData);
+ // TODO childProperties.size() > 0 for SDB
+ if (childProperties.size() > 0 && cache.isEnabled())
+ {
+ NodeData parentData = (NodeData)getItemData(nodeData.getIdentifier());
- if (parentData != null)
- {
- cache.addChildProperties(parentData, childProperties);
+ if (parentData != null)
+ {
+ cache.addChildProperties(parentData, childProperties);
+ }
+ }
+ return childProperties;
}
- }
- return childProperties;
+ });
}
finally
{
@@ -1816,4 +1845,28 @@
rpcService.registerTopologyChangeListener(this);
}
}
+
+ private <T> T executeAction(PrivilegedExceptionAction<T> action) throws RepositoryException
+ {
+ try
+ {
+ return SecurityHelper.doPrivilegedExceptionAction(action);
+ }
+ catch (PrivilegedActionException pae)
+ {
+ Throwable cause = pae.getCause();
+ if (cause instanceof RepositoryException)
+ {
+ throw (RepositoryException)cause;
+ }
+ else if (cause instanceof RuntimeException)
+ {
+ throw (RuntimeException)cause;
+ }
+ else
+ {
+ throw new RuntimeException(cause);
+ }
+ }
+ }
}
\ No newline at end of file
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/BufferedISPNCache.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/BufferedISPNCache.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/BufferedISPNCache.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -18,6 +18,7 @@
*/
package org.exoplatform.services.jcr.impl.dataflow.persistent.infinispan;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.jcr.datamodel.ItemData;
import org.exoplatform.services.jcr.impl.core.itemfilters.QPathEntryFilter;
import org.exoplatform.services.log.ExoLogger;
@@ -31,7 +32,6 @@
import org.infinispan.manager.CacheContainer;
import org.infinispan.util.concurrent.NotifyingFuture;
-import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Collection;
import java.util.HashMap;
@@ -905,14 +905,7 @@
changesContainer.add(new PutObjectContainer(key, value, parentCache, changesContainer.getHistoryIndex(), local
.get(), allowLocalChanges));
- PrivilegedAction<Object> action = new PrivilegedAction<Object>()
- {
- public Object run()
- {
- return withReturnValue ? parentCache.get(key) : null;
- }
- };
- return AccessController.doPrivileged(action);
+ return withReturnValue ? parentCache.get(key) : null;
}
/**
@@ -957,7 +950,7 @@
return null;
}
};
- AccessController.doPrivileged(action);
+ SecurityHelper.doPrivilegedAction(action);
}
/**
@@ -973,7 +966,7 @@
return null;
}
};
- AccessController.doPrivileged(action);
+ SecurityHelper.doPrivilegedAction(action);
}
/**
@@ -1028,15 +1021,7 @@
try
{
final List<ChangesContainer> containers = changesContainer.getSortedList();
- PrivilegedAction<Void> action = new PrivilegedAction<Void>()
- {
- public Void run()
- {
- commitChanges(tm, containers);
- return null;
- }
- };
- AccessController.doPrivileged(action);
+ commitChanges(tm, containers);
}
finally
{
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/BufferedJBossCache.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -20,7 +20,7 @@
import org.exoplatform.services.jcr.datamodel.ItemData;
import org.exoplatform.services.jcr.impl.core.itemfilters.QPathEntryFilter;
-import org.exoplatform.services.jcr.jbosscache.PrivilegedJBossCacheHelper;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.jboss.cache.Cache;
@@ -38,7 +38,6 @@
import org.jgroups.Address;
import java.io.Serializable;
-import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.HashSet;
import java.util.Iterator;
@@ -114,15 +113,7 @@
try
{
final List<ChangesContainer> containers = changesContainer.getSortedList();
- PrivilegedAction<Void> action = new PrivilegedAction<Void>()
- {
- public Void run()
- {
- commitChanges(containers);
- return null;
- }
- };
- AccessController.doPrivileged(action);
+ commitChanges(containers);
}
finally
{
@@ -301,7 +292,7 @@
return null;
}
};
- AccessController.doPrivileged(action);
+ SecurityHelper.doPrivilegedAction(action);
}
/* (non-Javadoc)
@@ -740,7 +731,7 @@
return null;
}
};
- AccessController.doPrivileged(action);
+ SecurityHelper.doPrivilegedAction(action);
}
/* (non-Javadoc)
@@ -764,7 +755,7 @@
return null;
}
};
- AccessController.doPrivileged(action);
+ SecurityHelper.doPrivilegedAction(action);
}
public TransactionManager getTransactionManager()
@@ -1282,7 +1273,7 @@
public void apply()
{
setCacheLocalMode();
- PrivilegedJBossCacheHelper.removeNode(cache, fqn);
+ cache.removeNode(fqn);
}
}
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/SerializationSpoolFile.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/SerializationSpoolFile.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/serialization/SerializationSpoolFile.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -18,11 +18,11 @@
*/
package org.exoplatform.services.jcr.impl.dataflow.serialization;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.jcr.impl.util.io.SpoolFile;
import java.io.File;
import java.io.FileNotFoundException;
-import java.security.AccessController;
import java.security.PrivilegedAction;
/**
@@ -89,7 +89,7 @@
return SerializationSpoolFile.super.delete();
}
};
- boolean result = AccessController.doPrivileged(action);
+ boolean result = SecurityHelper.doPrivilegedAction(action);
if (result)
{
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/GenericConnectionFactory.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/GenericConnectionFactory.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/GenericConnectionFactory.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -18,7 +18,6 @@
*/
package org.exoplatform.services.jcr.impl.storage.jdbc.db;
-import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
import org.exoplatform.services.jcr.storage.WorkspaceStorageConnection;
import org.exoplatform.services.jcr.storage.value.ValueStoragePluginProvider;
@@ -26,7 +25,6 @@
import org.exoplatform.services.log.Log;
import java.io.File;
-import java.security.PrivilegedExceptionAction;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
@@ -228,15 +226,9 @@
{
try
{
- final Connection conn =
- SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Connection>()
- {
- public Connection run() throws Exception
- {
- return dbDataSource != null ? dbDataSource.getConnection() : (dbUserName != null ? DriverManager
- .getConnection(dbUrl, dbUserName, dbPassword) : DriverManager.getConnection(dbUrl));
- }
- });
+ Connection conn =
+ dbDataSource != null ? dbDataSource.getConnection() : (dbUserName != null ? DriverManager.getConnection(
+ dbUrl, dbUserName, dbPassword) : DriverManager.getConnection(dbUrl));
if (readOnly)
{
// set this feature only if it asked
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBMultiDbJDBCConnection.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBMultiDbJDBCConnection.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBMultiDbJDBCConnection.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -16,18 +16,11 @@
*/
package org.exoplatform.services.jcr.impl.storage.jdbc.db;
-import org.exoplatform.commons.utils.SecurityHelper;
-import org.exoplatform.services.jcr.datamodel.NodeData;
-import org.exoplatform.services.jcr.datamodel.PropertyData;
import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
import org.exoplatform.services.jcr.storage.value.ValueStoragePluginProvider;
import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.security.PrivilegedExceptionAction;
import java.sql.Connection;
-import java.sql.ResultSet;
import java.sql.SQLException;
/**
@@ -86,263 +79,4 @@
FIND_NODES_COUNT_BY_PARENTID = "select count(ID) from JCR_MITEM" + " where PARENT_ID=? and I_CLASS=1";
FIND_PROPERTIES_BY_PARENTID = "select * from JCR_MITEM" + " where PARENT_ID=? and I_CLASS=2" + " order by ID";
}
-
- @Override
- protected int addNodeRecord(final NodeData data) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.addNodeRecord(data);
- }
- });
- }
-
- @Override
- protected int addPropertyRecord(final PropertyData data) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.addPropertyRecord(data);
- }
- });
- }
-
- @Override
- protected int addReference(final PropertyData data) throws SQLException, IOException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.addReference(data);
- }
- });
- }
-
- @Override
- protected int addValueData(final String cid, final int orderNumber, final InputStream stream,
- final int streamLength, final String storageDesc) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.addValueData(cid, orderNumber, stream, streamLength, storageDesc);
-
- }
- });
- }
-
- @Override
- protected int deleteItemByIdentifier(final String identifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.deleteItemByIdentifier(identifier);
- }
- });
- }
-
- @Override
- protected int deleteReference(final String propertyIdentifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.deleteReference(propertyIdentifier);
-
- }
- });
- }
-
- @Override
- protected int deleteValueData(final String cid) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.deleteValueData(cid);
- }
- });
- }
-
- @Override
- protected ResultSet findChildNodesByParentIdentifier(final String parentIdentifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findChildNodesByParentIdentifier(parentIdentifier);
- }
- });
- }
-
- @Override
- protected ResultSet findLastOrderNumberByParentIdentifier(final String parentIdentifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findLastOrderNumberByParentIdentifier(parentIdentifier);
- }
- });
- }
-
- @Override
- protected ResultSet findChildNodesCountByParentIdentifier(final String parentIdentifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findChildNodesCountByParentIdentifier(parentIdentifier);
- }
- });
- }
-
- @Override
- protected ResultSet findChildPropertiesByParentIdentifier(final String parentIdentifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findChildPropertiesByParentIdentifier(parentIdentifier);
- }
- });
- }
-
- @Override
- protected ResultSet findItemByIdentifier(final String identifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findItemByIdentifier(identifier);
- }
- });
- }
-
- @Override
- protected ResultSet findItemByName(final String parentId, final String name, final int index) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findItemByName(parentId, name, index);
- }
- });
- }
-
- @Override
- protected ResultSet findPropertyByName(final String parentId, final String name) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findPropertyByName(parentId, name);
- }
- });
- }
-
- @Override
- protected ResultSet findReferences(final String nodeIdentifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findReferences(nodeIdentifier);
- }
- });
- }
-
- @Override
- protected ResultSet findValueByPropertyIdOrderNumber(final String cid, final int orderNumb) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findValueByPropertyIdOrderNumber(cid, orderNumb);
- }
- });
- }
-
- @Override
- protected ResultSet findValuesByPropertyId(final String cid) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findValuesByPropertyId(cid);
- }
- });
- }
-
- @Override
- protected ResultSet findValuesStorageDescriptorsByPropertyId(final String cid) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findValuesStorageDescriptorsByPropertyId(cid);
-
- }
- });
- }
-
- @Override
- protected int renameNode(final NodeData data) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.renameNode(data);
-
- }
- });
- }
-
- @Override
- protected int updateNodeByIdentifier(final int version, final int index, final int orderNumb, final String identifier)
- throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.updateNodeByIdentifier(version, index, orderNumb, identifier);
- }
- });
- }
-
- @Override
- protected int updatePropertyByIdentifier(final int version, final int type, final String identifier)
- throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.updatePropertyByIdentifier(version, type, identifier);
- }
- });
- }
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBSingleDbJDBCConnection.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBSingleDbJDBCConnection.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/db/HSQLDBSingleDbJDBCConnection.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -16,16 +16,10 @@
*/
package org.exoplatform.services.jcr.impl.storage.jdbc.db;
-import org.exoplatform.commons.utils.SecurityHelper;
-import org.exoplatform.services.jcr.datamodel.NodeData;
-import org.exoplatform.services.jcr.datamodel.PropertyData;
import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
import org.exoplatform.services.jcr.storage.value.ValueStoragePluginProvider;
import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.security.PrivilegedExceptionAction;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -111,14 +105,7 @@
findItemByName.setString(3, name);
findItemByName.setInt(4, index);
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return findItemByName.executeQuery();
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
+ return findItemByName.executeQuery();
}
/**
@@ -136,14 +123,7 @@
findPropertyByName.setString(2, containerName);
findPropertyByName.setString(3, name);
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return findPropertyByName.executeQuery();
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
+ return findPropertyByName.executeQuery();
}
/**
@@ -160,14 +140,7 @@
findNodesByParentId.setString(1, parentCid);
findNodesByParentId.setString(2, containerName);
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return findNodesByParentId.executeQuery();
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
+ return findNodesByParentId.executeQuery();
}
/**
@@ -184,14 +157,7 @@
findLastOrderNumberByParentId.setString(1, parentIdentifier);
findLastOrderNumberByParentId.setString(2, containerName);
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return findLastOrderNumberByParentId.executeQuery();
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
+ return findLastOrderNumberByParentId.executeQuery();
}
/**
@@ -208,14 +174,7 @@
findNodesCountByParentId.setString(1, parentCid);
findNodesCountByParentId.setString(2, containerName);
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return findNodesCountByParentId.executeQuery();
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
+ return findNodesCountByParentId.executeQuery();
}
/**
@@ -232,257 +191,6 @@
findPropertiesByParentId.setString(1, parentCid);
findPropertiesByParentId.setString(2, containerName);
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return findPropertiesByParentId.executeQuery();
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
+ return findPropertiesByParentId.executeQuery();
}
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int addNodeRecord(final NodeData data) throws SQLException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.addNodeRecord(data);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int addPropertyRecord(final PropertyData prop) throws SQLException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.addPropertyRecord(prop);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected ResultSet findItemByIdentifier(final String identifier) throws SQLException
- {
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.findItemByIdentifier(identifier);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int addReference(final PropertyData data) throws SQLException, IOException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.addReference(data);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int renameNode(final NodeData data) throws SQLException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.renameNode(data);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int deleteReference(final String propertyIdentifier) throws SQLException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.deleteReference(propertyIdentifier);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected ResultSet findReferences(final String nodeIdentifier) throws SQLException
- {
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.findReferences(nodeIdentifier);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int deleteItemByIdentifier(final String identifier) throws SQLException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.deleteItemByIdentifier(identifier);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int updateNodeByIdentifier(final int version, final int index, final int orderNumb, final String identifier)
- throws SQLException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.updateNodeByIdentifier(version, index, orderNumb, identifier);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int updatePropertyByIdentifier(final int version, final int type, final String identifier)
- throws SQLException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.updatePropertyByIdentifier(version, type, identifier);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- // -------- values processing ------------
- /**
- * {@inheritDoc}
- */
- @Override
- protected int addValueData(final String cid, final int orderNumber, final InputStream stream,
- final int streamLength, final String storageId) throws SQLException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.addValueData(cid, orderNumber, stream, streamLength, storageId);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int deleteValueData(final String cid) throws SQLException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.deleteValueData(cid);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected ResultSet findValuesByPropertyId(final String cid) throws SQLException
- {
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.findValuesByPropertyId(cid);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected ResultSet findValuesStorageDescriptorsByPropertyId(final String cid) throws SQLException
- {
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.findValuesStorageDescriptorsByPropertyId(cid);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected ResultSet findValueByPropertyIdOrderNumber(final String cid, final int orderNumb) throws SQLException
- {
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.findValueByPropertyIdOrderNumber(cid, orderNumb);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/CQJDBCStorageConnection.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/CQJDBCStorageConnection.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/CQJDBCStorageConnection.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -18,7 +18,6 @@
*/
package org.exoplatform.services.jcr.impl.storage.jdbc.optimisation;
-import org.exoplatform.commons.utils.PrivilegedFileHelper;
import org.exoplatform.services.jcr.access.AccessControlEntry;
import org.exoplatform.services.jcr.access.AccessControlList;
import org.exoplatform.services.jcr.dataflow.ItemState;
@@ -444,7 +443,7 @@
swapFile.spoolDone();
}
- long vlen = PrivilegedFileHelper.length(swapFile);
+ long vlen = swapFile.length();
if (vlen <= Integer.MAX_VALUE)
{
streamLength = (int)vlen;
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/GenericCQConnectionFactory.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/GenericCQConnectionFactory.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/GenericCQConnectionFactory.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -24,9 +24,6 @@
import org.exoplatform.services.jcr.storage.value.ValueStoragePluginProvider;
import java.io.File;
-import java.security.AccessController;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
@@ -197,37 +194,9 @@
{
try
{
- Connection conn = null;
+ Connection conn = dbDataSource != null ? dbDataSource.getConnection() : (dbUserName != null ? DriverManager
+ .getConnection(dbUrl, dbUserName, dbPassword) : DriverManager.getConnection(dbUrl));
- PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
- {
- public Object run() throws Exception
- {
- return dbDataSource != null ? dbDataSource.getConnection() : (dbUserName != null ? DriverManager
- .getConnection(dbUrl, dbUserName, dbPassword) : DriverManager.getConnection(dbUrl));
- }
- };
- try
- {
- conn = (Connection)AccessController.doPrivileged(action);
- }
- catch (PrivilegedActionException pae)
- {
- Throwable cause = pae.getCause();
- if (cause instanceof SQLException)
- {
- throw (SQLException)cause;
- }
- else if (cause instanceof RuntimeException)
- {
- throw (RuntimeException)cause;
- }
- else
- {
- throw new RuntimeException(cause);
- }
- }
-
if (readOnly)
{
// set this feature only if it asked
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/HSQLDBMultiDbJDBCConnection.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/HSQLDBMultiDbJDBCConnection.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/HSQLDBMultiDbJDBCConnection.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -16,22 +16,16 @@
*/
package org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.db;
-import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.jcr.datamodel.IllegalNameException;
-import org.exoplatform.services.jcr.datamodel.NodeData;
-import org.exoplatform.services.jcr.datamodel.PropertyData;
import org.exoplatform.services.jcr.datamodel.QPath;
import org.exoplatform.services.jcr.impl.core.itemfilters.QPathEntryFilter;
import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
import org.exoplatform.services.jcr.storage.value.ValueStoragePluginProvider;
import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.security.PrivilegedExceptionAction;
import java.sql.Connection;
-import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.ResultSet;
import java.util.List;
import javax.jcr.InvalidItemStateException;
@@ -101,7 +95,6 @@
+ " V.ORDER_NUM, V.DATA, V.STORAGE_DESC from JCR_MITEM I LEFT OUTER JOIN JCR_MVALUE V ON (V.PROPERTY_ID=I.ID)"
+ " where I.PARENT_ID=? and I.I_CLASS=2 order by I.NAME";
}
-
/**
* Use simple queries since it is much faster
*/
@@ -111,115 +104,6 @@
return traverseQPathSQ(cpid);
}
- @Override
- protected int addNodeRecord(final NodeData data) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.addNodeRecord(data);
- }
- });
- }
-
- @Override
- protected int addPropertyRecord(final PropertyData data) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.addPropertyRecord(data);
- }
- });
- }
-
- @Override
- protected int addReference(final PropertyData data) throws SQLException, IOException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.addReference(data);
- }
- });
- }
-
- @Override
- protected int addValueData(final String cid, final int orderNumber, final InputStream stream,
- final int streamLength, final String storageDesc) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.addValueData(cid, orderNumber, stream, streamLength, storageDesc);
- }
- });
- }
-
- @Override
- protected int deleteItemByIdentifier(final String identifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.deleteItemByIdentifier(identifier);
- }
- });
- }
-
- @Override
- protected int deleteReference(final String propertyIdentifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.deleteReference(propertyIdentifier);
- }
- });
- }
-
- @Override
- protected int deleteValueData(final String cid) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.deleteValueData(cid);
- }
- });
- }
-
- @Override
- protected ResultSet findChildNodesByParentIdentifier(final String parentIdentifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findChildNodesByParentIdentifier(parentIdentifier);
- }
- });
- }
-
- @Override
- protected ResultSet findChildNodesByParentIdentifierCQ(final String parentIdentifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findChildNodesByParentIdentifierCQ(parentIdentifier);
- }
- });
- }
-
/**
* {@inheritDoc}
*/
@@ -260,42 +144,6 @@
}
- @Override
- protected ResultSet findLastOrderNumberByParentIdentifier(final String parentIdentifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findLastOrderNumberByParentIdentifier(parentIdentifier);
- }
- });
- }
-
- @Override
- protected ResultSet findChildNodesCountByParentIdentifier(final String parentIdentifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findChildNodesCountByParentIdentifier(parentIdentifier);
- }
- });
- }
-
- @Override
- protected ResultSet findChildPropertiesByParentIdentifier(final String parentIdentifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findChildPropertiesByParentIdentifier(parentIdentifier);
- }
- });
- }
-
/**
* {@inheritDoc}
*/
@@ -308,7 +156,7 @@
throw new SQLException("Pattern list is empty.");
}
else
- {
+ {
if (findPropertiesByParentIdAndComplexPatternCQ == null)
{
findPropertiesByParentIdAndComplexPatternCQ = dbConnection.createStatement();
@@ -330,162 +178,4 @@
return findPropertiesByParentIdAndComplexPatternCQ.executeQuery(query.toString());
}
}
-
- @Override
- protected ResultSet findChildPropertiesByParentIdentifierCQ(final String parentIdentifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findChildPropertiesByParentIdentifierCQ(parentIdentifier);
- }
- });
- }
-
- @Override
- protected ResultSet findItemByIdentifier(final String identifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findItemByIdentifier(identifier);
- }
- });
- }
-
- @Override
- protected ResultSet findItemByName(final String parentId, final String name, final int index) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findItemByName(parentId, name, index);
- }
- });
- }
-
- @Override
- protected ResultSet findItemQPathByIdentifierCQ(final String identifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findItemQPathByIdentifierCQ(identifier);
- }
- });
- }
-
- @Override
- protected ResultSet findNodeMainPropertiesByParentIdentifierCQ(final String parentIdentifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findNodeMainPropertiesByParentIdentifierCQ(parentIdentifier);
- }
- });
- }
-
- @Override
- protected ResultSet findPropertyByName(final String parentId, final String name) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findPropertyByName(parentId, name);
- }
- });
- }
-
- @Override
- protected ResultSet findReferences(final String nodeIdentifier) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findReferences(nodeIdentifier);
- }
- });
- }
-
- @Override
- protected ResultSet findValueByPropertyIdOrderNumber(final String cid, final int orderNumb) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findValueByPropertyIdOrderNumber(cid, orderNumb);
- }
- });
- }
-
- @Override
- protected ResultSet findValuesByPropertyId(final String cid) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findValuesByPropertyId(cid);
- }
- });
- }
-
- @Override
- protected ResultSet findValuesStorageDescriptorsByPropertyId(final String cid) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.findValuesStorageDescriptorsByPropertyId(cid);
- }
- });
- }
-
- @Override
- protected int renameNode(final NodeData data) throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.renameNode(data);
- }
- });
- }
-
- @Override
- protected int updateNodeByIdentifier(final int version, final int index, final int orderNumb, final String identifier)
- throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.updateNodeByIdentifier(version, index, orderNumb, identifier);
- }
- });
- }
-
- @Override
- protected int updatePropertyByIdentifier(final int version, final int type, final String identifier)
- throws SQLException
- {
- return SecurityHelper.doPrivilegedSQLExceptionAction(new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBMultiDbJDBCConnection.super.updatePropertyByIdentifier(version, type, identifier);
- }
- });
- }
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/HSQLDBSingleDbJDBCConnection.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/HSQLDBSingleDbJDBCConnection.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/optimisation/db/HSQLDBSingleDbJDBCConnection.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -16,19 +16,13 @@
*/
package org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.db;
-import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.jcr.datamodel.IllegalNameException;
-import org.exoplatform.services.jcr.datamodel.NodeData;
-import org.exoplatform.services.jcr.datamodel.PropertyData;
import org.exoplatform.services.jcr.datamodel.QPath;
import org.exoplatform.services.jcr.impl.core.itemfilters.QPathEntryFilter;
import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
import org.exoplatform.services.jcr.storage.value.ValueStoragePluginProvider;
import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.security.PrivilegedExceptionAction;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
@@ -138,14 +132,7 @@
findItemByName.setString(3, name);
findItemByName.setInt(4, index);
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return findItemByName.executeQuery();
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
+ return findItemByName.executeQuery();
}
/**
@@ -163,14 +150,7 @@
findPropertyByName.setString(2, containerName);
findPropertyByName.setString(3, name);
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return findPropertyByName.executeQuery();
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
+ return findPropertyByName.executeQuery();
}
/**
@@ -187,14 +167,7 @@
findNodesByParentId.setString(1, parentCid);
findNodesByParentId.setString(2, containerName);
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return findNodesByParentId.executeQuery();
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
+ return findNodesByParentId.executeQuery();
}
/**
@@ -211,14 +184,7 @@
findLastOrderNumberByParentId.setString(1, parentIdentifier);
findLastOrderNumberByParentId.setString(2, containerName);
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return findLastOrderNumberByParentId.executeQuery();
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
+ return findLastOrderNumberByParentId.executeQuery();
}
/**
@@ -235,14 +201,7 @@
findNodesCountByParentId.setString(1, parentCid);
findNodesCountByParentId.setString(2, containerName);
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return findNodesCountByParentId.executeQuery();
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
+ return findNodesCountByParentId.executeQuery();
}
/**
@@ -259,16 +218,9 @@
findPropertiesByParentId.setString(1, parentCid);
findPropertiesByParentId.setString(2, containerName);
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return findPropertiesByParentId.executeQuery();
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
+ return findPropertiesByParentId.executeQuery();
}
-
+
/**
* {@inheritDoc}
*/
@@ -283,17 +235,10 @@
findNodesByParentIdCQ.setString(1, parentIdentifier);
findNodesByParentIdCQ.setString(2, containerName);
findNodesByParentIdCQ.setString(3, containerName);
-
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return findNodesByParentIdCQ.executeQuery();
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
+
+ return findNodesByParentIdCQ.executeQuery();
}
-
+
/**
* {@inheritDoc}
*/
@@ -350,17 +295,10 @@
findPropertiesByParentIdCQ.setString(1, parentIdentifier);
findPropertiesByParentIdCQ.setString(2, containerName);
-
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return findPropertiesByParentIdCQ.executeQuery();
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
+
+ return findPropertiesByParentIdCQ.executeQuery();
}
-
+
/**
* {@inheritDoc}
*/
@@ -397,280 +335,4 @@
return findPropertiesByParentIdAndComplexPatternCQ.executeQuery(query.toString());
}
}
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int addNodeRecord(final NodeData data) throws SQLException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.addNodeRecord(data);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int addPropertyRecord(final PropertyData prop) throws SQLException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.addPropertyRecord(prop);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected ResultSet findItemByIdentifier(final String identifier) throws SQLException
- {
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.findItemByIdentifier(identifier);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int addReference(final PropertyData data) throws SQLException, IOException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.addReference(data);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int renameNode(final NodeData data) throws SQLException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.renameNode(data);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int deleteReference(final String propertyIdentifier) throws SQLException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.deleteReference(propertyIdentifier);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected ResultSet findReferences(final String nodeIdentifier) throws SQLException
- {
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.findReferences(nodeIdentifier);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int deleteItemByIdentifier(final String identifier) throws SQLException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.deleteItemByIdentifier(identifier);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int updateNodeByIdentifier(final int version, final int index, final int orderNumb, final String identifier)
- throws SQLException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.updateNodeByIdentifier(version, index, orderNumb, identifier);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int updatePropertyByIdentifier(final int version, final int type, final String identifier)
- throws SQLException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.updatePropertyByIdentifier(version, type, identifier);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- // -------- values processing ------------
- /**
- * {@inheritDoc}
- */
- @Override
- protected int addValueData(final String cid, final int orderNumber, final InputStream stream,
- final int streamLength, final String storageId) throws SQLException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.addValueData(cid, orderNumber, stream, streamLength, storageId);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected int deleteValueData(final String cid) throws SQLException
- {
- PrivilegedExceptionAction<Integer> action = new PrivilegedExceptionAction<Integer>()
- {
- public Integer run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.deleteValueData(cid);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected ResultSet findValuesByPropertyId(final String cid) throws SQLException
- {
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.findValuesByPropertyId(cid);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected ResultSet findValuesStorageDescriptorsByPropertyId(final String cid) throws SQLException
- {
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.findValuesStorageDescriptorsByPropertyId(cid);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected ResultSet findValueByPropertyIdOrderNumber(final String cid, final int orderNumb) throws SQLException
- {
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.findValueByPropertyIdOrderNumber(cid, orderNumb);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected ResultSet findItemQPathByIdentifierCQ(final String identifier) throws SQLException
- {
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.findItemQPathByIdentifierCQ(identifier);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected ResultSet findNodeMainPropertiesByParentIdentifierCQ(final String parentIdentifier) throws SQLException
- {
- PrivilegedExceptionAction<ResultSet> action = new PrivilegedExceptionAction<ResultSet>()
- {
- public ResultSet run() throws Exception
- {
- return HSQLDBSingleDbJDBCConnection.super.findNodeMainPropertiesByParentIdentifierCQ(parentIdentifier);
- }
- };
- return SecurityHelper.doPrivilegedSQLExceptionAction(action);
- }
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/TreeFile.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/TreeFile.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/TreeFile.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -19,12 +19,12 @@
package org.exoplatform.services.jcr.impl.storage.value.fs;
import org.exoplatform.commons.utils.PrivilegedFileHelper;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import java.io.File;
-import java.security.AccessController;
import java.security.PrivilegedAction;
/**
@@ -65,7 +65,7 @@
return TreeFile.super.delete();
}
};
- boolean res = AccessController.doPrivileged(action);
+ boolean res = SecurityHelper.doPrivilegedAction(action);
if (res)
deleteParent(new File(getParent()));
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/ValueFileOperation.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/ValueFileOperation.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/ValueFileOperation.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -19,6 +19,7 @@
package org.exoplatform.services.jcr.impl.storage.value.fs.operations;
import org.exoplatform.commons.utils.PrivilegedFileHelper;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.jcr.impl.storage.value.ValueDataResourceHolder;
import org.exoplatform.services.jcr.impl.storage.value.ValueOperation;
import org.exoplatform.services.jcr.impl.storage.value.fs.FileLockException;
@@ -31,7 +32,6 @@
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
-import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
@@ -256,7 +256,7 @@
};
try
{
- local = AccessController.doPrivileged(action);
+ local = SecurityHelper.doPrivilegedExceptionAction(action);
}
catch (PrivilegedActionException pae)
{
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleaner.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleaner.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleaner.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -19,13 +19,13 @@
package org.exoplatform.services.jcr.impl.util.io;
import org.exoplatform.commons.utils.PrivilegedFileHelper;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.services.jcr.impl.proccess.WorkerThread;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import java.io.File;
-import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.HashSet;
import java.util.Set;
@@ -94,7 +94,7 @@
return null;
}
};
- AccessController.doPrivileged(action);
+ SecurityHelper.doPrivilegedAction(action);
if (log.isDebugEnabled())
{
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SpoolFile.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SpoolFile.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SpoolFile.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -19,13 +19,13 @@
package org.exoplatform.services.jcr.impl.util.io;
import org.exoplatform.commons.utils.PrivilegedFileHelper;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
-import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Map;
import java.util.WeakHashMap;
@@ -119,7 +119,7 @@
return sf.exists() ? SpoolFile.super.delete() : true;
}
};
- return AccessController.doPrivileged(action);
+ return SecurityHelper.doPrivilegedAction(action);
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SwapFile.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SwapFile.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/SwapFile.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -19,10 +19,10 @@
package org.exoplatform.services.jcr.impl.util.io;
import org.exoplatform.commons.utils.PrivilegedFileHelper;
+import org.exoplatform.commons.utils.SecurityHelper;
import java.io.File;
import java.io.IOException;
-import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.HashMap;
import java.util.Map;
@@ -168,7 +168,7 @@
return sf.exists() ? SwapFile.super.delete() : true;
}
};
- boolean res = AccessController.doPrivileged(action);
+ boolean res = SecurityHelper.doPrivilegedAction(action);
if (res)
{
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializer.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializer.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializer.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -25,7 +25,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
-import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.PrivilegedExceptionAction;
import java.sql.Connection;
@@ -120,7 +119,7 @@
return this.getClass().getResourceAsStream(path);
}
};
- final InputStream is = AccessController.doPrivileged(action);
+ final InputStream is = SecurityHelper.doPrivilegedAction(action);
PrivilegedAction<InputStreamReader> actionGetReader = new PrivilegedAction<InputStreamReader>()
{
@@ -129,7 +128,7 @@
return new InputStreamReader(is);
}
};
- InputStreamReader isr = AccessController.doPrivileged(actionGetReader);
+ InputStreamReader isr = SecurityHelper.doPrivilegedAction(actionGetReader);
try
{
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/infinispan/ISPNCacheFactory.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/infinispan/ISPNCacheFactory.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/infinispan/ISPNCacheFactory.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -38,7 +38,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
-import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.PrivilegedExceptionAction;
import java.util.HashMap;
@@ -154,7 +153,7 @@
return manager.getCache(regionIdEscaped);
}
};
- Cache<K, V> cache = AccessController.doPrivileged(action);
+ Cache<K, V> cache = SecurityHelper.doPrivilegedAction(action);
return cache;
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/infinispan/PrivilegedISPNCacheHelper.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/infinispan/PrivilegedISPNCacheHelper.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/infinispan/PrivilegedISPNCacheHelper.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -18,10 +18,10 @@
*/
package org.exoplatform.services.jcr.infinispan;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.infinispan.Cache;
import java.io.Serializable;
-import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.concurrent.TimeUnit;
@@ -48,7 +48,7 @@
return null;
}
};
- AccessController.doPrivileged(action);
+ SecurityHelper.doPrivilegedAction(action);
}
/**
@@ -66,7 +66,7 @@
return null;
}
};
- AccessController.doPrivileged(action);
+ SecurityHelper.doPrivilegedAction(action);
}
/**
@@ -83,7 +83,7 @@
return cache.putIfAbsent(key, value);
}
};
- return AccessController.doPrivileged(action);
+ return SecurityHelper.doPrivilegedAction(action);
}
/**
@@ -100,7 +100,7 @@
return cache.put(key, value);
}
};
- return AccessController.doPrivileged(action);
+ return SecurityHelper.doPrivilegedAction(action);
}
/**
@@ -118,6 +118,6 @@
return cache.put(key, value, lifespan, unit);
}
};
- return AccessController.doPrivileged(action);
+ return SecurityHelper.doPrivilegedAction(action);
}
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/jbosscache/ExoJBossCacheFactory.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/jbosscache/ExoJBossCacheFactory.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/jbosscache/ExoJBossCacheFactory.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -40,7 +40,6 @@
import java.io.IOException;
import java.io.InputStream;
-import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.HashMap;
import java.util.Map;
@@ -175,7 +174,7 @@
return factory.createCache(stream, false);
}
};
- Cache<K, V> cache = AccessController.doPrivileged(action);
+ Cache<K, V> cache = SecurityHelper.doPrivilegedAction(action);
// inject transaction manager if defined
if (transactionManager != null)
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/jbosscache/PrivilegedJBossCacheHelper.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/jbosscache/PrivilegedJBossCacheHelper.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/jbosscache/PrivilegedJBossCacheHelper.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -18,12 +18,12 @@
*/
package org.exoplatform.services.jcr.jbosscache;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.jboss.cache.Cache;
import org.jboss.cache.CacheException;
import org.jboss.cache.Fqn;
import java.io.Serializable;
-import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
@@ -50,7 +50,7 @@
return null;
}
};
- AccessController.doPrivileged(action);
+ SecurityHelper.doPrivilegedAction(action);
}
/**
@@ -68,7 +68,7 @@
return null;
}
};
- AccessController.doPrivileged(action);
+ SecurityHelper.doPrivilegedAction(action);
}
/**
@@ -86,7 +86,7 @@
return null;
}
};
- AccessController.doPrivileged(action);
+ SecurityHelper.doPrivilegedAction(action);
}
/**
@@ -94,44 +94,6 @@
*
* @param cache
*/
- public static Object put(final Cache<Serializable, Object> cache, final String fqn, final Serializable key,
- final Object value) throws CacheException
- {
- PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
- {
- public Object run() throws Exception
- {
- return cache.put(fqn, key, value);
-
- }
- };
- try
- {
- return AccessController.doPrivileged(action);
- }
- catch (PrivilegedActionException pae)
- {
- Throwable cause = pae.getCause();
- if (cause instanceof CacheException)
- {
- throw (CacheException)cause;
- }
- else if (cause instanceof RuntimeException)
- {
- throw (RuntimeException)cause;
- }
- else
- {
- throw new RuntimeException(cause);
- }
- }
- }
-
- /**
- * Put in JBoss cache in privileged mode.
- *
- * @param cache
- */
public static Object put(final Cache<Serializable, Object> cache, final Fqn fqn, final Serializable key,
final Object value) throws CacheException
{
@@ -144,7 +106,7 @@
};
try
{
- return AccessController.doPrivileged(action);
+ return SecurityHelper.doPrivilegedExceptionAction(action);
}
catch (PrivilegedActionException pae)
{
@@ -163,40 +125,4 @@
}
}
}
-
- /**
- * Remove node in privileged mode.
- *
- * @param cache
- */
- public static Object removeNode(final Cache<Serializable, Object> cache, final Fqn fqn) throws CacheException
- {
- PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
- {
- public Object run() throws Exception
- {
- return cache.removeNode(fqn);
- }
- };
- try
- {
- return AccessController.doPrivileged(action);
- }
- catch (PrivilegedActionException pae)
- {
- Throwable cause = pae.getCause();
- if (cause instanceof CacheException)
- {
- throw (CacheException)cause;
- }
- else if (cause instanceof RuntimeException)
- {
- throw (RuntimeException)cause;
- }
- else
- {
- throw new RuntimeException(cause);
- }
- }
- }
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/transaction/ActionNonTxAware.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/transaction/ActionNonTxAware.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/transaction/ActionNonTxAware.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -18,12 +18,9 @@
*/
package org.exoplatform.services.transaction;
-import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
-import java.security.PrivilegedExceptionAction;
-
import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
@@ -58,13 +55,7 @@
{
try
{
- tx = SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<Transaction>()
- {
- public Transaction run() throws Exception
- {
- return tm.suspend();
- }
- });
+ tx = tm.suspend();
}
catch (Exception e)
{
@@ -79,15 +70,7 @@
{
try
{
- final Transaction privilegedTx = tx;
- SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<Object>()
- {
- public Object run() throws Exception
- {
- tm.resume(privilegedTx);
- return null;
- }
- });
+ tm.resume(tx);
}
catch (Exception e)
{
Modified: jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScript2RestLoader.java
===================================================================
--- jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScript2RestLoader.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScript2RestLoader.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -20,6 +20,7 @@
import org.apache.commons.fileupload.FileItem;
import org.codehaus.groovy.control.CompilationFailedException;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.container.component.ComponentPlugin;
import org.exoplatform.container.configuration.ConfigurationManager;
import org.exoplatform.container.xml.InitParams;
@@ -54,7 +55,6 @@
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
-import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.util.ArrayList;
@@ -74,7 +74,6 @@
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.observation.Event;
-import javax.jcr.query.InvalidQueryException;
import javax.jcr.query.Query;
import javax.jcr.query.QueryResult;
import javax.ws.rs.Consumes;
@@ -595,7 +594,7 @@
Document doc;
try
{
- doc = AccessController.doPrivileged(new PrivilegedExceptionAction<Document>()
+ doc = SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<Document>()
{
public Document run() throws ParserConfigurationException
{
Modified: jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScriptAddRepoPlugin.java
===================================================================
--- jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScriptAddRepoPlugin.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/GroovyScriptAddRepoPlugin.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -19,6 +19,7 @@
package org.exoplatform.services.jcr.ext.script.groovy;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.container.component.BaseComponentPlugin;
import org.exoplatform.container.xml.InitParams;
import org.exoplatform.container.xml.PropertiesParam;
@@ -28,7 +29,6 @@
import java.net.MalformedURLException;
import java.net.URL;
-import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.util.Collection;
@@ -70,7 +70,7 @@
final String path = p.getProperty("path");
try
{
- AccessController.doPrivileged(new PrivilegedExceptionAction<Void>()
+ SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<Void>()
{
public Void run() throws MalformedURLException
{
Modified: jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/JcrGroovyClassLoaderProvider.java
===================================================================
--- jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/JcrGroovyClassLoaderProvider.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/JcrGroovyClassLoaderProvider.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -30,6 +30,7 @@
import org.codehaus.groovy.control.SourceUnit;
import org.codehaus.groovy.control.io.ReaderSource;
import org.codehaus.groovy.control.io.URLReaderSource;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.rest.ext.groovy.ExtendedGroovyClassLoader;
import org.exoplatform.services.rest.ext.groovy.GroovyClassLoaderProvider;
import org.exoplatform.services.rest.ext.groovy.SourceFile;
@@ -39,7 +40,6 @@
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
-import java.security.AccessController;
import java.security.CodeSource;
import java.security.PrivilegedAction;
import java.util.ArrayList;
@@ -231,7 +231,7 @@
public JcrGroovyClassLoaderProvider()
{
- super(AccessController.doPrivileged(new PrivilegedAction<JcrGroovyClassLoader>() {
+ super(SecurityHelper.doPrivilegedAction(new PrivilegedAction<JcrGroovyClassLoader>() {
public JcrGroovyClassLoader run()
{
return new JcrGroovyClassLoader(JcrGroovyClassLoaderProvider.class.getClassLoader());
@@ -252,7 +252,7 @@
roots[i] = sources[i].getPath();
final GroovyClassLoader parent = getGroovyClassLoader();
- JcrGroovyClassLoader classLoader = AccessController.doPrivileged(new PrivilegedAction<JcrGroovyClassLoader>() {
+ JcrGroovyClassLoader classLoader = SecurityHelper.doPrivilegedAction(new PrivilegedAction<JcrGroovyClassLoader>() {
public JcrGroovyClassLoader run()
{
return new JcrGroovyClassLoader(parent);
Modified: jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/JcrGroovyCompiler.java
===================================================================
--- jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/JcrGroovyCompiler.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/script/groovy/JcrGroovyCompiler.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -22,6 +22,7 @@
import groovy.lang.GroovyClassLoader;
import groovy.lang.GroovyCodeSource;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.jcr.ext.resource.UnifiedNodeReference;
import org.exoplatform.services.jcr.ext.script.groovy.JcrGroovyClassLoaderProvider.JcrGroovyClassLoader;
import org.exoplatform.services.log.ExoLogger;
@@ -34,7 +35,6 @@
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
-import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
@@ -170,7 +170,7 @@
@SuppressWarnings("rawtypes")
private Class<?>[] doCompile(final JcrGroovyClassLoader cl, final SourceFile[] files) throws IOException
{
- Class[] classes = AccessController.doPrivileged(new PrivilegedAction<Class[]>() {
+ Class[] classes = SecurityHelper.doPrivilegedAction(new PrivilegedAction<Class[]>() {
public Class[] run()
{
return cl.parseClasses(files);
@@ -194,7 +194,7 @@
{
try
{
- return AccessController.doPrivileged(new PrivilegedExceptionAction<URL[]>() {
+ return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<URL[]>() {
public URL[] run() throws IOException
{
return ((JcrGroovyClassLoader)classLoaderProvider.getGroovyClassLoader()).findDependencies(sources,
@@ -243,7 +243,7 @@
@Deprecated
protected GroovyCodeSource createCodeSource(final InputStream in, final String name)
{
- GroovyCodeSource gcs = AccessController.doPrivileged(new PrivilegedAction<GroovyCodeSource>() {
+ GroovyCodeSource gcs = SecurityHelper.doPrivilegedAction(new PrivilegedAction<GroovyCodeSource>() {
public GroovyCodeSource run()
{
return new GroovyCodeSource(in, name, "/groovy/script");
Modified: jcr/trunk/exo.jcr.connectors.jca/src/main/java/org/exoplatform/connectors/jcr/impl/adapter/ManagedSessionFactory.java
===================================================================
--- jcr/trunk/exo.jcr.connectors.jca/src/main/java/org/exoplatform/connectors/jcr/impl/adapter/ManagedSessionFactory.java 2011-05-31 06:49:58 UTC (rev 4454)
+++ jcr/trunk/exo.jcr.connectors.jca/src/main/java/org/exoplatform/connectors/jcr/impl/adapter/ManagedSessionFactory.java 2011-05-31 06:54:06 UTC (rev 4455)
@@ -18,6 +18,7 @@
*/
package org.exoplatform.connectors.jcr.impl.adapter;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.container.ExoContainer;
import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.container.PortalContainer;
@@ -30,7 +31,6 @@
import org.exoplatform.services.log.Log;
import java.io.PrintWriter;
-import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Iterator;
import java.util.Set;
@@ -153,7 +153,7 @@
CredentialsImpl credentials = null;
if (subject != null)
{
- credentials = AccessController.doPrivileged(new PrivilegedAction<CredentialsImpl>()
+ credentials = SecurityHelper.doPrivilegedAction(new PrivilegedAction<CredentialsImpl>()
{
public CredentialsImpl run()
{
12 years, 11 months
exo-jcr SVN: r4454 - kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/transaction/impl.
by do-not-reply@jboss.org
Author: dkuleshov
Date: 2011-05-31 02:49:58 -0400 (Tue, 31 May 2011)
New Revision: 4454
Modified:
kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/transaction/impl/AbstractTransactionService.java
Log:
EXOJCR-1365: wrapped code blocks into privileged sections to allow to get sys props
Modified: kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/transaction/impl/AbstractTransactionService.java
===================================================================
--- kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/transaction/impl/AbstractTransactionService.java 2011-05-31 06:41:06 UTC (rev 4453)
+++ kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/transaction/impl/AbstractTransactionService.java 2011-05-31 06:49:58 UTC (rev 4454)
@@ -24,6 +24,7 @@
import org.exoplatform.services.log.Log;
import org.exoplatform.services.transaction.TransactionService;
+import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import javax.transaction.HeuristicMixedException;
@@ -109,14 +110,49 @@
final Transaction tx = tm.getTransaction();
if (tx != null)
{
- int flag = XAResource.TMSUCCESS;
- switch (tx.getStatus())
+ PrivilegedExceptionAction<Boolean> action = new PrivilegedExceptionAction<Boolean>()
{
- case Status.STATUS_MARKED_ROLLBACK:
- case Status.STATUS_ROLLEDBACK:
- case Status.STATUS_ROLLING_BACK: flag = XAResource.TMFAIL;
- }
- return tx.delistResource(xares, flag);
+ public Boolean run() throws Exception
+ {
+ int flag = XAResource.TMSUCCESS;
+ switch (tx.getStatus())
+ {
+ case Status.STATUS_MARKED_ROLLBACK:
+ case Status.STATUS_ROLLEDBACK:
+ case Status.STATUS_ROLLING_BACK: flag = XAResource.TMFAIL;
+ }
+ return tx.delistResource(xares, flag);
+ }
+ };
+ try
+ {
+ return SecurityHelper.doPrivilegedExceptionAction(action);
+ }
+ catch (PrivilegedActionException pae)
+ {
+ Throwable cause = pae.getCause();
+
+ if (cause instanceof RollbackException)
+ {
+ throw (RollbackException)cause;
+ }
+ else if (cause instanceof IllegalStateException)
+ {
+ throw (IllegalStateException)cause;
+ }
+ else if (cause instanceof SystemException)
+ {
+ throw (SystemException)cause;
+ }
+ else if (cause instanceof RuntimeException)
+ {
+ throw (RuntimeException)cause;
+ }
+ else
+ {
+ throw new RuntimeException(cause);
+ }
+ }
}
else
{
@@ -133,7 +169,42 @@
final Transaction tx = tm.getTransaction();
if (tx != null)
{
- return tx.enlistResource(xares);
+ PrivilegedExceptionAction<Boolean> action = new PrivilegedExceptionAction<Boolean>()
+ {
+ public Boolean run() throws Exception
+ {
+ return tx.enlistResource(xares);
+ }
+ };
+ try
+ {
+ return SecurityHelper.doPrivilegedExceptionAction(action);
+ }
+ catch (PrivilegedActionException pae)
+ {
+ Throwable cause = pae.getCause();
+
+ if (cause instanceof RollbackException)
+ {
+ throw (RollbackException)cause;
+ }
+ else if (cause instanceof IllegalStateException)
+ {
+ throw (IllegalStateException)cause;
+ }
+ else if (cause instanceof SystemException)
+ {
+ throw (SystemException)cause;
+ }
+ else if (cause instanceof RuntimeException)
+ {
+ throw (RuntimeException)cause;
+ }
+ else
+ {
+ throw new RuntimeException(cause);
+ }
+ }
}
else
{
@@ -314,7 +385,38 @@
}
// Start the transaction
- tm.begin();
+ PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
+ {
+ public Object run() throws Exception
+ {
+ tm.begin();
+ return null;
+ }
+ };
+ try
+ {
+ SecurityHelper.doPrivilegedExceptionAction(action);
+ }
+ catch (PrivilegedActionException pae)
+ {
+ Throwable cause = pae.getCause();
+ if (cause instanceof NotSupportedException)
+ {
+ throw (NotSupportedException)cause;
+ }
+ else if (cause instanceof SystemException)
+ {
+ throw (SystemException)cause;
+ }
+ else if (cause instanceof RuntimeException)
+ {
+ throw (RuntimeException)cause;
+ }
+ else
+ {
+ throw new RuntimeException(cause);
+ }
+ }
}
/**
@@ -323,7 +425,54 @@
public void commit() throws RollbackException, HeuristicMixedException, HeuristicRollbackException,
SecurityException, IllegalStateException, SystemException
{
- tm.commit();
+ PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
+ {
+ public Object run() throws Exception
+ {
+ tm.commit();
+ return null;
+ }
+ };
+ try
+ {
+ SecurityHelper.doPrivilegedExceptionAction(action);
+ }
+ catch (PrivilegedActionException pae)
+ {
+ Throwable cause = pae.getCause();
+ if (cause instanceof RollbackException)
+ {
+ throw (RollbackException)cause;
+ }
+ else if (cause instanceof HeuristicMixedException)
+ {
+ throw (HeuristicMixedException)cause;
+ }
+ else if (cause instanceof HeuristicRollbackException)
+ {
+ throw (HeuristicRollbackException)cause;
+ }
+ else if (cause instanceof SecurityException)
+ {
+ throw (SecurityException)cause;
+ }
+ else if (cause instanceof IllegalStateException)
+ {
+ throw (IllegalStateException)cause;
+ }
+ else if (cause instanceof SystemException)
+ {
+ throw (SystemException)cause;
+ }
+ else if (cause instanceof RuntimeException)
+ {
+ throw (RuntimeException)cause;
+ }
+ else
+ {
+ throw new RuntimeException(cause);
+ }
+ }
}
/**
@@ -339,7 +488,32 @@
*/
public Transaction getTransaction() throws SystemException
{
- return tm.getTransaction();
+ try
+ {
+ return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<Transaction>()
+ {
+ public Transaction run() throws Exception
+ {
+ return tm.getTransaction();
+ }
+ });
+ }
+ catch (PrivilegedActionException pae)
+ {
+ Throwable cause = pae.getCause();
+ if (cause instanceof SystemException)
+ {
+ throw (SystemException)cause;
+ }
+ else if (cause instanceof RuntimeException)
+ {
+ throw (RuntimeException)cause;
+ }
+ else
+ {
+ throw new RuntimeException(cause);
+ }
+ }
}
/**
@@ -348,7 +522,42 @@
public void resume(final Transaction tx) throws InvalidTransactionException, IllegalStateException,
SystemException
{
- tm.resume(tx);
+ PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
+ {
+ public Object run() throws Exception
+ {
+ tm.resume(tx);
+ return null;
+ }
+ };
+ try
+ {
+ SecurityHelper.doPrivilegedExceptionAction(action);
+ }
+ catch (PrivilegedActionException pae)
+ {
+ Throwable cause = pae.getCause();
+ if (cause instanceof InvalidTransactionException)
+ {
+ throw (InvalidTransactionException)cause;
+ }
+ else if (cause instanceof IllegalStateException)
+ {
+ throw (IllegalStateException)cause;
+ }
+ else if (cause instanceof SystemException)
+ {
+ throw (SystemException)cause;
+ }
+ else if (cause instanceof RuntimeException)
+ {
+ throw (RuntimeException)cause;
+ }
+ else
+ {
+ throw new RuntimeException(cause);
+ }
+ }
}
/**
@@ -356,7 +565,42 @@
*/
public void rollback() throws IllegalStateException, SecurityException, SystemException
{
- tm.rollback();
+ PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
+ {
+ public Object run() throws Exception
+ {
+ tm.rollback();
+ return null;
+ }
+ };
+ try
+ {
+ SecurityHelper.doPrivilegedExceptionAction(action);
+ }
+ catch (PrivilegedActionException pae)
+ {
+ Throwable cause = pae.getCause();
+ if (cause instanceof IllegalStateException)
+ {
+ throw (IllegalStateException)cause;
+ }
+ else if (cause instanceof SecurityException)
+ {
+ throw (SecurityException)cause;
+ }
+ else if (cause instanceof SystemException)
+ {
+ throw (SystemException)cause;
+ }
+ else if (cause instanceof RuntimeException)
+ {
+ throw (RuntimeException)cause;
+ }
+ else
+ {
+ throw new RuntimeException(cause);
+ }
+ }
}
/**
@@ -381,7 +625,33 @@
*/
public Transaction suspend() throws SystemException
{
- return tm.suspend();
+ PrivilegedExceptionAction<Transaction> action = new PrivilegedExceptionAction<Transaction>()
+ {
+ public Transaction run() throws Exception
+ {
+ return tm.suspend();
+ }
+ };
+ try
+ {
+ return SecurityHelper.doPrivilegedExceptionAction(action);
+ }
+ catch (PrivilegedActionException pae)
+ {
+ Throwable cause = pae.getCause();
+ if (cause instanceof SystemException)
+ {
+ throw (SystemException)cause;
+ }
+ else if (cause instanceof RuntimeException)
+ {
+ throw (RuntimeException)cause;
+ }
+ else
+ {
+ throw new RuntimeException(cause);
+ }
+ }
}
}
@@ -414,7 +684,38 @@
*/
public void begin() throws NotSupportedException, SystemException
{
- tm.begin();
+ PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
+ {
+ public Object run() throws Exception
+ {
+ tm.begin();
+ return null;
+ }
+ };
+ try
+ {
+ SecurityHelper.doPrivilegedExceptionAction(action);
+ }
+ catch (PrivilegedActionException pae)
+ {
+ Throwable cause = pae.getCause();
+ if (cause instanceof NotSupportedException)
+ {
+ throw (NotSupportedException)cause;
+ }
+ else if (cause instanceof SystemException)
+ {
+ throw (SystemException)cause;
+ }
+ else if (cause instanceof RuntimeException)
+ {
+ throw (RuntimeException)cause;
+ }
+ else
+ {
+ throw new RuntimeException(cause);
+ }
+ }
}
/**
@@ -423,7 +724,54 @@
public void commit() throws RollbackException, HeuristicMixedException, HeuristicRollbackException,
SecurityException, IllegalStateException, SystemException
{
- tm.commit();
+ PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
+ {
+ public Object run() throws Exception
+ {
+ tm.commit();
+ return null;
+ }
+ };
+ try
+ {
+ SecurityHelper.doPrivilegedExceptionAction(action);
+ }
+ catch (PrivilegedActionException pae)
+ {
+ Throwable cause = pae.getCause();
+ if (cause instanceof RollbackException)
+ {
+ throw (RollbackException)cause;
+ }
+ else if (cause instanceof HeuristicMixedException)
+ {
+ throw (HeuristicMixedException)cause;
+ }
+ else if (cause instanceof HeuristicRollbackException)
+ {
+ throw (HeuristicRollbackException)cause;
+ }
+ else if (cause instanceof SecurityException)
+ {
+ throw (SecurityException)cause;
+ }
+ else if (cause instanceof IllegalStateException)
+ {
+ throw (IllegalStateException)cause;
+ }
+ else if (cause instanceof SystemException)
+ {
+ throw (SystemException)cause;
+ }
+ else if (cause instanceof RuntimeException)
+ {
+ throw (RuntimeException)cause;
+ }
+ else
+ {
+ throw new RuntimeException(cause);
+ }
+ }
}
/**
@@ -431,7 +779,42 @@
*/
public void rollback() throws IllegalStateException, SecurityException, SystemException
{
- tm.rollback();
+ PrivilegedExceptionAction<Object> action = new PrivilegedExceptionAction<Object>()
+ {
+ public Object run() throws Exception
+ {
+ tm.rollback();
+ return null;
+ }
+ };
+ try
+ {
+ SecurityHelper.doPrivilegedExceptionAction(action);
+ }
+ catch (PrivilegedActionException pae)
+ {
+ Throwable cause = pae.getCause();
+ if (cause instanceof IllegalStateException)
+ {
+ throw (IllegalStateException)cause;
+ }
+ else if (cause instanceof SecurityException)
+ {
+ throw (SecurityException)cause;
+ }
+ else if (cause instanceof SystemException)
+ {
+ throw (SystemException)cause;
+ }
+ else if (cause instanceof RuntimeException)
+ {
+ throw (RuntimeException)cause;
+ }
+ else
+ {
+ throw new RuntimeException(cause);
+ }
+ }
}
/**
12 years, 11 months
exo-jcr SVN: r4453 - in jcr/branches/1.12.x/patch/1.12.10-GA: JCR-1636 and 1 other directory.
by do-not-reply@jboss.org
Author: areshetnyak
Date: 2011-05-31 02:41:06 -0400 (Tue, 31 May 2011)
New Revision: 4453
Added:
jcr/branches/1.12.x/patch/1.12.10-GA/JCR-1636/
jcr/branches/1.12.x/patch/1.12.10-GA/JCR-1636/JCR-1636.patch
Log:
JCR-1636 : Creating dynamic session from ACLs was backported
Added: jcr/branches/1.12.x/patch/1.12.10-GA/JCR-1636/JCR-1636.patch
===================================================================
--- jcr/branches/1.12.x/patch/1.12.10-GA/JCR-1636/JCR-1636.patch (rev 0)
+++ jcr/branches/1.12.x/patch/1.12.10-GA/JCR-1636/JCR-1636.patch 2011-05-31 06:41:06 UTC (rev 4453)
@@ -0,0 +1,568 @@
+Index: exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/access/TestUserAccess.java
+===================================================================
+--- exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/access/TestUserAccess.java (revision 4449)
++++ exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/access/TestUserAccess.java (working copy)
+@@ -23,9 +23,13 @@
+ import org.exoplatform.services.jcr.access.SystemIdentity;
+ import org.exoplatform.services.jcr.core.CredentialsImpl;
+ import org.exoplatform.services.jcr.impl.core.NodeImpl;
++import org.exoplatform.services.security.MembershipEntry;
+
+ import java.security.AccessControlException;
++import java.util.ArrayList;
++import java.util.List;
+
++import javax.jcr.AccessDeniedException;
+ import javax.jcr.Node;
+ import javax.jcr.Session;
+
+@@ -72,7 +76,7 @@
+ public void testUser() throws Exception
+ {
+ // Mary only node, Mary membership is '*:/exo', seems it's user
+- NodeImpl maryNode = (NodeImpl)testRoot.addNode("mary");
++ NodeImpl maryNode = (NodeImpl) testRoot.addNode("mary");
+ maryNode.addMixin("exo:privilegeable");
+ if (!session.getUserID().equals("mary"))
+ {
+@@ -175,4 +179,100 @@
+ }
+ }
+
++ /**
++ * Check if Dynamic user has rights to a node with user "mary".
++ *
++ * @throws Exception
++ */
++ public void testDynamicUserRead() throws Exception
++ {
++ // Mary only node, Mary membership is '*:/platform/users', seems it's user
++ NodeImpl maryNode = (NodeImpl) testRoot.addNode("mary_dynamic");
++ maryNode.addMixin("exo:privilegeable");
++ if (!session.getUserID().equals("mary"))
++ {
++ maryNode.setPermission("*:/platform/users", new String[] {PermissionType.READ});
++ maryNode.setPermission("mary", PermissionType.ALL);
++ maryNode.removePermission(session.getUserID());
++ }
++ maryNode.removePermission(SystemIdentity.ANY);
++ testRoot.save();
++
++ Session marySession =
++ repository.login(new CredentialsImpl("mary", "exo".toCharArray()), session.getWorkspace().getName());
++ NodeImpl myNode = (NodeImpl) marySession.getItem(maryNode.getPath());
++ Node test = myNode.addNode("test");
++ test.setProperty("property", "any data");
++ myNode.save();
++
++ //Dynamic session fail read
++ List<MembershipEntry> dynamicMembershipEntries = new ArrayList<MembershipEntry>();
++ dynamicMembershipEntries.add(new MembershipEntry("/platform/administrators"));
++
++ try
++ {
++ Session dynamicSession =
++ repository.getDynamicSession(session.getWorkspace().getName(), dynamicMembershipEntries);
++ NodeImpl maryNodeDynamic = (NodeImpl) dynamicSession.getItem(maryNode.getPath());
++ fail("Dynamic session with membership '*:/platform/users' should not read node with membership '*:/platform/users'");
++ }
++ catch (AccessDeniedException e)
++ {
++ //ok
++ }
++
++ //Dynamic session successful read
++ dynamicMembershipEntries = new ArrayList<MembershipEntry>();
++ dynamicMembershipEntries.add(new MembershipEntry("/platform/users"));
++
++ //check get
++ try
++ {
++ Session dynamicSession =
++ repository.getDynamicSession(session.getWorkspace().getName(), dynamicMembershipEntries);
++ NodeImpl maryNodeDynamic = (NodeImpl) dynamicSession.getItem(maryNode.getPath());
++ //ok
++ }
++ catch (AccessDeniedException e)
++ {
++
++ e.printStackTrace();
++ fail("Dynamic session with membership '*:/platform/users' should read node with membership '*:/platform/users'. Exception message :"
++ + e.getMessage());
++ }
++
++ //check add
++ try
++ {
++ Session dynamicSession =
++ repository.getDynamicSession(session.getWorkspace().getName(), dynamicMembershipEntries);
++ NodeImpl maryNodeDynamic = (NodeImpl) dynamicSession.getItem(maryNode.getPath());
++
++ maryNodeDynamic.addNode("test2");
++ maryNodeDynamic.save();
++ fail("Dynamic session with membership '*:/platform/users' should be not add child node with membership '*:/platform/users READ'");
++ }
++ catch (AccessDeniedException e)
++ {
++ //ok
++ }
++
++ //check remove
++ try
++ {
++ Session dynamicSession =
++ repository.getDynamicSession(session.getWorkspace().getName(), dynamicMembershipEntries);
++ NodeImpl maryNodeDynamic = (NodeImpl) dynamicSession.getItem(maryNode.getPath());
++
++ maryNodeDynamic.getNode("test").remove();
++ maryNodeDynamic.save();
++ fail("Dynamic session with membership '*:/platform/users' should be not remove child node with membership '*:/platform/users READ'");
++ }
++ catch (AccessDeniedException e)
++ {
++ //ok
++ }
++
++ }
++
+ }
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/access/AccessManager.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/access/AccessManager.java (revision 4449)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/access/AccessManager.java (working copy)
+@@ -192,7 +192,9 @@
+
+ }
+ else if (user.isMemberOf(ace.getMembershipEntry()))
++ {
+ return true;
++ }
+ }
+ }
+ return false;
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/access/DynamicIdentity.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/access/DynamicIdentity.java (revision 0)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/access/DynamicIdentity.java (revision 0)
+@@ -0,0 +1,32 @@
++/*
++ * Copyright (C) 2003-2011 eXo Platform SAS.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Affero General Public License
++ * as published by the Free Software Foundation; either version 3
++ * of the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, see<http://www.gnu.org/licenses/>.
++ */
++package org.exoplatform.services.jcr.access;
++
++
++/**
++ * Created by The eXo Platform SAS.
++ *
++ * <br/>Date: 2011
++ *
++ * @author <a href="mailto:alex.reshetnyak@exoplatform.com.ua">Alex Reshetnyak</a>
++ * @version $Id: FakeUserIdentity.java 111 2011-11-11 11:11:11Z rainf0x $
++ */
++public class DynamicIdentity
++ extends SystemIdentity
++{
++ public static final String DYNAMIC = "__dynamic".intern();
++}
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/jndi/BindableRepositoryImpl.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/jndi/BindableRepositoryImpl.java (revision 4449)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/jndi/BindableRepositoryImpl.java (working copy)
+@@ -25,10 +25,12 @@
+ import org.exoplatform.services.jcr.core.WorkspaceContainerFacade;
+ import org.exoplatform.services.jcr.core.nodetype.ExtendedNodeTypeManager;
+ import org.exoplatform.services.jcr.dataflow.persistent.ItemsPersistenceListener;
++import org.exoplatform.services.security.MembershipEntry;
+
+ import java.io.IOException;
+ import java.io.InputStream;
+ import java.io.Serializable;
++import java.util.Collection;
+
+ import javax.jcr.Credentials;
+ import javax.jcr.LoginException;
+@@ -133,6 +135,18 @@
+ /*
+ * (non-Javadoc)
+ * @see
++ * org.exoplatform.services.jcr.core.ManageableRepository#getDynamicSession
++ * (java.lang.String)
++ */
++ public Session getDynamicSession(String workspaceName, Collection<MembershipEntry> membershipEntries)
++ throws RepositoryException
++ {
++ return delegatee.getDynamicSession(workspaceName, membershipEntries);
++ }
++
++ /*
++ * (non-Javadoc)
++ * @see
+ * org.exoplatform.services.jcr.core.ManageableRepository#getWorkspaceNames()
+ */
+ public String[] getWorkspaceNames()
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java (revision 4449)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RepositoryImpl.java (working copy)
+@@ -19,6 +19,7 @@
+ package org.exoplatform.services.jcr.impl.core;
+
+ import org.exoplatform.services.jcr.access.AuthenticationPolicy;
++import org.exoplatform.services.jcr.access.DynamicIdentity;
+ import org.exoplatform.services.jcr.access.SystemIdentity;
+ import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
+ import org.exoplatform.services.jcr.config.RepositoryEntry;
+@@ -39,11 +40,14 @@
+ import org.exoplatform.services.log.ExoLogger;
+ import org.exoplatform.services.log.Log;
+ import org.exoplatform.services.security.ConversationState;
++import org.exoplatform.services.security.Identity;
++import org.exoplatform.services.security.MembershipEntry;
+ import org.picocontainer.ComponentAdapter;
+
+ import java.io.IOException;
+ import java.io.InputStream;
+ import java.util.ArrayList;
++import java.util.Collection;
+ import java.util.HashMap;
+ import java.util.Iterator;
+ import java.util.List;
+@@ -342,6 +346,29 @@
+ }
+
+ /**
++ * {@inheritDoc}
++ */
++ public SessionImpl getDynamicSession(String workspaceName, Collection<MembershipEntry> membershipEntries)
++ throws RepositoryException
++ {
++
++ if (getState() == OFFLINE)
++ LOG.warn("Repository " + getName() + " is OFFLINE.");
++
++ WorkspaceContainer workspaceContainer = repositoryContainer.getWorkspaceContainer(workspaceName);
++ if (workspaceContainer == null || !workspaceContainer.getWorkspaceInitializer().isWorkspaceInitialized())
++ {
++ throw new RepositoryException("Workspace " + workspaceName + " not found or workspace is not initialized");
++ }
++
++ SessionFactory sessionFactory = workspaceContainer.getSessionFactory();
++
++ Identity id = new Identity(DynamicIdentity.DYNAMIC, membershipEntries);
++
++ return sessionFactory.createSession(new ConversationState(id));
++ }
++
++ /**
+ * @return system workspace name as it configured in jcr configuration
+ */
+ public String getSystemWorkspaceName()
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/core/ManageableRepository.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/core/ManageableRepository.java (revision 4449)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/core/ManageableRepository.java (working copy)
+@@ -23,9 +23,11 @@
+ import org.exoplatform.services.jcr.config.WorkspaceEntry;
+ import org.exoplatform.services.jcr.core.nodetype.ExtendedNodeTypeManager;
+ import org.exoplatform.services.jcr.dataflow.persistent.ItemsPersistenceListener;
++import org.exoplatform.services.security.MembershipEntry;
+
+ import java.io.IOException;
+ import java.io.InputStream;
++import java.util.Collection;
+
+ import javax.jcr.NamespaceRegistry;
+ import javax.jcr.NoSuchWorkspaceException;
+@@ -117,6 +119,15 @@
+ Session getSystemSession(String workspaceName) throws RepositoryException;
+
+ /**
++ * @param workspaceName - name of workspace
++ * @param membershipEntries - list of memberships
++ * @return the Dynamic session (session with Dynamic identity)
++ * @throws RepositoryException
++ */
++ Session getDynamicSession(String workspaceName, Collection<MembershipEntry> membershipEntries)
++ throws RepositoryException;
++
++ /**
+ * @return array of workspace names
+ */
+ String[] getWorkspaceNames();
+Index: exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/BaseStandaloneTest.java
+===================================================================
+--- exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/BaseStandaloneTest.java (revision 4449)
++++ exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/BaseStandaloneTest.java (working copy)
+@@ -53,6 +53,7 @@
+ import javax.jcr.NodeIterator;
+ import javax.jcr.PathNotFoundException;
+ import javax.jcr.RepositoryException;
++import javax.jcr.Session;
+ import javax.jcr.ValueFactory;
+ import javax.jcr.Workspace;
+
+@@ -154,10 +155,10 @@
+ log.info("tearDown() BEGIN " + getClass().getName() + "." + getName());
+ if (session != null)
+ {
++ Session sysSession = repository.getSystemSession(session.getWorkspace().getName());
+ try
+ {
+- session.refresh(false);
+- Node rootNode = session.getRootNode();
++ Node rootNode = sysSession.getRootNode();
+ if (rootNode.hasNodes())
+ {
+ // clean test root
+@@ -171,7 +172,7 @@
+ node.remove();
+ }
+ }
+- session.save();
++ sysSession.save();
+ }
+ }
+ catch (Exception e)
+@@ -181,6 +182,7 @@
+ }
+ finally
+ {
++ sysSession.logout();
+ session.logout();
+ }
+ }
+Index: exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/common/DynamicSessionProviderTest.java
+===================================================================
+--- exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/common/DynamicSessionProviderTest.java (revision 0)
++++ exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/common/DynamicSessionProviderTest.java (revision 0)
+@@ -0,0 +1,144 @@
++/*
++ * Copyright (C) 2003-2011 eXo Platform SAS.
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU Affero General Public License
++ * as published by the Free Software Foundation; either version 3
++ * of the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, see<http://www.gnu.org/licenses/>.
++ */
++package org.exoplatform.services.jcr.ext.common;
++
++import org.exoplatform.services.jcr.access.AccessControlEntry;
++import org.exoplatform.services.jcr.access.PermissionType;
++import org.exoplatform.services.jcr.access.SystemIdentity;
++import org.exoplatform.services.jcr.core.CredentialsImpl;
++import org.exoplatform.services.jcr.ext.BaseStandaloneTest;
++import org.exoplatform.services.jcr.ext.common.SessionProvider;
++import org.exoplatform.services.jcr.impl.core.NodeImpl;
++
++import java.util.ArrayList;
++import java.util.List;
++
++import javax.jcr.AccessDeniedException;
++import javax.jcr.Session;
++
++/**
++ * Created by The eXo Platform SAS.
++ *
++ * <br/>Date: 2011
++ *
++ * @author <a href="mailto:alex.reshetnyak@exoplatform.com.ua">Alex Reshetnyak</a>
++ * @version $Id: DynamicSessionProviderTest.java 111 2011-11-11 11:11:11Z rainf0x $
++ */
++public class DynamicSessionProviderTest
++ extends BaseStandaloneTest
++{
++ private NodeImpl testRoot;
++
++ @Override
++ public void setUp() throws Exception
++ {
++ super.setUp();
++
++ testRoot = (NodeImpl)root.addNode("testDynamicSession");
++ root.save();
++ }
++
++ public void testDynamicSession() throws Exception
++ {
++ // Mary only node, Mary membership is '*:/platform/users', seems it's user
++ NodeImpl maryNode = (NodeImpl) testRoot.addNode("mary_dynamic");
++ maryNode.addMixin("exo:privilegeable");
++ if (!session.getUserID().equals("mary"))
++ {
++ maryNode.setPermission("*:/platform/users", new String[] {PermissionType.READ});
++ maryNode.setPermission("mary", PermissionType.ALL);
++ maryNode.removePermission(session.getUserID());
++ }
++ maryNode.removePermission(SystemIdentity.ANY);
++ testRoot.save();
++
++ Session marySession =
++ repository.login(new CredentialsImpl("mary", "exo".toCharArray()), session.getWorkspace().getName());
++ NodeImpl myNode = (NodeImpl) marySession.getItem(maryNode.getPath());
++ NodeImpl test = (NodeImpl) myNode.addNode("test");
++ test.setProperty("property", "any data");
++ myNode.save();
++ marySession.logout();
++
++ //Dynamic session fail read
++ List<AccessControlEntry> accessControlEntries = new ArrayList<AccessControlEntry>();
++ accessControlEntries.add(new AccessControlEntry("*:/platform/administrators", "READ"));
++ SessionProvider dynamicProvider = SessionProvider.createProvider(accessControlEntries);
++
++ Session dynamicSession = null;
++ try
++ {
++ dynamicSession = dynamicProvider.getSession(session.getWorkspace().getName(), repository);
++ NodeImpl maryNodeDynamic = (NodeImpl) dynamicSession.getItem(maryNode.getPath());
++ fail("Dynamic session with membership '*:/platform/users' should not read node with membership '*:/platform/users'");
++ }
++ catch (AccessDeniedException e)
++ {
++ //ok
++ }
++
++ //Dynamic session successful read
++ accessControlEntries = new ArrayList<AccessControlEntry>();
++ accessControlEntries.add(new AccessControlEntry("*:/platform/users", "READ"));
++ dynamicProvider = SessionProvider.createProvider(accessControlEntries);
++
++ //check get
++ try
++ {
++ dynamicSession = dynamicProvider.getSession(session.getWorkspace().getName(), repository);
++ NodeImpl maryNodeDynamic = (NodeImpl) dynamicSession.getItem(maryNode.getPath());
++ //ok
++ }
++ catch (AccessDeniedException e)
++ {
++
++ e.printStackTrace();
++ fail("Dynamic session with membership '*:/platform/users' should read node with membership '*:/platform/users'. Exception message :"
++ + e.getMessage());
++ }
++
++ //check add
++ try
++ {
++ dynamicSession = dynamicProvider.getSession(session.getWorkspace().getName(), repository);
++ NodeImpl maryNodeDynamic = (NodeImpl) dynamicSession.getItem(maryNode.getPath());
++
++ maryNodeDynamic.addNode("test2");
++ maryNodeDynamic.save();
++ fail("Dynamic session with membership '*:/platform/users' should be not add child node with membership '*:/platform/users READ'");
++ }
++ catch (AccessDeniedException e)
++ {
++ //ok
++ }
++
++ //check remove
++ try
++ {
++ dynamicSession = dynamicProvider.getSession(session.getWorkspace().getName(), repository);
++ NodeImpl maryNodeDynamic = (NodeImpl) dynamicSession.getItem(maryNode.getPath());
++
++ maryNodeDynamic.getNode("test").remove();
++ maryNodeDynamic.save();
++ fail("Dynamic session with membership '*:/platform/users' should be not remove child node with membership '*:/platform/users READ'");
++ }
++ catch (AccessDeniedException e)
++ {
++ //ok
++ }
++ }
++}
+Index: exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/common/SessionProvider.java
+===================================================================
+--- exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/common/SessionProvider.java (revision 4449)
++++ exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/common/SessionProvider.java (working copy)
+@@ -18,6 +18,8 @@
+ */
+ package org.exoplatform.services.jcr.ext.common;
+
++import org.exoplatform.services.jcr.access.AccessControlEntry;
++import org.exoplatform.services.jcr.access.DynamicIdentity;
+ import org.exoplatform.services.jcr.access.SystemIdentity;
+ import org.exoplatform.services.jcr.core.ExtendedSession;
+ import org.exoplatform.services.jcr.core.ManageableRepository;
+@@ -28,6 +30,7 @@
+
+ import java.util.HashMap;
+ import java.util.HashSet;
++import java.util.List;
+ import java.util.Map;
+
+ import javax.jcr.LoginException;
+@@ -113,6 +116,29 @@
+ return new SessionProvider(new ConversationState(id));
+ }
+
++ public static SessionProvider createProvider(List<AccessControlEntry> accessList)
++ {
++ if (accessList == null || accessList.isEmpty())
++ {
++ return createAnonimProvider();
++ }
++ else
++ {
++ HashSet<MembershipEntry> membershipEntries = new HashSet<MembershipEntry>();
++
++ for (AccessControlEntry ace : accessList)
++ {
++ membershipEntries.add(ace.getMembershipEntry());
++ }
++
++ Identity id = new Identity(DynamicIdentity.DYNAMIC, membershipEntries);
++ ConversationState conversationState = new ConversationState(id);
++ ConversationState.setCurrent(conversationState);
++ return new SessionProvider(conversationState);
++ }
++
++ }
++
+ /**
+ * Gets the session from internal cache or creates and caches new one.
+ *
+@@ -142,11 +168,19 @@
+
+ if (session == null)
+ {
+-
+- if (!isSystem)
++ ConversationState conversationState = ConversationState.getCurrent();
++ if (conversationState != null && conversationState.getIdentity().getUserId().equals(DynamicIdentity.DYNAMIC))
++ {
++ session = (ExtendedSession) repository.getDynamicSession(workspaceName, conversationState.getIdentity().getMemberships());
++ }
++ else if (!isSystem)
++ {
+ session = (ExtendedSession)repository.login(workspaceName);
++ }
+ else
++ {
+ session = (ExtendedSession)repository.getSystemSession(workspaceName);
++ }
+
+ session.registerLifecycleListener(this);
+
12 years, 11 months
exo-jcr SVN: r4452 - ws/trunk/exo.ws.rest.ext/src/main/java/org/exoplatform/services/rest/ext/management.
by do-not-reply@jboss.org
Author: tolusha
Date: 2011-05-30 10:40:31 -0400 (Mon, 30 May 2011)
New Revision: 4452
Modified:
ws/trunk/exo.ws.rest.ext/src/main/java/org/exoplatform/services/rest/ext/management/RestResource.java
Log:
EXOJCR-1346: fix violation
Modified: ws/trunk/exo.ws.rest.ext/src/main/java/org/exoplatform/services/rest/ext/management/RestResource.java
===================================================================
--- ws/trunk/exo.ws.rest.ext/src/main/java/org/exoplatform/services/rest/ext/management/RestResource.java 2011-05-30 14:36:16 UTC (rev 4451)
+++ ws/trunk/exo.ws.rest.ext/src/main/java/org/exoplatform/services/rest/ext/management/RestResource.java 2011-05-30 14:40:31 UTC (rev 4452)
@@ -24,12 +24,12 @@
import org.exoplatform.management.spi.ManagedPropertyMetaData;
import org.exoplatform.management.spi.ManagedResource;
import org.exoplatform.management.spi.ManagedTypeMetaData;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
import org.exoplatform.services.rest.ext.management.invocation.MethodInvoker;
import org.exoplatform.services.rest.impl.ApplicationContextImpl;
import org.exoplatform.services.rest.impl.MultivaluedMapImpl;
-
-import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collection;
@@ -59,6 +59,11 @@
public class RestResource
{
+ /**
+ * Logger.
+ */
+ private static final Log LOG = ExoLogger.getLogger(RestResource.class);
+
/** . */
final Map<String, RestResourceProperty> properties;
@@ -206,7 +211,8 @@
{
for (RestResourceMethod method : methods)
{
- if (method.getName().equals(methodName) && method.metaData.getImpact() == impact && method.parameterNames.equals(argNames))
+ if (method.getName().equals(methodName) && method.metaData.getImpact() == impact
+ && method.parameterNames.equals(argNames))
{
return method;
}
@@ -236,7 +242,7 @@
}
catch (Exception e)
{
- e.printStackTrace();
+ LOG.error(e);
return Response.serverError();
}
finally
@@ -251,7 +257,7 @@
MultivaluedMap<String, String> parameters = info.getQueryParameters();
ApplicationContextImpl context = (ApplicationContextImpl)info;
- Type formType = (ParameterizedType)MultivaluedMapImpl.class.getGenericInterfaces()[0];
+ Type formType = MultivaluedMapImpl.class.getGenericInterfaces()[0];
MediaType contentType = context.getHttpHeaders().getMediaType();
if (contentType == null) {
contentType = MediaType.APPLICATION_FORM_URLENCODED_TYPE;
12 years, 11 months
exo-jcr SVN: r4451 - kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss.
by do-not-reply@jboss.org
Author: tolusha
Date: 2011-05-30 10:36:16 -0400 (Mon, 30 May 2011)
New Revision: 4451
Modified:
kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/ExoCacheFactoryImpl.java
Log:
EXOJCR-1346: fix violation
Modified: kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/ExoCacheFactoryImpl.java
===================================================================
--- kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/ExoCacheFactoryImpl.java 2011-05-30 14:10:16 UTC (rev 4450)
+++ kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/ExoCacheFactoryImpl.java 2011-05-30 14:36:16 UTC (rev 4451)
@@ -225,7 +225,8 @@
{
ExoContainer container = ExoContainerContext.getCurrentContainer();
ObjectName containerObjectName = container.getScopingObjectName();
- final String objectNameBase = (containerObjectName != null ? containerObjectName.toString() + "," : "exo:")+ "cache-name=" + cacheName;
+ final String objectNameBase =
+ (containerObjectName != null ? containerObjectName.toString() + "," : "exo:") + "cache-name=" + cacheName;
return new JmxRegistrationManager(container.getMBeanServer(), parentCache, objectNameBase)
{
public String getObjectName(String resourceName)
12 years, 11 months
exo-jcr SVN: r4450 - in jcr/trunk/exo.jcr.component.core/src: test/resources/conf/standalone and 1 other directory.
by do-not-reply@jboss.org
Author: tolusha
Date: 2011-05-30 10:10:16 -0400 (Mon, 30 May 2011)
New Revision: 4450
Modified:
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/portal/cluster/infinispan-data.xml
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/portal/cluster/infinispan-indexer.xml
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/portal/cluster/infinispan-lock.xml
jcr/trunk/exo.jcr.component.core/src/test/resources/conf/standalone/test-jbosscache-config.xml
Log:
EXOJCR-1346: configuration synchroniztion
Modified: jcr/trunk/exo.jcr.component.core/src/main/resources/conf/portal/cluster/infinispan-data.xml
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/resources/conf/portal/cluster/infinispan-data.xml 2011-05-30 08:09:49 UTC (rev 4449)
+++ jcr/trunk/exo.jcr.component.core/src/main/resources/conf/portal/cluster/infinispan-data.xml 2011-05-30 14:10:16 UTC (rev 4450)
@@ -31,7 +31,7 @@
</properties>
</evictionScheduledExecutor>
- <globalJmxStatistics jmxDomain="infinispan" enabled="true" allowDuplicateDomains="true"/>
+ <globalJmxStatistics jmxDomain="exo" enabled="true" allowDuplicateDomains="true"/>
<transport transportClass="org.infinispan.remoting.transport.jgroups.JGroupsTransport" clusterName="${infinispan-cluster-name}" distributedSyncTimeout="20000">
<properties>
Modified: jcr/trunk/exo.jcr.component.core/src/main/resources/conf/portal/cluster/infinispan-indexer.xml
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/resources/conf/portal/cluster/infinispan-indexer.xml 2011-05-30 08:09:49 UTC (rev 4449)
+++ jcr/trunk/exo.jcr.component.core/src/main/resources/conf/portal/cluster/infinispan-indexer.xml 2011-05-30 14:10:16 UTC (rev 4450)
@@ -31,7 +31,7 @@
</properties>
</evictionScheduledExecutor>
- <globalJmxStatistics jmxDomain="infinispan" enabled="true" allowDuplicateDomains="true"/>
+ <globalJmxStatistics jmxDomain="exo" enabled="true" allowDuplicateDomains="true"/>
<transport transportClass="org.infinispan.remoting.transport.jgroups.JGroupsTransport" clusterName="${infinispan-cluster-name}" distributedSyncTimeout="20000">
<properties>
Modified: jcr/trunk/exo.jcr.component.core/src/main/resources/conf/portal/cluster/infinispan-lock.xml
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/resources/conf/portal/cluster/infinispan-lock.xml 2011-05-30 08:09:49 UTC (rev 4449)
+++ jcr/trunk/exo.jcr.component.core/src/main/resources/conf/portal/cluster/infinispan-lock.xml 2011-05-30 14:10:16 UTC (rev 4450)
@@ -31,7 +31,7 @@
</properties>
</evictionScheduledExecutor>
- <globalJmxStatistics jmxDomain="infinispan" enabled="true" allowDuplicateDomains="true"/>
+ <globalJmxStatistics jmxDomain="exo" enabled="true" allowDuplicateDomains="true"/>
<transport transportClass="org.infinispan.remoting.transport.jgroups.JGroupsTransport" clusterName="${infinispan-cluster-name}" distributedSyncTimeout="20000">
<properties>
Modified: jcr/trunk/exo.jcr.component.core/src/test/resources/conf/standalone/test-jbosscache-config.xml
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/test/resources/conf/standalone/test-jbosscache-config.xml 2011-05-30 08:09:49 UTC (rev 4449)
+++ jcr/trunk/exo.jcr.component.core/src/test/resources/conf/standalone/test-jbosscache-config.xml 2011-05-30 14:10:16 UTC (rev 4450)
@@ -1,21 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.1">
- <locking useLockStriping="false" concurrencyLevel="500" lockParentForChildInsertRemove="false" lockAcquisitionTimeout="20000"/>
-
- <!-- Configure the TransactionManager -->
- <transaction transactionManagerLookupClass="org.jboss.cache.transaction.JBossStandaloneJTAManagerLookup" />
+ <locking useLockStriping="false" concurrencyLevel="500" lockParentForChildInsertRemove="false"
+ lockAcquisitionTimeout="20000" />
- <!-- Enable batching -->
- <invocationBatching enabled="true" />
-
- <!-- Eviction configuration -->
+ <!-- Eviction configuration -->
<eviction wakeUpInterval="5000">
- <default algorithmClass="org.jboss.cache.eviction.ExpirationAlgorithm" actionPolicyClass="org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.ParentNodeEvictionActionPolicy"
- eventQueueSize="1000000">
- <property name="maxNodes" value="50000" />
+ <default algorithmClass="org.jboss.cache.eviction.ExpirationAlgorithm"
+ actionPolicyClass="org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache.ParentNodeEvictionActionPolicy"
+ eventQueueSize="1000000">
+ <property name="maxNodes" value="1000000" />
<property name="warnNoExpirationKey" value="false" />
</default>
</eviction>
-
-</jbosscache>
+</jbosscache>
\ No newline at end of file
12 years, 11 months
exo-jcr SVN: r4449 - in core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl: tika and 1 other directory.
by do-not-reply@jboss.org
Author: dkuleshov
Date: 2011-05-30 04:09:49 -0400 (Mon, 30 May 2011)
New Revision: 4449
Modified:
core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/PDFDocumentReader.java
core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReader.java
Log:
EXOJCR-1186: applied changes back
Modified: core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/PDFDocumentReader.java
===================================================================
--- core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/PDFDocumentReader.java 2011-05-30 08:04:31 UTC (rev 4448)
+++ core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/PDFDocumentReader.java 2011-05-30 08:09:49 UTC (rev 4449)
@@ -28,6 +28,7 @@
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
import org.apache.pdfbox.pdmodel.common.PDMetadata;
import org.apache.pdfbox.util.PDFTextStripper;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.document.DCMetaData;
import org.exoplatform.services.document.DocumentReadException;
import org.exoplatform.services.log.ExoLogger;
@@ -36,7 +37,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
-import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.util.Calendar;
@@ -75,9 +75,9 @@
try
{
- return (String)AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
+ return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<String>()
{
- public Object run() throws Exception
+ public String run() throws Exception
{
if (is == null)
{
@@ -163,9 +163,9 @@
{
try
{
- return (Properties)AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
+ return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<Properties>()
{
- public Object run() throws Exception
+ public Properties run() throws Exception
{
if (is == null)
{
Modified: core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReader.java
===================================================================
--- core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReader.java 2011-05-30 08:04:31 UTC (rev 4448)
+++ core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReader.java 2011-05-30 08:09:49 UTC (rev 4449)
@@ -26,6 +26,7 @@
import org.apache.tika.sax.BodyContentHandler;
import org.apache.tika.sax.WriteOutContentHandler;
import org.exoplatform.commons.utils.QName;
+import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.document.AdvancedDocumentReader;
import org.exoplatform.services.document.DCMetaData;
import org.exoplatform.services.document.DocumentReadException;
@@ -36,7 +37,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
-import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.util.Properties;
@@ -71,10 +71,10 @@
{
try
{
- return (Reader)AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
+ return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<Reader>()
{
- public Object run() throws Exception
+ public Reader run() throws Exception
{
Metadata metadata = new Metadata();
metadata.set(Metadata.CONTENT_TYPE, mimeType);
@@ -107,10 +107,10 @@
{
try
{
- return (Reader)AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
+ return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<Reader>()
{
- public Object run() throws Exception
+ public Reader run() throws Exception
{
Metadata metadata = new Metadata();
metadata.set(Metadata.CONTENT_TYPE, mimeType);
@@ -143,10 +143,10 @@
{
try
{
- return (String)AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
+ return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<String>()
{
- public Object run() throws Exception
+ public String run() throws Exception
{
try
{
@@ -206,9 +206,9 @@
{
try
{
- return (String)AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
+ return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<String>()
{
- public Object run() throws Exception
+ public String run() throws Exception
{
try
{
@@ -273,10 +273,10 @@
{
try
{
- return (Properties)AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
+ return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<Properties>()
{
- public Object run() throws Exception
+ public Properties run() throws Exception
{
try
{
12 years, 11 months
exo-jcr SVN: r4448 - in core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl: tika and 1 other directory.
by do-not-reply@jboss.org
Author: dkuleshov
Date: 2011-05-30 04:04:31 -0400 (Mon, 30 May 2011)
New Revision: 4448
Modified:
core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/PDFDocumentReader.java
core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReader.java
Log:
EXOJCR-1186: reverted changes
Modified: core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/PDFDocumentReader.java
===================================================================
--- core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/PDFDocumentReader.java 2011-05-27 19:16:58 UTC (rev 4447)
+++ core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/PDFDocumentReader.java 2011-05-30 08:04:31 UTC (rev 4448)
@@ -28,7 +28,6 @@
import org.apache.pdfbox.pdmodel.PDDocumentInformation;
import org.apache.pdfbox.pdmodel.common.PDMetadata;
import org.apache.pdfbox.util.PDFTextStripper;
-import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.document.DCMetaData;
import org.exoplatform.services.document.DocumentReadException;
import org.exoplatform.services.log.ExoLogger;
@@ -37,6 +36,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
+import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.util.Calendar;
@@ -75,9 +75,9 @@
try
{
- return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<String>()
+ return (String)AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
{
- public String run() throws Exception
+ public Object run() throws Exception
{
if (is == null)
{
@@ -163,9 +163,9 @@
{
try
{
- return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<Properties>()
+ return (Properties)AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
{
- public Properties run() throws Exception
+ public Object run() throws Exception
{
if (is == null)
{
Modified: core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReader.java
===================================================================
--- core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReader.java 2011-05-27 19:16:58 UTC (rev 4447)
+++ core/trunk/exo.core.component.document/src/main/java/org/exoplatform/services/document/impl/tika/TikaDocumentReader.java 2011-05-30 08:04:31 UTC (rev 4448)
@@ -26,7 +26,6 @@
import org.apache.tika.sax.BodyContentHandler;
import org.apache.tika.sax.WriteOutContentHandler;
import org.exoplatform.commons.utils.QName;
-import org.exoplatform.commons.utils.SecurityHelper;
import org.exoplatform.services.document.AdvancedDocumentReader;
import org.exoplatform.services.document.DCMetaData;
import org.exoplatform.services.document.DocumentReadException;
@@ -37,6 +36,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
+import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.util.Properties;
@@ -71,10 +71,10 @@
{
try
{
- return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<Reader>()
+ return (Reader)AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
{
- public Reader run() throws Exception
+ public Object run() throws Exception
{
Metadata metadata = new Metadata();
metadata.set(Metadata.CONTENT_TYPE, mimeType);
@@ -107,10 +107,10 @@
{
try
{
- return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<Reader>()
+ return (Reader)AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
{
- public Reader run() throws Exception
+ public Object run() throws Exception
{
Metadata metadata = new Metadata();
metadata.set(Metadata.CONTENT_TYPE, mimeType);
@@ -143,10 +143,10 @@
{
try
{
- return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<String>()
+ return (String)AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
{
- public String run() throws Exception
+ public Object run() throws Exception
{
try
{
@@ -206,9 +206,9 @@
{
try
{
- return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<String>()
+ return (String)AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
{
- public String run() throws Exception
+ public Object run() throws Exception
{
try
{
@@ -273,10 +273,10 @@
{
try
{
- return SecurityHelper.doPrivilegedExceptionAction(new PrivilegedExceptionAction<Properties>()
+ return (Properties)AccessController.doPrivileged(new PrivilegedExceptionAction<Object>()
{
- public Properties run() throws Exception
+ public Object run() throws Exception
{
try
{
12 years, 11 months
exo-jcr SVN: r4447 - in jcr/branches/1.12.x/patch: 1.12.10-GA and 1 other directories.
by do-not-reply@jboss.org
Author: nfilotto
Date: 2011-05-27 15:16:58 -0400 (Fri, 27 May 2011)
New Revision: 4447
Added:
jcr/branches/1.12.x/patch/1.12.10-GA/
jcr/branches/1.12.x/patch/1.12.10-GA/JCR-1634/
jcr/branches/1.12.x/patch/1.12.10-GA/JCR-1634/JCR-1634.patch
Log:
JCR-1634: patch proposed
Added: jcr/branches/1.12.x/patch/1.12.10-GA/JCR-1634/JCR-1634.patch
===================================================================
--- jcr/branches/1.12.x/patch/1.12.10-GA/JCR-1634/JCR-1634.patch (rev 0)
+++ jcr/branches/1.12.x/patch/1.12.10-GA/JCR-1634/JCR-1634.patch 2011-05-27 19:16:58 UTC (rev 4447)
@@ -0,0 +1,432 @@
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java (revision 4445)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/CacheableLockManagerImpl.java (working copy)
+@@ -16,6 +16,7 @@
+ */
+ package org.exoplatform.services.jcr.impl.core.lock.jbosscache;
+
++import org.exoplatform.container.ExoContainerContext;
+ import org.exoplatform.container.configuration.ConfigurationManager;
+ import org.exoplatform.management.annotations.Managed;
+ import org.exoplatform.management.annotations.ManagedDescription;
+@@ -63,6 +64,7 @@
+ import org.jboss.cache.Node;
+ import org.jboss.cache.config.CacheLoaderConfig;
+ import org.jboss.cache.config.CacheLoaderConfig.IndividualCacheLoaderConfig;
++import org.jboss.cache.jmx.JmxRegistrationManager;
+ import org.jboss.cache.loader.CacheLoader;
+ import org.jboss.cache.loader.CacheLoaderManager;
+ import org.jboss.cache.lock.TimeoutException;
+@@ -168,9 +170,12 @@
+ */
+ private Map<String, CacheableSessionLockManager> sessionLockManagers;
+
++ private final JmxRegistrationManager jmxManager;
++
+ /**
+ * Constructor.
+ *
++ * @param ctx The container context
+ * @param dataManager - workspace persistent data manager
+ * @param config - workspace entry
+ * @param context InitialContextInitializer, needed to reload context after JBoss cache creation
+@@ -178,32 +183,33 @@
+ * the transaction service
+ * @throws RepositoryConfigurationException
+ */
+- public CacheableLockManagerImpl(WorkspacePersistentDataManager dataManager, WorkspaceEntry config,
++ public CacheableLockManagerImpl(ExoContainerContext ctx, WorkspacePersistentDataManager dataManager, WorkspaceEntry config,
+ InitialContextInitializer context, TransactionService transactionService, ConfigurationManager cfm,
+ LockRemoverHolder lockRemoverHolder) throws RepositoryConfigurationException, RepositoryException
+ {
+- this(dataManager, config, context, transactionService.getTransactionManager(), cfm, lockRemoverHolder);
++ this(ctx, dataManager, config, context, transactionService.getTransactionManager(), cfm, lockRemoverHolder);
+ }
+
+ /**
+ * Constructor.
+ *
++ * @param ctx The container context
+ * @param dataManager - workspace persistent data manager
+ * @param config - workspace entry
+ * @param context InitialContextInitializer, needed to reload context after JBoss cache creation
+ * @throws RepositoryConfigurationException
+ */
+- public CacheableLockManagerImpl(WorkspacePersistentDataManager dataManager, WorkspaceEntry config,
++ public CacheableLockManagerImpl(ExoContainerContext ctx, WorkspacePersistentDataManager dataManager, WorkspaceEntry config,
+ InitialContextInitializer context, ConfigurationManager cfm, LockRemoverHolder lockRemoverHolder)
+ throws RepositoryConfigurationException, RepositoryException
+ {
+- this(dataManager, config, context, (TransactionManager)null, cfm, lockRemoverHolder);
+-
++ this(ctx, dataManager, config, context, (TransactionManager)null, cfm, lockRemoverHolder);
+ }
+
+ /**
+ * Constructor.
+ *
++ * @param ctx The container context
+ * @param dataManager - workspace persistent data manager
+ * @param config - workspace entry
+ * @param context InitialContextInitializer, needed to reload context after JBoss cache creation
+@@ -211,7 +217,7 @@
+ * the transaction manager
+ * @throws RepositoryConfigurationException
+ */
+- public CacheableLockManagerImpl(WorkspacePersistentDataManager dataManager, WorkspaceEntry config,
++ public CacheableLockManagerImpl(ExoContainerContext ctx, WorkspacePersistentDataManager dataManager, WorkspaceEntry config,
+ InitialContextInitializer context, TransactionManager transactionManager, ConfigurationManager cfm,
+ LockRemoverHolder lockRemoverHolder) throws RepositoryConfigurationException, RepositoryException
+ {
+@@ -260,6 +266,11 @@
+ // Add the cache loader needed to prevent TimeoutException
+ addCacheLoader();
+ cache.start();
++ this.jmxManager = ExoJBossCacheFactory.getJmxRegistrationManager(ctx, cache, "LOCK_CACHE");
++ if (jmxManager != null)
++ {
++ jmxManager.registerAllMBeans();
++ }
+
+ createStructuredNode(lockRoot);
+
+@@ -786,6 +797,10 @@
+
+ sessionLockManagers.clear();
+ cache.stop();
++ if (jmxManager != null)
++ {
++ jmxManager.unregisterAllMBeans();
++ }
+ }
+
+ /**
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java (revision 4445)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java (working copy)
+@@ -18,9 +18,10 @@
+
+ import org.apache.lucene.index.IndexReader;
+ import org.apache.lucene.index.Term;
++import org.apache.lucene.search.BooleanClause.Occur;
+ import org.apache.lucene.search.BooleanQuery;
+ import org.apache.lucene.search.WildcardQuery;
+-import org.apache.lucene.search.BooleanClause.Occur;
++import org.exoplatform.container.ExoContainerContext;
+ import org.exoplatform.container.configuration.ConfigurationManager;
+ import org.exoplatform.services.document.DocumentReaderService;
+ import org.exoplatform.services.jcr.config.QueryHandlerEntry;
+@@ -134,10 +135,14 @@
+ protected LuceneVirtualTableResolver virtualTableResolver;
+
+ protected IndexerChangesFilter changesFilter;
++
++ private final ExoContainerContext ctx;
+
+ /**
+ * Creates a new <code>SearchManager</code>.
+ *
++ * @param ctx
++ * The eXo Container context in which the SearchManager is registered
+ * @param config
+ * the search configuration.
+ * @param nsReg
+@@ -159,12 +164,12 @@
+ * @throws RepositoryConfigurationException
+ */
+
+- public SearchManager(QueryHandlerEntry config, NamespaceRegistryImpl nsReg, NodeTypeDataManager ntReg,
++ public SearchManager(ExoContainerContext ctx, QueryHandlerEntry config, NamespaceRegistryImpl nsReg, NodeTypeDataManager ntReg,
+ WorkspacePersistentDataManager itemMgr, SystemSearchManagerHolder parentSearchManager,
+ DocumentReaderService extractor, ConfigurationManager cfm, final RepositoryIndexSearcherHolder indexSearcherHolder)
+ throws RepositoryException, RepositoryConfigurationException
+ {
+-
++ this.ctx = ctx;
+ this.extractor = extractor;
+ indexSearcherHolder.addIndexSearcher(this);
+ this.config = config;
+@@ -625,6 +630,14 @@
+ }
+
+ /**
++ * @return the ctx
++ */
++ public ExoContainerContext getExoContainerContext()
++ {
++ return ctx;
++ }
++
++ /**
+ * Initialize changes filter.
+ * @throws RepositoryException
+ * @throws RepositoryConfigurationException
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SystemSearchManager.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SystemSearchManager.java (revision 4445)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SystemSearchManager.java (working copy)
+@@ -16,6 +16,7 @@
+ */
+ package org.exoplatform.services.jcr.impl.core.query;
+
++import org.exoplatform.container.ExoContainerContext;
+ import org.exoplatform.container.configuration.ConfigurationManager;
+ import org.exoplatform.services.document.DocumentReaderService;
+ import org.exoplatform.services.jcr.config.QueryHandlerEntry;
+@@ -56,11 +57,11 @@
+
+ public static final String INDEX_DIR_SUFFIX = "system";
+
+- public SystemSearchManager(QueryHandlerEntry config, NamespaceRegistryImpl nsReg, NodeTypeDataManager ntReg,
++ public SystemSearchManager(ExoContainerContext ctx, QueryHandlerEntry config, NamespaceRegistryImpl nsReg, NodeTypeDataManager ntReg,
+ WorkspacePersistentDataManager itemMgr, DocumentReaderService service, ConfigurationManager cfm,
+ RepositoryIndexSearcherHolder indexSearcherHolder) throws RepositoryException, RepositoryConfigurationException
+ {
+- super(config, nsReg, ntReg, itemMgr, null, service, cfm, indexSearcherHolder);
++ super(ctx, config, nsReg, ntReg, itemMgr, null, service, cfm, indexSearcherHolder);
+ }
+
+ @Override
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java (revision 4445)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/jbosscache/JBossCacheIndexChangesFilter.java (working copy)
+@@ -38,6 +38,7 @@
+ import org.jboss.cache.config.CacheLoaderConfig;
+ import org.jboss.cache.config.CacheLoaderConfig.IndividualCacheLoaderConfig;
+ import org.jboss.cache.config.CacheLoaderConfig.IndividualCacheLoaderConfig.SingletonStoreConfig;
++import org.jboss.cache.jmx.JmxRegistrationManager;
+
+ import java.io.IOException;
+ import java.io.Serializable;
+@@ -60,6 +61,8 @@
+
+ private final Cache<Serializable, Object> cache;
+
++ private final JmxRegistrationManager jmxManager;
++
+ public static final String LISTWRAPPER = "$lists".intern();
+
+ /**
+@@ -117,6 +120,11 @@
+ this.cache.getConfiguration().setCacheLoaderConfig(cacheLoaderConfig);
+ this.cache.create();
+ this.cache.start();
++ this.jmxManager = ExoJBossCacheFactory.getJmxRegistrationManager(searchManager.getExoContainerContext(), cache, "INDEX_CACHE");
++ if (jmxManager != null)
++ {
++ jmxManager.registerAllMBeans();
++ }
+ // start will invoke cache listener which will notify handler that mode is changed
+ IndexerIoMode ioMode =
+ ((CacheSPI)cache).getRPCManager().isCoordinator() ? IndexerIoMode.READ_WRITE : IndexerIoMode.READ_ONLY;
+@@ -178,4 +186,23 @@
+ log.warn("Exception occure when errorLog writed. Error log is not complete. " + ioe, ioe);
+ }
+ }
++
++ /**
++ * @see java.lang.Object#finalize()
++ */
++ @Override
++ protected void finalize() throws Throwable
++ {
++ try
++ {
++ if (jmxManager != null)
++ {
++ jmxManager.unregisterAllMBeans();
++ }
++ }
++ finally
++ {
++ super.finalize();
++ }
++ }
+ }
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java (revision 4445)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java (working copy)
+@@ -18,6 +18,7 @@
+ */
+ package org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache;
+
++import org.exoplatform.container.ExoContainerContext;
+ import org.exoplatform.container.configuration.ConfigurationManager;
+ import org.exoplatform.services.jcr.access.AccessControlList;
+ import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
+@@ -46,6 +47,8 @@
+ import org.jboss.cache.Node;
+ import org.jboss.cache.config.EvictionRegionConfig;
+ import org.jboss.cache.eviction.ExpirationAlgorithmConfig;
++import org.jboss.cache.jmx.JmxRegistrationManager;
++import org.picocontainer.Startable;
+
+ import java.io.IOException;
+ import java.io.Serializable;
+@@ -95,7 +98,7 @@
+ * @author <a href="mailto:peter.nedonosko@exoplatform.com">Peter Nedonosko</a>
+ * @version $Id: JBossCacheWorkspaceStorageCache.java 13869 2008-05-05 08:40:10Z pnedonosko $
+ */
+-public class JBossCacheWorkspaceStorageCache implements WorkspaceStorageCache
++public class JBossCacheWorkspaceStorageCache implements WorkspaceStorageCache, Startable
+ {
+
+ private static final Log LOG = ExoLogger.getLogger("exo.jcr.component.core.JBossCacheWorkspaceStorageCache");
+@@ -140,6 +143,8 @@
+
+ protected final Fqn<String> childPropsList;
+
++ private JmxRegistrationManager jmxManager;
++
+ /**
+ * Node order comparator for getChildNodes().
+ */
+@@ -263,12 +268,13 @@
+ /**
+ * Cache constructor with eXo TransactionService support.
+ *
++ * @param ctx The container context
+ * @param wsConfig WorkspaceEntry workspace config
+ * @param transactionService TransactionService external transaction service
+ * @throws RepositoryException if error of initialization
+ * @throws RepositoryConfigurationException if error of configuration
+ */
+- public JBossCacheWorkspaceStorageCache(WorkspaceEntry wsConfig, TransactionService transactionService,
++ public JBossCacheWorkspaceStorageCache(ExoContainerContext ctx, WorkspaceEntry wsConfig, TransactionService transactionService,
+ ConfigurationManager cfm) throws RepositoryException, RepositoryConfigurationException
+ {
+ if (wsConfig.getCache() == null)
+@@ -314,9 +320,17 @@
+ LOG.info("Using BufferedJBossCache compatible with Expiration algorithm.");
+ }
+
++ if (ctx != null)
++ {
++ this.jmxManager = ExoJBossCacheFactory.getJmxRegistrationManager(ctx, parentCache, "JCR_CACHE");
++ if (jmxManager != null)
++ {
++ jmxManager.registerAllMBeans();
++ }
++ }
+ // if expiration is used, set appropriate factory with with timeout set via configuration (or default one 15minutes)
+ this.cache =
+- new BufferedJBossCache(factory.createCache(wsConfig.getCache()), useExpiration, wsConfig.getCache()
++ new BufferedJBossCache(parentCache, useExpiration, wsConfig.getCache()
+ .getParameterTime(JBOSSCACHE_EXPIRATION, JBOSSCACHE_EXPIRATION_DEFAULT));
+
+ this.itemsRoot = Fqn.fromElements(ITEMS);
+@@ -338,19 +352,52 @@
+ }
+
+ /**
++ * Cache constructor with eXo TransactionService support.
++ *
++ * @param wsConfig WorkspaceEntry workspace config
++ * @param transactionService TransactionService external transaction service
++ * @throws RepositoryException if error of initialization
++ * @throws RepositoryConfigurationException if error of configuration
++ */
++ public JBossCacheWorkspaceStorageCache(WorkspaceEntry wsConfig, TransactionService transactionService,
++ ConfigurationManager cfm) throws RepositoryException, RepositoryConfigurationException
++ {
++ this(null, wsConfig, transactionService, cfm);
++ }
++
++ /**
+ * Cache constructor with JBossCache JTA transaction support.
+ *
++ * @param ctx The container context
+ * @param wsConfig WorkspaceEntry workspace config
+ * @throws RepositoryException if error of initialization
+ * @throws RepositoryConfigurationException if error of configuration
+ */
+- public JBossCacheWorkspaceStorageCache(WorkspaceEntry wsConfig, ConfigurationManager cfm)
++ public JBossCacheWorkspaceStorageCache(ExoContainerContext ctx, WorkspaceEntry wsConfig, ConfigurationManager cfm)
+ throws RepositoryException, RepositoryConfigurationException
+ {
+- this(wsConfig, null, cfm);
++ this(ctx, wsConfig, null, cfm);
+ }
+
+ /**
++ * {@inheritDoc}
++ */
++ public void start()
++ {
++ }
++
++ /**
++ * {@inheritDoc}
++ */
++ public void stop()
++ {
++ if (jmxManager != null)
++ {
++ jmxManager.unregisterAllMBeans();
++ }
++ }
++
++ /**
+ * Checks if node with give FQN not exists and creates resident node.
+ * @param fqn
+ */
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/jbosscache/ExoJBossCacheFactory.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/jbosscache/ExoJBossCacheFactory.java (revision 4445)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/jbosscache/ExoJBossCacheFactory.java (working copy)
+@@ -18,6 +18,7 @@
+ */
+ package org.exoplatform.services.jcr.jbosscache;
+
++import org.exoplatform.container.ExoContainerContext;
+ import org.exoplatform.container.configuration.ConfigurationManager;
+ import org.exoplatform.services.jcr.config.MappedParametrizedObjectEntry;
+ import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
+@@ -27,11 +28,13 @@
+ import org.jboss.cache.Cache;
+ import org.jboss.cache.CacheFactory;
+ import org.jboss.cache.DefaultCacheFactory;
++import org.jboss.cache.jmx.JmxRegistrationManager;
+ import org.jgroups.JChannelFactory;
+
+ import java.io.IOException;
+ import java.io.InputStream;
+
++import javax.management.ObjectName;
+ import javax.transaction.TransactionManager;
+
+ /**
+@@ -181,4 +184,29 @@
+ }
+ return cache;
+ }
++
++ /**
++ * Gives the {@link JmxRegistrationManager} instance corresponding to the given context
++ */
++ public static JmxRegistrationManager getJmxRegistrationManager(ExoContainerContext ctx, Cache<?, ?> parentCache,
++ String cacheType)
++ {
++ try
++ {
++ ObjectName containerObjectName = ctx.getContainer().getScopingObjectName();
++ final String objectNameBase = containerObjectName.toString() + ",cache-type=" + cacheType;
++ return new JmxRegistrationManager(ctx.getContainer().getMBeanServer(), parentCache, objectNameBase)
++ {
++ public String getObjectName(String resourceName)
++ {
++ return objectNameBase + JMX_RESOURCE_KEY + resourceName;
++ }
++ };
++ }
++ catch (Exception e)
++ {
++ log.error("Could not create the JMX Manager", e);
++ }
++ return null;
++ }
+ }
12 years, 11 months
exo-jcr SVN: r4446 - in kernel/branches/2.2.x: patch and 2 other directories.
by do-not-reply@jboss.org
Author: nfilotto
Date: 2011-05-27 15:01:25 -0400 (Fri, 27 May 2011)
New Revision: 4446
Added:
kernel/branches/2.2.x/patch/
kernel/branches/2.2.x/patch/2.2.10-GA/
kernel/branches/2.2.x/patch/2.2.10-GA/KER-175/
kernel/branches/2.2.x/patch/2.2.10-GA/KER-175/KER-175.patch
Log:
KER-175: patch proposed
Added: kernel/branches/2.2.x/patch/2.2.10-GA/KER-175/KER-175.patch
===================================================================
--- kernel/branches/2.2.x/patch/2.2.10-GA/KER-175/KER-175.patch (rev 0)
+++ kernel/branches/2.2.x/patch/2.2.10-GA/KER-175/KER-175.patch 2011-05-27 19:01:25 UTC (rev 4446)
@@ -0,0 +1,254 @@
+Index: exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/ExoCacheFactoryImpl.java
+===================================================================
+--- exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/ExoCacheFactoryImpl.java (revision 4445)
++++ exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/ExoCacheFactoryImpl.java (working copy)
+@@ -18,6 +18,8 @@
+ */
+ package org.exoplatform.services.cache.impl.jboss;
+
++import org.exoplatform.container.ExoContainer;
++import org.exoplatform.container.ExoContainerContext;
+ import org.exoplatform.container.configuration.ConfigurationManager;
+ import org.exoplatform.container.xml.InitParams;
+ import org.exoplatform.container.xml.ValueParam;
+@@ -32,16 +34,21 @@
+ import org.jboss.cache.CacheFactory;
+ import org.jboss.cache.DefaultCacheFactory;
+ import org.jboss.cache.config.Configuration;
++import org.jboss.cache.config.Configuration.CacheMode;
+ import org.jboss.cache.config.EvictionConfig;
+ import org.jboss.cache.config.EvictionRegionConfig;
+-import org.jboss.cache.config.Configuration.CacheMode;
++import org.jboss.cache.jmx.JmxRegistrationManager;
++import org.picocontainer.Startable;
+
+ import java.io.Serializable;
+ import java.util.HashMap;
+ import java.util.LinkedList;
+ import java.util.List;
+ import java.util.Map;
++import java.util.concurrent.CopyOnWriteArrayList;
+
++import javax.management.ObjectName;
++
+ /**
+ * This class is the JBoss Cache implementation of the {@link org.exoplatform.services.cache.ExoCacheFactory}
+ * Created by The eXo Platform SAS
+@@ -49,7 +56,7 @@
+ * exo(a)exoplatform.com
+ * 17 juil. 2009
+ */
+-public class ExoCacheFactoryImpl implements ExoCacheFactory
++public class ExoCacheFactoryImpl implements ExoCacheFactory, Startable
+ {
+
+ /**
+@@ -90,6 +97,11 @@
+ private final Map<String, String> mappingCacheNameConfig = new HashMap<String, String>();
+
+ /**
++ * The list of all the JMX Managers registered
++ */
++ private final List<JmxRegistrationManager> jmxManagers = new CopyOnWriteArrayList<JmxRegistrationManager>();
++
++ /**
+ * The default creator
+ */
+ private final ExoCacheCreator defaultCreator = new FIFOExoCacheCreator();
+@@ -149,6 +161,13 @@
+ cache.create();
+ // Start the cache
+ cache.start();
++ // Create JMX Manager for this cache instance
++ JmxRegistrationManager jmxManager = getJmxRegistrationManager(cache, region);
++ if (jmxManager != null)
++ {
++ jmxManager.registerAllMBeans();
++ jmxManagers.add(jmxManager);
++ }
+ }
+ catch (Exception e)
+ {
+@@ -156,8 +175,34 @@
+ }
+ return eXoCache;
+ }
+-
++
+ /**
++ * Gives the {@link JmxRegistrationManager} instance corresponding to the given context
++ */
++ private static JmxRegistrationManager getJmxRegistrationManager(Cache<?, ?> parentCache,
++ String cacheName)
++ {
++ try
++ {
++ ExoContainer container = ExoContainerContext.getCurrentContainer();
++ ObjectName containerObjectName = container.getScopingObjectName();
++ final String objectNameBase = (containerObjectName != null ? containerObjectName.toString() + "," : "exo:")+ "cache-name=" + cacheName;
++ return new JmxRegistrationManager(container.getMBeanServer(), parentCache, objectNameBase)
++ {
++ public String getObjectName(String resourceName)
++ {
++ return objectNameBase + JMX_RESOURCE_KEY + resourceName;
++ }
++ };
++ }
++ catch (Exception e)
++ {
++ LOG.error("Could not create the JMX Manager", e);
++ }
++ return null;
++ }
++
++ /**
+ * Add a list of creators to register
+ * @param plugin the plugin that contains the creators
+ */
+@@ -245,4 +290,22 @@
+ config.setClusterName(clusterName + " " + region);
+ }
+ }
++
++ /**
++ * @see org.picocontainer.Startable#start()
++ */
++ public void start()
++ {
++ }
++
++ /**
++ * @see org.picocontainer.Startable#stop()
++ */
++ public void stop()
++ {
++ for (JmxRegistrationManager jmxManager : jmxManagers)
++ {
++ jmxManager.unregisterAllMBeans();
++ }
++ }
+ }
+Index: exo.kernel.container/src/test/java/org/exoplatform/container/TestPortalContainer.java
+===================================================================
+--- exo.kernel.container/src/test/java/org/exoplatform/container/TestPortalContainer.java (revision 4445)
++++ exo.kernel.container/src/test/java/org/exoplatform/container/TestPortalContainer.java (working copy)
+@@ -31,6 +31,19 @@
+ */
+ public class TestPortalContainer extends AbstractTestContainer
+ {
++
++ public void testHasScopingObjectName()
++ {
++ URL rootURL = getClass().getResource("empty-config.xml");
++ URL portalURL = getClass().getResource("empty-config.xml");
++ assertNotNull(rootURL);
++ assertNotNull(portalURL);
++ //
++ new ContainerBuilder().withRoot(rootURL).withPortal(portalURL).build();
++ assertNull(RootContainer.getInstance().getScopingObjectName());
++ assertNotNull(PortalContainer.getInstance().getScopingObjectName());
++ }
++
+ public void testInitValues()
+ {
+ createRootContainer("portal-container-config-with-settings.xml");
+Index: exo.kernel.container/src/main/java/org/exoplatform/container/management/ManageableContainer.java
+===================================================================
+--- exo.kernel.container/src/main/java/org/exoplatform/container/management/ManageableContainer.java (revision 4445)
++++ exo.kernel.container/src/main/java/org/exoplatform/container/management/ManageableContainer.java (working copy)
+@@ -25,8 +25,12 @@
+ import org.exoplatform.management.annotations.Managed;
+ import org.exoplatform.management.annotations.ManagedDescription;
+ import org.exoplatform.management.annotations.ManagedName;
++import org.exoplatform.management.jmx.impl.JMX;
+ import org.exoplatform.management.jmx.impl.JMXManagementProvider;
++import org.exoplatform.management.jmx.impl.MBeanScopingData;
+ import org.exoplatform.management.spi.ManagementProvider;
++import org.exoplatform.services.log.ExoLogger;
++import org.exoplatform.services.log.Log;
+ import org.picocontainer.ComponentAdapter;
+ import org.picocontainer.PicoContainer;
+ import org.picocontainer.PicoException;
+@@ -37,9 +41,13 @@
+ import java.util.Collection;
+ import java.util.Collections;
+ import java.util.HashSet;
++import java.util.LinkedHashMap;
++import java.util.List;
++import java.util.Map;
+ import java.util.Set;
+
+ import javax.management.MBeanServer;
++import javax.management.ObjectName;
+
+ /**
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
+@@ -48,6 +56,11 @@
+ public class ManageableContainer extends CachingContainer
+ {
+
++ /**
++ * The logger
++ */
++ private static final Log LOG = ExoLogger.getLogger("org.exoplatform.container.management.ManageableContainer");
++
+ private static MBeanServer findMBeanServer()
+ {
+ J2EEServerInfo serverenv_ = new J2EEServerInfo();
+@@ -63,6 +76,9 @@
+ /** . */
+ private MBeanServer server;
+
++ private volatile boolean objectNameSet;
++ private ObjectName objectName;
++
+ /** . */
+ private final Set<ManagementProvider> providers;
+
+@@ -163,6 +179,46 @@
+ return super.registerComponent(componentAdapter);
+ }
+
++ /**
++ * Gives the ObjectName of the container build from the scoping data
++ * @return
++ */
++ public ObjectName getScopingObjectName()
++ {
++ if (!objectNameSet)
++ {
++ synchronized (this)
++ {
++ if (!objectNameSet)
++ {
++ Map<String, String> props = new LinkedHashMap<String, String>();
++
++ // Merge scoping properties
++ List<MBeanScopingData> list = managementContext.getScopingData(MBeanScopingData.class);
++ if (list != null && !list.isEmpty())
++ {
++ // Read in revert order because wee received list of parents in upward order
++ for (int i = list.size(); i > 0; i--)
++ {
++ MBeanScopingData scopingData = list.get(i - 1);
++ props.putAll(scopingData);
++ }
++ try
++ {
++ this.objectName = JMX.createObjectName("exo", props);
++ }
++ catch (Exception e)
++ {
++ LOG.error("Could not create the object name", e);
++ }
++ }
++ this.objectNameSet = true;
++ }
++ }
++ }
++ return objectName;
++ }
++
+ public ComponentAdapter registerComponentInstance(Object componentKey, Object componentInstance)
+ throws PicoRegistrationException
+ {
12 years, 11 months