exo-jcr SVN: r4330 - jcr/trunk/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav.
by do-not-reply@jboss.org
Author: aparfonov
Date: 2011-04-29 04:15:31 -0400 (Fri, 29 Apr 2011)
New Revision: 4330
Modified:
jcr/trunk/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavServiceImpl.java
Log:
EXOJCR-1326
Modified: jcr/trunk/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavServiceImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavServiceImpl.java 2011-04-29 07:48:18 UTC (rev 4329)
+++ jcr/trunk/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavServiceImpl.java 2011-04-29 08:15:31 UTC (rev 4330)
@@ -197,6 +197,8 @@
*/
private static final String ALLOW;
+ private final MimeTypeResolver mimeTypeResolver;
+
static
{
StringBuffer sb = new StringBuffer();
@@ -300,7 +302,8 @@
}
}
-
+ this.mimeTypeResolver = new MimeTypeResolver();
+ this.mimeTypeResolver.setDefaultMimeType(defaultFileMimeType);
}
/**
@@ -382,6 +385,8 @@
}
}
+ this.mimeTypeResolver = new MimeTypeResolver();
+ this.mimeTypeResolver.setDefaultMimeType(defaultFileMimeType);
}
/**
@@ -396,6 +401,8 @@
this.sessionProviderService = sessionProviderService;
this.repositoryService = repositoryService;
this.nullResourceLocks = new NullResourceLocksHolder();
+ this.mimeTypeResolver = new MimeTypeResolver();
+ this.mimeTypeResolver.setDefaultMimeType(defaultFileMimeType);
}
/**
@@ -1135,8 +1142,6 @@
if (mediatype == null)
{
- MimeTypeResolver mimeTypeResolver = new MimeTypeResolver();
- mimeTypeResolver.setDefaultMimeType(defaultFileMimeType);
mimeType = mimeTypeResolver.getMimeType(TextUtil.nameOnly(repoPath));
}
else
13 years, 2 months
exo-jcr SVN: r4329 - kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils.
by do-not-reply@jboss.org
Author: aparfonov
Date: 2011-04-29 03:48:18 -0400 (Fri, 29 Apr 2011)
New Revision: 4329
Modified:
kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/MimeTypeResolver.java
Log:
EXOJCR-1325 : make possible to set location of mimetypes properties file via system property org.exoplatform.mimetypes. Context classloader is used for load specified file.
Modified: kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/MimeTypeResolver.java
===================================================================
--- kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/MimeTypeResolver.java 2011-04-28 13:23:28 UTC (rev 4328)
+++ kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/MimeTypeResolver.java 2011-04-29 07:48:18 UTC (rev 4329)
@@ -19,6 +19,7 @@
package org.exoplatform.commons.utils;
import java.io.IOException;
+import java.io.InputStream;
import java.security.PrivilegedExceptionAction;
import java.util.ArrayList;
import java.util.HashMap;
@@ -42,7 +43,21 @@
{
public Void run() throws Exception
{
- Scanner scanner = new Scanner(getClass().getResourceAsStream("mimetypes.properties"), "ISO-8859-1");
+ Scanner scanner = null;
+ String mimeTypeProperties = System.getProperty("org.exoplatform.mimetypes");
+ if (mimeTypeProperties != null)
+ {
+ InputStream stream =
+ Thread.currentThread().getContextClassLoader().getResourceAsStream(mimeTypeProperties);
+ if (stream != null)
+ {
+ scanner = new Scanner(stream, "ISO-8859-1");
+ }
+ }
+ if (scanner == null)
+ {
+ scanner = new Scanner(getClass().getResourceAsStream("mimetypes.properties"), "ISO-8859-1");
+ }
try
{
while (scanner.hasNextLine())
13 years, 2 months
exo-jcr SVN: r4328 - in kernel/trunk: exo.kernel.commons/src/main/java/org/exoplatform/commons/utils and 28 other directories.
by do-not-reply@jboss.org
Author: areshetnyak
Date: 2011-04-28 09:23:28 -0400 (Thu, 28 Apr 2011)
New Revision: 4328
Modified:
kernel/trunk/exo.kernel.commons.test/src/main/java/org/exoplatform/commons/test/TestSecurityManager.java
kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/debug/ObjectDebuger.java
kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/IdentifierUtil.java
kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/LazyList.java
kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/QName.java
kernel/trunk/exo.kernel.component.cache/src/main/java/org/exoplatform/services/cache/impl/CacheServiceImpl.java
kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/compress/CompressData.java
kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/exception/ExoServiceException.java
kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/idgenerator/impl/IDGeneratorServiceImpl.java
kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/naming/SimpleContext.java
kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/rpc/impl/RPCServiceImpl.java
kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/scheduler/impl/QueueTaskJob.java
kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v4/src/main/java/org/exoplatform/services/cache/impl/infinispan/ExoCacheCreator.java
kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v4/src/main/java/org/exoplatform/services/cache/impl/infinispan/ExoCacheFactoryImpl.java
kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v4/src/main/java/org/exoplatform/services/cache/impl/infinispan/generic/GenericExoCacheCreator.java
kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/ExoCacheCreator.java
kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/ea/EAExoCacheCreator.java
kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/fifo/FIFOExoCacheCreator.java
kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/lfu/LFUExoCacheCreator.java
kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/lru/LRUExoCacheCreator.java
kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/mru/MRUExoCacheCreator.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/RootContainer.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/StandaloneContainer.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/client/http/ClientTypeMap.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/component/RequestLifeCycleStack.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/ConfigurationUnmarshaller.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManageableContainer.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManagementContextImpl.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/MetaDataBuilder.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/monitor/jvm/J2EEServerInfo.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/monitor/jvm/MemoryInfo.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/util/ExoWurflSource.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/xml/ObjectParam.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/ExoMBeanInfoBuilder.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/JMXManagementProvider.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/xml/object/XMLObject.java
kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int/src/main/java/org/exoplatform/container/mc/impl/MCComponentAdapter.java
kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int/src/main/java/org/exoplatform/container/mc/impl/MCIntConfig.java
Log:
EXOJCR-1221 : The same violations was fixed in KERNEL.
Modified: kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/debug/ObjectDebuger.java
===================================================================
--- kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/debug/ObjectDebuger.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/debug/ObjectDebuger.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -18,6 +18,9 @@
*/
package org.exoplatform.commons.debug;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
+
import java.lang.reflect.Field;
import java.util.Collection;
import java.util.HashMap;
@@ -33,6 +36,11 @@
*/
public class ObjectDebuger
{
+ /**
+ * The logger
+ */
+ private static final Log LOG = ExoLogger.getLogger("org.exoplatform.commons.debug.ObjectDebuger");
+
static public void printObject(Object o) throws Exception
{
// System. out.println(asString(o)) ;
@@ -53,7 +61,7 @@
}
catch (Exception ex)
{
- ex.printStackTrace();
+ LOG.error(ex.getLocalizedMessage(), ex);
b.append("\n").append(ex.getMessage());
}
return b.toString();
Modified: kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/IdentifierUtil.java
===================================================================
--- kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/IdentifierUtil.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/IdentifierUtil.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -18,6 +18,9 @@
*/
package org.exoplatform.commons.utils;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
+
import java.net.InetAddress;
import java.security.SecureRandom;
@@ -31,6 +34,11 @@
public class IdentifierUtil
{
+ /**
+ * The logger
+ */
+ private static final Log LOG = ExoLogger.getLogger("org.exoplatform.commons.utils.IdentifierUtil");
+
private static String hexServerIP_ = null;
private static final SecureRandom seeder_ = new SecureRandom();
@@ -54,7 +62,7 @@
// "ContentSetUtil: Could not get the local IP address using InetAddress.getLocalHost()!"
// );
// todo: find better way to get around this...
- uhe.printStackTrace();
+ LOG.error(uhe.getLocalizedMessage(), uhe);
return null;
}
byte serverIP[] = localInetAddress.getAddress();
Modified: kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/LazyList.java
===================================================================
--- kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/LazyList.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/LazyList.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -18,6 +18,9 @@
*/
package org.exoplatform.commons.utils;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
+
import java.lang.ref.Reference;
import java.lang.ref.SoftReference;
import java.util.AbstractList;
@@ -48,6 +51,11 @@
public class LazyList<E> extends AbstractList<E> implements RandomAccess
{
+ /**
+ * The logger
+ */
+ private static final Log LOG = ExoLogger.getLogger("org.exoplatform.commons.utils.LazyList");
+
/** The batch size. */
private final int batchSize;
@@ -114,7 +122,7 @@
}
catch (Exception e)
{
- e.printStackTrace();
+ LOG.error(e.getLocalizedMessage(), e);
throw new IllegalStateException("Cannot load resource at index " + index, e);
}
}
Modified: kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/QName.java
===================================================================
--- kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/QName.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.commons/src/main/java/org/exoplatform/commons/utils/QName.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -37,18 +37,18 @@
protected final int hashCode;
public QName(String namespace, String name)
- {
- if (namespace == null)
- {
- namespace = "";
- }
- if (name == null)
- {
- name = "";
- }
- String stringName = ("[" + namespace + "]" + name);
- int hashCode = (31 + namespace.hashCode()) * 31 + name.hashCode();
-
+ {
+ if (namespace == null)
+ {
+ namespace = "";
+ }
+ if (name == null)
+ {
+ name = "";
+ }
+ String stringName = ("[" + namespace + "]" + name);
+ int hashCode = (31 + namespace.hashCode()) * 31 + name.hashCode();
+
//
this.namespace = namespace;
this.name = name;
@@ -95,7 +95,7 @@
if (!(o instanceof QName))
return false;
- return hashCode == o.hashCode() && getAsString().equals(((QName)o).getAsString());
+ return hashCode == o.hashCode() && getAsString().equals(((QName) o).getAsString());
}
@Override
Modified: kernel/trunk/exo.kernel.commons.test/src/main/java/org/exoplatform/commons/test/TestSecurityManager.java
===================================================================
--- kernel/trunk/exo.kernel.commons.test/src/main/java/org/exoplatform/commons/test/TestSecurityManager.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.commons.test/src/main/java/org/exoplatform/commons/test/TestSecurityManager.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -73,7 +73,7 @@
else if (className.startsWith("org.apache.jackrabbit.test"))
{
if (fileName.endsWith("Test.java") || fileName.equals("JCRTestResult.java")
- || fileName.equals("RepositoryHelper.java") || fileName.equals("RepositoryStub.java"))
+ || fileName.equals("RepositoryHelper.java") || fileName.equals("RepositoryStub.java"))
{
testCode = true;
}
@@ -93,7 +93,8 @@
// if (!se
// .getMessage()
// .equals(
- // "access denied (java.lang.RuntimePermission accessClassInPackage.com.sun.xml.internal.bind.v2.runtime.reflect)"))
+ // "access denied (java.lang.RuntimePermission
+ // accessClassInPackage.com.sun.xml.internal.bind.v2.runtime.reflect)"))
// {
// se.printStackTrace();
// }
Modified: kernel/trunk/exo.kernel.component.cache/src/main/java/org/exoplatform/services/cache/impl/CacheServiceImpl.java
===================================================================
--- kernel/trunk/exo.kernel.component.cache/src/main/java/org/exoplatform/services/cache/impl/CacheServiceImpl.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.component.cache/src/main/java/org/exoplatform/services/cache/impl/CacheServiceImpl.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -203,7 +203,8 @@
public Collection<ExoCache<? extends Serializable, ?>> getAllCacheInstances()
{
- Collection<ExoCache<? extends Serializable, ?>> caches = new ArrayList<ExoCache<? extends Serializable,?>>(cacheMap_.size());
+ Collection<ExoCache<? extends Serializable, ?>> caches =
+ new ArrayList<ExoCache<? extends Serializable,?>>(cacheMap_.size());
for (FutureTask<ExoCache<? extends Serializable,?>> task : cacheMap_.values())
{
ExoCache<? extends Serializable, ?> cache = null;
Modified: kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/compress/CompressData.java
===================================================================
--- kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/compress/CompressData.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/compress/CompressData.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -19,6 +19,8 @@
package org.exoplatform.services.compress;
import org.exoplatform.commons.utils.PrivilegedFileHelper;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -43,6 +45,11 @@
*/
public class CompressData
{
+ /**
+ * The logger
+ */
+ private static final Log LOG = ExoLogger.getLogger("org.exoplatform.services.compress.CompressData");
+
private String base_;
private List<DataInstance> datas_ = new ArrayList<DataInstance>();
@@ -61,7 +68,7 @@
base_ = base;
}
- private String getBase()
+ public String getBase()
{
return base_;
}
@@ -75,7 +82,7 @@
}
catch (FileNotFoundException e)
{
- e.printStackTrace();
+ LOG.error(e.getLocalizedMessage(), e);
}
}
@@ -296,7 +303,7 @@
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
- if (getType() == "Zip")
+ if (getType().equals("Zip"))
{
ZipOutputStream zos = new ZipOutputStream(baos);
try
@@ -305,7 +312,7 @@
}
catch (Exception e)
{
- e.printStackTrace();
+ LOG.error(e.getLocalizedMessage(), e);
}
}
else
@@ -318,7 +325,7 @@
}
catch (Exception e)
{
- e.printStackTrace();
+ LOG.error(e.getLocalizedMessage(), e);
}
}
InputStream is = new ByteArrayInputStream(baos.toByteArray());
@@ -329,7 +336,7 @@
}
catch (IOException e)
{
- e.printStackTrace();
+ LOG.error(e.getLocalizedMessage(), e);
}
return is;
Modified: kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/exception/ExoServiceException.java
===================================================================
--- kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/exception/ExoServiceException.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/exception/ExoServiceException.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -18,6 +18,9 @@
*/
package org.exoplatform.services.exception;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
+
/**
* @author: Tuan Nguyen
* @version: $Id: ExoServiceException.java 5332 2006-04-29 18:32:44Z geaz $
@@ -26,6 +29,11 @@
*/
public class ExoServiceException extends Exception
{
+ /**
+ * The logger
+ */
+ private static final Log LOG = ExoLogger.getLogger("org.exoplatform.services.exception.ExoServiceException");
+
protected Object[] params_;
protected String key_ = "SystemException";
@@ -39,7 +47,7 @@
public ExoServiceException(Throwable ex)
{
super(ex.getMessage());
- ex.printStackTrace();
+ LOG.error(ex.getLocalizedMessage(), ex);
}
public ExoServiceException(String s)
Modified: kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/idgenerator/impl/IDGeneratorServiceImpl.java
===================================================================
--- kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/idgenerator/impl/IDGeneratorServiceImpl.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/idgenerator/impl/IDGeneratorServiceImpl.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -19,6 +19,8 @@
package org.exoplatform.services.idgenerator.impl;
import org.exoplatform.services.idgenerator.IDGeneratorService;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
import java.io.Serializable;
import java.net.InetAddress;
@@ -31,6 +33,11 @@
*/
public class IDGeneratorServiceImpl implements IDGeneratorService
{
+ /**
+ * The logger
+ */
+ private static final Log LOG = ExoLogger.getLogger("org.exoplatform.services.idgenerator.impl.IDGeneratorServiceImpl");
+
private static String hexServerIP_ = null;
private static final SecureRandom seeder_ = new SecureRandom();
@@ -69,7 +76,7 @@
// "ContentSetUtil: Could not get the local IP address using InetAddress.getLocalHost()!"
// );
// todo: find better way to get around this...
- uhe.printStackTrace();
+ LOG.error(uhe.getLocalizedMessage(), uhe);
return null;
}
byte serverIP[] = localInetAddress.getAddress();
Modified: kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/naming/SimpleContext.java
===================================================================
--- kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/naming/SimpleContext.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/naming/SimpleContext.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -19,6 +19,8 @@
package org.exoplatform.services.naming;
import org.exoplatform.commons.utils.SecurityHelper;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
import java.security.PrivilegedExceptionAction;
import java.util.Hashtable;
@@ -43,6 +45,11 @@
public class SimpleContext implements Context
{
+
+ /**
+ * The logger
+ */
+ private static final Log LOG = ExoLogger.getLogger("org.exoplatform.services.naming.SimpleContext");
private static Hashtable objects = new Hashtable();
@@ -75,7 +82,7 @@
}
catch (Exception e)
{
- e.printStackTrace();
+ LOG.error(e.getLocalizedMessage(), e);
throw new NamingException("Exception: " + e);
}
}
@@ -142,8 +149,7 @@
public NamingEnumeration<Binding> listBindings(String arg0) throws NamingException
{
- // TODO Auto-generated method stub
- return null;
+ throw new NamingException("Not supported");
}
public void destroySubcontext(Name arg0) throws NamingException
Modified: kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/rpc/impl/RPCServiceImpl.java
===================================================================
--- kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/rpc/impl/RPCServiceImpl.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/rpc/impl/RPCServiceImpl.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -373,7 +373,8 @@
if (coordinator.equals(this.coordinator))
{
if (LOG.isTraceEnabled())
- LOG.trace("The coordinator did not change yet, we will relaunch the command after " + retryTimeout + " ms or once a topology change has been detected");
+ LOG.trace("The coordinator did not change yet, we will relaunch the command after "
+ + retryTimeout + " ms or once a topology change has been detected");
try
{
topologyChangeLock.wait(retryTimeout);
@@ -640,7 +641,7 @@
if (state != State.STARTED)
{
throw new RPCException("Cannot know whether the local node is a coordinator or not if " +
- "the service is not started, the current state of the service is " + state);
+ "the service is not started, the current state of the service is " + state);
}
return isCoordinator;
}
Modified: kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/scheduler/impl/QueueTaskJob.java
===================================================================
--- kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/scheduler/impl/QueueTaskJob.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.component.common/src/main/java/org/exoplatform/services/scheduler/impl/QueueTaskJob.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -23,7 +23,10 @@
import org.exoplatform.services.scheduler.JobContext;
import org.exoplatform.services.scheduler.QueueTasks;
import org.exoplatform.services.scheduler.Task;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
+
/**
* Created by The eXo Platform SAS Author : Hoa Pham
* hoapham@exoplatform.com,phamvuxuanhoa(a)yahoo.com Oct 7, 2005
@@ -32,6 +35,11 @@
*/
public class QueueTaskJob extends BaseJob
{
+ /**
+ * The logger
+ */
+ private static final Log LOG = ExoLogger.getLogger("org.exoplatform.services.scheduler.impl.QueueTaskJob");
+
public void execute(JobContext context) throws Exception
{
PortalContainer manager = PortalContainer.getInstance();
@@ -45,7 +53,7 @@
}
catch (Exception ex)
{
- ex.printStackTrace();
+ LOG.error(ex.getLocalizedMessage(), ex);
}
task = qtasks.poll();
}
Modified: kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v4/src/main/java/org/exoplatform/services/cache/impl/infinispan/ExoCacheCreator.java
===================================================================
--- kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v4/src/main/java/org/exoplatform/services/cache/impl/infinispan/ExoCacheCreator.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v4/src/main/java/org/exoplatform/services/cache/impl/infinispan/ExoCacheCreator.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -45,7 +45,8 @@
* @param cacheGetter a {@link Callable} instance from which we can get the cache
* @exception ExoCacheInitException if an exception happens while initializing the cache
*/
- public ExoCache<Serializable, Object> create(ExoCacheConfig config, Configuration cacheConfig, Callable<Cache<Serializable, Object>> cacheGetter) throws ExoCacheInitException;
+ public ExoCache<Serializable, Object> create(ExoCacheConfig config, Configuration cacheConfig,
+ Callable<Cache<Serializable, Object>> cacheGetter) throws ExoCacheInitException;
/**
* Returns the type of {@link org.exoplatform.services.cache.ExoCacheConfig} expected by the creator
Modified: kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v4/src/main/java/org/exoplatform/services/cache/impl/infinispan/ExoCacheFactoryImpl.java
===================================================================
--- kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v4/src/main/java/org/exoplatform/services/cache/impl/infinispan/ExoCacheFactoryImpl.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v4/src/main/java/org/exoplatform/services/cache/impl/infinispan/ExoCacheFactoryImpl.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -104,7 +104,8 @@
/**
* The mapping between the global configuration and the cache managers
*/
- private final Map<GlobalConfiguration, DefaultCacheManager> mappingGlobalConfigCacheManager = new HashMap<GlobalConfiguration, DefaultCacheManager>();
+ private final Map<GlobalConfiguration, DefaultCacheManager> mappingGlobalConfigCacheManager =
+ new HashMap<GlobalConfiguration, DefaultCacheManager>();
/**
* The default creator
Modified: kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v4/src/main/java/org/exoplatform/services/cache/impl/infinispan/generic/GenericExoCacheCreator.java
===================================================================
--- kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v4/src/main/java/org/exoplatform/services/cache/impl/infinispan/generic/GenericExoCacheCreator.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v4/src/main/java/org/exoplatform/services/cache/impl/infinispan/generic/GenericExoCacheCreator.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -80,7 +80,7 @@
}
/**
- * @see org.exoplatform.services.cache.impl.infinispan.ExoCacheCreator#create(org.exoplatform.services.cache.ExoCacheConfig, java.util.concurrent.Callable)
+ * {@inheritDoc}
*/
public ExoCache<Serializable, Object> create(ExoCacheConfig config, Configuration cacheConfig,
Callable<Cache<Serializable, Object>> cacheGetter) throws ExoCacheInitException
@@ -166,7 +166,8 @@
}
@ManagedName("Lifespan")
- @ManagedDescription("Maximum lifespan of a cache entry, after which the entry is expired cluster-wide. -1 means the entries never expire.")
+ @ManagedDescription("Maximum lifespan of a cache entry, after which the entry is expired cluster-wide." +
+ " -1 means the entries never expire.")
public long getLiveTime()
{
return cacheConfig.getExpirationLifespan();
@@ -174,7 +175,8 @@
@Managed
@ManagedName("MaxIdle")
- @ManagedDescription("Maximum idle time a cache entry will be maintained in the cache. If the idle time is exceeded, the entry will be expired cluster-wide. -1 means the entries never expire.")
+ @ManagedDescription("Maximum idle time a cache entry will be maintained in the cache. " +
+ "If the idle time is exceeded, the entry will be expired cluster-wide. -1 means the entries never expire.")
public long getMaxIdle()
{
return cacheConfig.getExpirationMaxIdle();
@@ -182,7 +184,8 @@
@Managed
@ManagedName("WakeUpInterval")
- @ManagedDescription("Interval between subsequent eviction runs. If you wish to disable the periodic eviction process altogether, set wakeupInterval to -1.")
+ @ManagedDescription("Interval between subsequent eviction runs. If you wish to disable the periodic eviction " +
+ "process altogether, set wakeupInterval to -1.")
public long getWakeUpInterval()
{
return cacheConfig.getEvictionWakeUpInterval();
Modified: kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/ExoCacheCreator.java
===================================================================
--- kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/ExoCacheCreator.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/ExoCacheCreator.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -43,7 +43,8 @@
* @param cache the cache to initialize
* @exception ExoCacheInitException if an exception happens while initializing the cache
*/
- public ExoCache<Serializable, Object> create(ExoCacheConfig config, Cache<Serializable, Object> cache) throws ExoCacheInitException;
+ public ExoCache<Serializable, Object> create(ExoCacheConfig config,
+ Cache<Serializable, Object> cache) throws ExoCacheInitException;
/**
* Returns the type of {@link org.exoplatform.services.cache.ExoCacheConfig} expected by the creator
Modified: kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/ea/EAExoCacheCreator.java
===================================================================
--- kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/ea/EAExoCacheCreator.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/ea/EAExoCacheCreator.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -68,7 +68,7 @@
}
/**
- * @see org.exoplatform.services.cache.impl.jboss.ExoCacheCreator#create(org.exoplatform.services.cache.ExoCacheConfig, org.jboss.cache.Cache)
+ * {@inheritDoc}
*/
public ExoCache<Serializable, Object> create(ExoCacheConfig config, Cache<Serializable, Object> cache)
throws ExoCacheInitException
@@ -143,14 +143,17 @@
}
@ManagedName("MaxNodes")
- @ManagedDescription("This is the maximum number of nodes allowed in this region. 0 denotes immediate expiry, -1 denotes no limit.")
+ @ManagedDescription("This is the maximum number of nodes allowed in this region. 0 denotes immediate expiry, " +
+ "-1 denotes no limit.")
public int getMaxSize()
{
return ea.getMaxNodes();
}
@ManagedName("MinTimeToLive")
- @ManagedDescription("the minimum amount of time a node must be allowed to live after being accessed before it is allowed to be considered for eviction. 0 denotes that this feature is disabled, which is the default value.")
+ @ManagedDescription("the minimum amount of time a node must be allowed to live after being accessed before " +
+ "it is allowed to be considered for eviction. 0 denotes that this feature is disabled, " +
+ "which is the default value.")
public long getLiveTime()
{
return ea.getMinTimeToLive();
Modified: kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/fifo/FIFOExoCacheCreator.java
===================================================================
--- kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/fifo/FIFOExoCacheCreator.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/fifo/FIFOExoCacheCreator.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -65,7 +65,8 @@
/**
* {@inheritDoc}
*/
- public ExoCache<Serializable, Object> create(ExoCacheConfig config, Cache<Serializable, Object> cache) throws ExoCacheInitException
+ public ExoCache<Serializable, Object> create(ExoCacheConfig config, Cache<Serializable, Object> cache)
+ throws ExoCacheInitException
{
if (config instanceof FIFOExoCacheConfig)
{
@@ -82,7 +83,8 @@
/**
* Creates a new ExoCache instance with the relevant parameters
*/
- private ExoCache<Serializable, Object> create(ExoCacheConfig config, Cache<Serializable, Object> cache, int maxNodes, long minTimeToLive)
+ private ExoCache<Serializable, Object> create(ExoCacheConfig config, Cache<Serializable, Object> cache,
+ int maxNodes, long minTimeToLive)
throws ExoCacheInitException
{
final FIFOAlgorithmConfig fifo = new FIFOAlgorithmConfig(maxNodes);
@@ -102,14 +104,17 @@
}
@ManagedName("MaxNodes")
- @ManagedDescription("This is the maximum number of nodes allowed in this region. 0 denotes immediate expiry, -1 denotes no limit.")
+ @ManagedDescription("This is the maximum number of nodes allowed in this region. " +
+ "0 denotes immediate expiry, -1 denotes no limit.")
public int getMaxSize()
{
return fifo.getMaxNodes();
}
@ManagedName("MinTimeToLive")
- @ManagedDescription("the minimum amount of time a node must be allowed to live after being accessed before it is allowed to be considered for eviction. 0 denotes that this feature is disabled, which is the default value.")
+ @ManagedDescription("the minimum amount of time a node must be allowed to live after " +
+ "being accessed before it is allowed to be considered for eviction. 0 denotes that " +
+ "this feature is disabled, which is the default value.")
public long getLiveTime()
{
return fifo.getMinTimeToLive();
Modified: kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/lfu/LFUExoCacheCreator.java
===================================================================
--- kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/lfu/LFUExoCacheCreator.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/lfu/LFUExoCacheCreator.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -114,14 +114,17 @@
}
@ManagedName("MinTimeToLive")
- @ManagedDescription("the minimum amount of time a node must be allowed to live after being accessed before it is allowed to be considered for eviction. 0 denotes that this feature is disabled, which is the default value.")
+ @ManagedDescription("the minimum amount of time a node must be allowed to live after being accessed " +
+ "before it is allowed to be considered for eviction. 0 denotes that this feature is disabled, " +
+ "which is the default value.")
public long getLiveTime()
{
return lfu.getMinTimeToLive();
}
@ManagedName("MaxNodes")
- @ManagedDescription("This is the maximum number of nodes allowed in this region. 0 denotes immediate expiry, -1 denotes no limit.")
+ @ManagedDescription("This is the maximum number of nodes allowed in this region. " +
+ "0 denotes immediate expiry, -1 denotes no limit.")
public int getMaxSize()
{
return lfu.getMaxNodes();
@@ -129,7 +132,10 @@
@Managed
@ManagedName("MinNodes")
- @ManagedDescription("This is the minimum number of nodes allowed in this region. This value determines what the eviction queue should prune down to per pass. e.g. If minNodes is 10 and the cache grows to 100 nodes, the cache is pruned down to the 10 most frequently used nodes when the eviction timer makes a pass through the eviction algorithm.")
+ @ManagedDescription("This is the minimum number of nodes allowed in this region. This value determines " +
+ "what the eviction queue should prune down to per pass. e.g. If minNodes is 10 and the cache grows " +
+ "to 100 nodes, the cache is pruned down to the 10 most frequently used nodes when the eviction timer " +
+ "makes a pass through the eviction algorithm.")
public long getMinNodes()
{
return lfu.getMinNodes();
Modified: kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/lru/LRUExoCacheCreator.java
===================================================================
--- kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/lru/LRUExoCacheCreator.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/lru/LRUExoCacheCreator.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -121,14 +121,17 @@
}
@ManagedName("MinTimeToLive")
- @ManagedDescription("the minimum amount of time a node must be allowed to live after being accessed before it is allowed to be considered for eviction. 0 denotes that this feature is disabled, which is the default value.")
+ @ManagedDescription("the minimum amount of time a node must be allowed to live after" +
+ " being accessed before it is allowed to be considered for eviction. 0 denotes " +
+ "that this feature is disabled, which is the default value.")
public long getLiveTime()
{
return lru.getMinTimeToLive();
}
@ManagedName("MaxNodes")
- @ManagedDescription("This is the maximum number of nodes allowed in this region. 0 denotes immediate expiry, -1 denotes no limit.")
+ @ManagedDescription("This is the maximum number of nodes allowed in this region. " +
+ "0 denotes immediate expiry, -1 denotes no limit.")
public int getMaxSize()
{
return lru.getMaxNodes();
@@ -136,7 +139,8 @@
@Managed
@ManagedName("TimeToLive")
- @ManagedDescription("The amount of time a node is not written to or read (in milliseconds) before the node is swept away. 0 denotes immediate expiry, -1 denotes no limit.")
+ @ManagedDescription("The amount of time a node is not written to or read (in milliseconds) " +
+ "before the node is swept away. 0 denotes immediate expiry, -1 denotes no limit.")
public long getTimeToLive()
{
return lru.getTimeToLive();
@@ -144,7 +148,8 @@
@Managed
@ManagedName("MaxAges")
- @ManagedDescription("Lifespan of a node (in milliseconds) regardless of idle time before the node is swept away. 0 denotes immediate expiry, -1 denotes no limit.")
+ @ManagedDescription("Lifespan of a node (in milliseconds) regardless of idle time before " +
+ "the node is swept away. 0 denotes immediate expiry, -1 denotes no limit.")
public long getMaxAge()
{
return lru.getMaxAge();
Modified: kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/mru/MRUExoCacheCreator.java
===================================================================
--- kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/mru/MRUExoCacheCreator.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/src/main/java/org/exoplatform/services/cache/impl/jboss/mru/MRUExoCacheCreator.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -49,7 +49,8 @@
/**
* {@inheritDoc}
*/
- public ExoCache<Serializable, Object> create(ExoCacheConfig config, Cache<Serializable, Object> cache) throws ExoCacheInitException
+ public ExoCache<Serializable, Object> create(ExoCacheConfig config, Cache<Serializable, Object> cache)
+ throws ExoCacheInitException
{
if (config instanceof MRUExoCacheConfig)
{
@@ -66,7 +67,8 @@
/**
* Creates a new ExoCache instance with the relevant parameters
*/
- private ExoCache<Serializable, Object> create(ExoCacheConfig config, Cache<Serializable, Object> cache, int maxNodes, long minTimeToLive)
+ private ExoCache<Serializable, Object> create(ExoCacheConfig config, Cache<Serializable, Object> cache,
+ int maxNodes, long minTimeToLive)
throws ExoCacheInitException
{
final MRUAlgorithmConfig mru = new MRUAlgorithmConfig(maxNodes);
@@ -86,14 +88,17 @@
}
@ManagedName("MaxNodes")
- @ManagedDescription("This is the maximum number of nodes allowed in this region. 0 denotes immediate expiry, -1 denotes no limit.")
+ @ManagedDescription("This is the maximum number of nodes allowed in this region. " +
+ "0 denotes immediate expiry, -1 denotes no limit.")
public int getMaxSize()
{
return mru.getMaxNodes();
}
@ManagedName("MinTimeToLive")
- @ManagedDescription("the minimum amount of time a node must be allowed to live after being accessed before it is allowed to be considered for eviction. 0 denotes that this feature is disabled, which is the default value.")
+ @ManagedDescription("the minimum amount of time a node must be allowed to live after " +
+ "being accessed before it is allowed to be considered for eviction. " +
+ "0 denotes that this feature is disabled, which is the default value.")
public long getLiveTime()
{
return mru.getMinTimeToLive();
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/RootContainer.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/RootContainer.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/RootContainer.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -78,7 +78,7 @@
private PortalContainerConfig config_;
- private static final Log log = ExoLogger.getLogger("exo.kernel.container.RootContainer");
+ private static final Log LOG = ExoLogger.getLogger("exo.kernel.container.RootContainer");
private static volatile boolean booting = false;
@@ -208,7 +208,7 @@
}
catch (Exception ex)
{
- ex.printStackTrace();
+ LOG.error(ex.getLocalizedMessage(), ex);
}
}
}
@@ -483,7 +483,7 @@
log.error("Could not build root container", e);
// The logger is not necessary configured so we have to use the standard
// output stream
- e.printStackTrace();
+ LOG.error(e.getLocalizedMessage(), e);
return null;
}
}
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/StandaloneContainer.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/StandaloneContainer.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/StandaloneContainer.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -32,6 +32,8 @@
import org.exoplatform.management.jmx.annotations.NamingContext;
import org.exoplatform.management.jmx.annotations.Property;
import org.exoplatform.management.rest.annotations.RESTEndpoint;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
import java.io.File;
import java.net.MalformedURLException;
@@ -60,6 +62,11 @@
public class StandaloneContainer extends ExoContainer implements SessionManagerContainer
{
+ /**
+ * The logger
+ */
+ private static final Log LOG = ExoLogger.getLogger("org.exoplatform.container.StandaloneContainer");
+
private static final long serialVersionUID = 12L;
private static StandaloneContainer container;
@@ -169,7 +176,7 @@
}
});
PrivilegedSystemHelper.setProperty("exo.standalone-container", StandaloneContainer.class.getName());
- System.out.println("StandaloneContainer initialized using: " + configurationURL);
+ LOG.info("StandaloneContainer initialized using: " + configurationURL);
}
return container;
}
@@ -187,7 +194,7 @@
String n = (String)comp[0];
Object o = comp[1];
container.registerComponentInstance(n, o);
- System.out.println("StandaloneContainer: injecting \"" + n + "\"");
+ LOG.info("StandaloneContainer: injecting \"" + n + "\"");
}
}
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/client/http/ClientTypeMap.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/client/http/ClientTypeMap.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/client/http/ClientTypeMap.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -24,6 +24,9 @@
* */
package org.exoplatform.container.client.http;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
+
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -45,6 +48,11 @@
final static public String XHTML_MIME_TYPE = "text/xhtml";
final static public String XHTMLMP_MIME_TYPE = "application/vnd.wap.xhtml+xml";
+
+ /**
+ * The logger
+ */
+ private static final Log LOG = ExoLogger.getLogger("org.exoplatform.container.client.http.ClientTypeMap");
private ArrayList<HttpClientType> clientList_;
@@ -107,7 +115,7 @@
}
catch (Exception ex)
{
- ex.printStackTrace();
+ LOG.error(ex.getLocalizedMessage(), ex);
}
}
@@ -146,7 +154,7 @@
}
catch (PatternSyntaxException e)
{
- e.printStackTrace();
+ LOG.error(e.getLocalizedMessage(), e);
return clientList_.get(0);
}
}
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/component/RequestLifeCycleStack.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/component/RequestLifeCycleStack.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/component/RequestLifeCycleStack.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -19,7 +19,6 @@
package org.exoplatform.container.component;
import org.exoplatform.container.ExoContainer;
-import org.exoplatform.container.component.ComponentRequestLifecycle;
import org.picocontainer.PicoContainer;
import java.util.ArrayList;
@@ -35,7 +34,8 @@
* @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
* @version $Revision$
*/
-class RequestLifeCycleStack extends LinkedList<RequestLifeCycle>
+class RequestLifeCycleStack
+ extends LinkedList<RequestLifeCycle>
{
/** . */
@@ -49,7 +49,7 @@
{
if (allComponents.contains(lifeCycle))
{
- addLast(new RequestLifeCycle(null, Collections.<ComponentRequestLifecycle>emptyList()));
+ addLast(new RequestLifeCycle(null, Collections.<ComponentRequestLifecycle> emptyList()));
}
else
{
@@ -63,14 +63,17 @@
void begin(ExoContainer container, boolean local)
{
// Need to make a copy as modifying the list is cached by the container
- List<ComponentRequestLifecycle> components = new ArrayList<ComponentRequestLifecycle>((List<ComponentRequestLifecycle>)container.getComponentInstancesOfType(ComponentRequestLifecycle.class));
+ List<ComponentRequestLifecycle> components =
+ new ArrayList<ComponentRequestLifecycle>((List<ComponentRequestLifecycle>) container
+ .getComponentInstancesOfType(ComponentRequestLifecycle.class));
//
if (!local)
{
- for (PicoContainer current = container.getParent();current != null;current = current.getParent())
+ for (PicoContainer current = container.getParent(); current != null; current = current.getParent())
{
- components.addAll((List<ComponentRequestLifecycle>)current.getComponentInstancesOfType(ComponentRequestLifecycle.class));
+ components.addAll((List<ComponentRequestLifecycle>) current
+ .getComponentInstancesOfType(ComponentRequestLifecycle.class));
}
}
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/ConfigurationUnmarshaller.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/ConfigurationUnmarshaller.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/configuration/ConfigurationUnmarshaller.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -104,7 +104,8 @@
+ "XML declaration similar to\n"
+ "<configuration\n"
+ " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
- + " xsi:schemaLocation=\"http://www.exoplaform.org/xml/ns/kernel_1_1.xsd http://www.exoplaform.org/xml/ns/kernel_1_1.xsd\"\n"
+ + " xsi:schemaLocation=\"http://www.exoplaform.org/xml/ns/kernel_1_1.xsd "
+ + "http://www.exoplaform.org/xml/ns/kernel_1_1.xsd\"\n"
+ " xmlns=\"http://www.exoplaform.org/xml/ns/kernel_1_1.xsd\">");
}
else
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -569,7 +569,7 @@
if (PropertyManager.isDevelopping())
{
log.debug("The context '" + contextName + "' has not been added as " +
- "dependency of any portal containers");
+ "dependency of any portal containers");
}
// by default we will return the default portal container
return defaultDefinition.getName();
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManageableContainer.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManageableContainer.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManageableContainer.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -44,7 +44,8 @@
* @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a>
* @version $Revision$
*/
-public class ManageableContainer extends CachingContainer
+public class ManageableContainer
+ extends CachingContainer
{
private static MBeanServer findMBeanServer()
@@ -54,7 +55,8 @@
}
/** . */
- private static final ThreadLocal<ManageableComponentAdapterFactory> hack = new ThreadLocal<ManageableComponentAdapterFactory>();
+ private static final ThreadLocal<ManageableComponentAdapterFactory> hack =
+ new ThreadLocal<ManageableComponentAdapterFactory>();
/** . */
final ManagementContextImpl managementContext;
@@ -70,7 +72,7 @@
public ManageableContainer()
{
- this((PicoContainer)null);
+ this((PicoContainer) null);
}
public ManageableContainer(PicoContainer parent)
@@ -95,12 +97,12 @@
ManagementContextImpl parentCtx = null;
if (parent instanceof ManageableContainer)
{
- ManageableContainer manageableParent = (ManageableContainer)parent;
+ ManageableContainer manageableParent = (ManageableContainer) parent;
parentCtx = manageableParent.managementContext;
}
//
- this.parent = parent instanceof ManageableContainer ? (ManageableContainer)parent : null;
+ this.parent = parent instanceof ManageableContainer ? (ManageableContainer) parent : null;
//
if (parentCtx != null)
@@ -138,7 +140,7 @@
}
private static ManageableComponentAdapterFactory getComponentAdapterFactory(
- ComponentAdapterFactory componentAdapterFactory)
+ ComponentAdapterFactory componentAdapterFactory)
{
ManageableComponentAdapterFactory factory = new ManageableComponentAdapterFactory(componentAdapterFactory);
hack.set(factory);
@@ -156,7 +158,7 @@
}
public ComponentAdapter registerComponentInstance(Object componentKey, Object componentInstance)
- throws PicoRegistrationException
+ throws PicoRegistrationException
{
ComponentAdapter adapter = super.registerComponentInstance(componentKey, componentInstance);
if (managementContext != null)
@@ -166,7 +168,7 @@
// Register if it is a management provider
if (componentInstance instanceof ManagementProvider)
{
- ManagementProvider provider = (ManagementProvider)componentInstance;
+ ManagementProvider provider = (ManagementProvider) componentInstance;
addProvider(provider);
}
}
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManagementContextImpl.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManagementContextImpl.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/ManagementContextImpl.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -21,11 +21,13 @@
import org.exoplatform.container.ExoContainer;
import org.exoplatform.container.component.RequestLifeCycle;
import org.exoplatform.management.ManagementAware;
+import org.exoplatform.management.ManagementContext;
+import org.exoplatform.management.annotations.ManagedBy;
import org.exoplatform.management.spi.ManagedResource;
import org.exoplatform.management.spi.ManagedTypeMetaData;
import org.exoplatform.management.spi.ManagementProvider;
-import org.exoplatform.management.ManagementContext;
-import org.exoplatform.management.annotations.ManagedBy;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
@@ -41,6 +43,11 @@
public class ManagementContextImpl implements ManagementContext, ManagedResource
{
+ /**
+ * The logger
+ */
+ private static final Log LOG = ExoLogger.getLogger("org.exoplatform.container.management.ManagementContextImpl");
+
/** . */
private final Map<Class<?>, Object> scopingDataList;
@@ -167,19 +174,19 @@
}
catch (NoSuchMethodException e)
{
- e.printStackTrace();
+ LOG.error(e.getLocalizedMessage(), e);
}
catch (InstantiationException e)
{
- e.printStackTrace();
+ LOG.error(e.getLocalizedMessage(), e);
}
catch (IllegalAccessException e)
{
- e.printStackTrace();
+ LOG.error(e.getLocalizedMessage(), e);
}
catch (InvocationTargetException e)
{
- e.printStackTrace();
+ LOG.error(e.getLocalizedMessage(), e);
}
}
else
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/MetaDataBuilder.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/MetaDataBuilder.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/MetaDataBuilder.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -43,18 +43,26 @@
* <ul>
* <li>The class must be annotated by {@link org.exoplatform.management.annotations.Managed}</li>
* <li>The class may be annoated by {@link org.exoplatform.management.annotations.ManagedDescription}</li>
- * <li>Any property described by its getter and/or setter getter annotated by {@link org.exoplatform.management.annotations.Managed} is exposed as an attribute/li>
+ * <li>Any property described by its getter and/or setter getter annotated
+ * by {@link org.exoplatform.management.annotations.Managed} is exposed as an attribute </li>
* <li>Any property providing an annotated getter is readable</li>
* <li>Any property providing an annotated setter is writable</li>
- * <li>Any getter/setter annotated by {@link org.exoplatform.management.annotations.ManagedName} redefines the attribute name</li>
- * <li>Any getter/setter annotated by {@link org.exoplatform.management.annotations.ManagedDescription} defines the attribute description</li>
+ * <li>Any getter/setter annotated by {@link org.exoplatform.management.annotations.ManagedName}
+ * redefines the attribute name</li>
+ * <li>Any getter/setter annotated by {@link org.exoplatform.management.annotations.ManagedDescription}
+ * defines the attribute description</li>
* <li>When corresponding getter/setter redefines the attribute name, the value must be the same otherwhise
* an exception is thrown at built time</li>
- * <li>Any method annotated by {@link org.exoplatform.management.annotations.Managed} is exposed as a management operation</li>
- * <li>Any method annotated by {@link org.exoplatform.management.annotations.ManagedDescription} defines the operation description</li>
- * <li>Any non setter/getter method annotated by {@link org.exoplatform.management.annotations.ManagedName} causes a built time exception</li>
- * <li>Any method argument annotated by {@link org.exoplatform.management.annotations.ManagedName} defines the management name of the corresponding operation parameter</li>
- * <li>Any method argument annotated by {@link org.exoplatform.management.annotations.ManagedDescription} defines the management description of the corresponding operation parameter</li>
+ * <li>Any method annotated by {@link org.exoplatform.management.annotations.Managed} is exposed
+ * as a management operation</li>
+ * <li>Any method annotated by {@link org.exoplatform.management.annotations.ManagedDescription}
+ * defines the operation description</li>
+ * <li>Any non setter/getter method annotated by {@link org.exoplatform.management.annotations.ManagedName}
+ * causes a built time exception</li>
+ * <li>Any method argument annotated by {@link org.exoplatform.management.annotations.ManagedName}
+ * defines the management name of the corresponding operation parameter</li>
+ * <li>Any method argument annotated by {@link org.exoplatform.management.annotations.ManagedDescription}
+ * defines the management description of the corresponding operation parameter</li>
* </ul>
* </p>
*
@@ -76,7 +84,8 @@
* Create a new builder.
*
* @param clazz the clazz
- * @throws IllegalArgumentException if the class is null or is not annotated by {@link org.exoplatform.management.annotations.Managed}
+ * @throws IllegalArgumentException if the class is null or is not annotated
+ * by {@link org.exoplatform.management.annotations.Managed}
*/
public MetaDataBuilder(Class clazz) throws IllegalArgumentException
{
@@ -113,14 +122,14 @@
//
ManagedDescription typeDescriptionAnn =
- AnnotationIntrospector.resolveClassAnnotations(clazz, ManagedDescription.class);
+ AnnotationIntrospector.resolveClassAnnotations(clazz, ManagedDescription.class);
String typeDescription = typeDescriptionAnn != null ? typeDescriptionAnn.value() : null;
//
Map<Method, Managed> managedMethods = AnnotationIntrospector.resolveMethodAnnotations(clazz, Managed.class);
Map<Method, ManagedName> methodNames = AnnotationIntrospector.resolveMethodAnnotations(clazz, ManagedName.class);
Map<Method, ManagedDescription> methodDescriptions =
- AnnotationIntrospector.resolveMethodAnnotations(clazz, ManagedDescription.class);
+ AnnotationIntrospector.resolveMethodAnnotations(clazz, ManagedDescription.class);
//
Map<Method, ManagedMethodMetaData> bilto = new HashMap<Method, ManagedMethodMetaData>();
@@ -150,11 +159,11 @@
{
if (parameterAnnotation instanceof ManagedName)
{
- mmpMD.setName(((ManagedName)parameterAnnotation).value());
+ mmpMD.setName(((ManagedName) parameterAnnotation).value());
}
else if (parameterAnnotation instanceof ManagedDescription)
{
- mmpMD.setDescription(((ManagedDescription)parameterAnnotation).value());
+ mmpMD.setDescription(((ManagedDescription) parameterAnnotation).value());
}
}
managedMethod.addParameter(mmpMD);
@@ -226,7 +235,8 @@
if (managedName != null)
{
throw new IllegalArgumentException("Managed operation " + method.getName()
- + " cannot be annoated with @" + ManagedName.class.getName() + " with value " + managedName.value());
+ + " cannot be annoated with @" + ManagedName.class.getName() + " with value "
+ + managedName.value());
}
//
@@ -278,7 +288,7 @@
if (!getterName.value().equals(setterName.value()))
{
throw new IllegalArgumentException("Getter name=" + getterName.value()
- + " does not match the setter name=" + setterName.value());
+ + " does not match the setter name=" + setterName.value());
}
}
attributeName = getterName.value();
@@ -290,7 +300,7 @@
//
ManagedPropertyMetaData managedProperty =
- new ManagedPropertyMetaData(attributeName, getter, getterDescription, setter, setterDescription, mpm);
+ new ManagedPropertyMetaData(attributeName, getter, getterDescription, setter, setterDescription, mpm);
managedProperty.setDescription(propertyDescription);
@@ -299,7 +309,7 @@
if (previousManagedProperty != null)
{
throw new IllegalArgumentException("The same property was declared twice old=" + previousManagedProperty
- + " new=" + managedProperty);
+ + " new=" + managedProperty);
}
//
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/monitor/jvm/J2EEServerInfo.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/monitor/jvm/J2EEServerInfo.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/monitor/jvm/J2EEServerInfo.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -124,7 +124,7 @@
}
catch (Exception ignore)
{
- ignore.printStackTrace();
+ log.error(ignore.getLocalizedMessage(), ignore);
}
}
else if (jettyHome != null)
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/monitor/jvm/MemoryInfo.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/monitor/jvm/MemoryInfo.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/monitor/jvm/MemoryInfo.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -18,6 +18,9 @@
*/
package org.exoplatform.container.monitor.jvm;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
+
import java.lang.management.ManagementFactory;
import java.lang.management.MemoryMXBean;
import java.lang.management.MemoryUsage;
@@ -29,6 +32,11 @@
*/
public class MemoryInfo
{
+ /**
+ * The logger
+ */
+ private static final Log LOG = ExoLogger.getLogger("org.exoplatform.container.monitor.jvm.MemoryInfo");
+
private MemoryMXBean mxbean_;
public MemoryInfo()
@@ -58,7 +66,7 @@
public void printMemoryInfo()
{
- System.out.println(" Memory Heap Usage: " + mxbean_.getHeapMemoryUsage());
- System.out.println(" Memory Non Heap Usage" + mxbean_.getNonHeapMemoryUsage());
+ LOG.info(" Memory Heap Usage: " + mxbean_.getHeapMemoryUsage());
+ LOG.info(" Memory Non Heap Usage" + mxbean_.getNonHeapMemoryUsage());
}
}
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/util/ExoWurflSource.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/util/ExoWurflSource.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/util/ExoWurflSource.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -18,12 +18,20 @@
*/
package org.exoplatform.container.util;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
+
import java.io.InputStream;
//import net.sourceforge.wurfl.wurflapi.WurflSource;
public class ExoWurflSource /* implements WurflSource */
{
+
+ /**
+ * The logger
+ */
+ private static final Log LOG = ExoLogger.getLogger("exo.kernel.container.util.ExoWurflSource");
public InputStream getWurflInputStream()
{
@@ -35,7 +43,7 @@
}
catch (Exception e)
{
- e.printStackTrace();
+ LOG.error(e.getLocalizedMessage(), e);
return null;
}
}
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/xml/ObjectParam.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/xml/ObjectParam.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/xml/ObjectParam.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -19,6 +19,8 @@
package org.exoplatform.container.xml;
import org.apache.commons.beanutils.PropertyUtils;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
import java.util.ArrayList;
import java.util.Collection;
@@ -34,6 +36,11 @@
*/
public class ObjectParam extends Parameter
{
+ /**
+ * The logger
+ */
+ private static final Log LOG = ExoLogger.getLogger("exo.kernel.container.xml.ObjectParam");
+
private String type;
private String package_;
@@ -100,7 +107,7 @@
// prop.name_ +
// ", value prop.value " + prop.value_) ;
// }
- ex.printStackTrace();
+ LOG.error(ex.getLocalizedMessage(), ex);
}
}
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/ExoMBeanInfoBuilder.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/ExoMBeanInfoBuilder.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/ExoMBeanInfoBuilder.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -18,12 +18,12 @@
*/
package org.exoplatform.management.jmx.impl;
+import org.exoplatform.container.management.MetaDataBuilder;
import org.exoplatform.management.annotations.ImpactType;
import org.exoplatform.management.spi.ManagedMethodMetaData;
import org.exoplatform.management.spi.ManagedMethodParameterMetaData;
import org.exoplatform.management.spi.ManagedPropertyMetaData;
import org.exoplatform.management.spi.ManagedTypeMetaData;
-import org.exoplatform.container.management.MetaDataBuilder;
import java.lang.reflect.Method;
import java.util.ArrayList;
@@ -154,7 +154,8 @@
for (ManagedMethodMetaData methodMD : typeMD.getMethods())
{
ModelMBeanOperationInfo operationInfo =
- buildOperationInfo(methodMD.getMethod(), methodMD.getDescription(), Role.OP, methodMD.getParameters(), methodMD.getImpact());
+ buildOperationInfo(methodMD.getMethod(), methodMD.getDescription(), Role.OP,
+ methodMD.getParameters(), methodMD.getImpact());
operations.add(operationInfo);
}
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/JMXManagementProvider.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/JMXManagementProvider.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/jmx/impl/JMXManagementProvider.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -76,7 +76,8 @@
}
catch (Exception e)
{
- LOG.warn("Could not create the ExoModelMBean for the class " + (context == null ? null : (context.getResource() == null ? null : context.getResource().getClass())), e);
+ LOG.warn("Could not create the ExoModelMBean for the class " +
+ (context == null ? null : (context.getResource() == null ? null : context.getResource().getClass())), e);
}
//
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/xml/object/XMLObject.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/xml/object/XMLObject.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/xml/object/XMLObject.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -19,6 +19,8 @@
package org.exoplatform.xml.object;
import org.exoplatform.commons.utils.SecurityHelper;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
import org.jibx.runtime.BindingDirectory;
import org.jibx.runtime.IBindingFactory;
import org.jibx.runtime.IMarshallingContext;
@@ -45,6 +47,12 @@
*/
public class XMLObject
{
+
+ /**
+ * The logger
+ */
+ private static final Log LOG = ExoLogger.getLogger("org.exoplatform.xml.object.XMLObject");
+
public static String CURRENT_VERSION = "1.0";
static Map cacheFields_ = new HashMap();
@@ -180,7 +188,7 @@
}
catch (Exception ex)
{
- System.err.println("ERROR: Cannot set field: " + xmlfield.getName() + " of " + type);
+ LOG.error("ERROR: Cannot set field: " + xmlfield.getName() + " of " + type, ex);
throw ex;
}
}
Modified: kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int/src/main/java/org/exoplatform/container/mc/impl/MCComponentAdapter.java
===================================================================
--- kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int/src/main/java/org/exoplatform/container/mc/impl/MCComponentAdapter.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int/src/main/java/org/exoplatform/container/mc/impl/MCComponentAdapter.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -41,7 +41,8 @@
* @author <a href="mailto:ajustin@redhat.com">Ales Justin</a>
* @author <a href="mailto:mstrukel@redhat.com">Marko Strukelj</a>
*/
-public class MCComponentAdapter implements ComponentAdapter
+public class MCComponentAdapter
+ implements ComponentAdapter
{
/**
* Kernel controller retrieved from associated mc kernel.
@@ -75,8 +76,8 @@
* @param delegate original component adapter
* @param interceptMC mc-integration configuration in the form of annotation
*/
- public MCComponentAdapter(KernelController controller, ComponentAdapter delegate,
- InterceptMC interceptMC, AbstractBeanMetaData data)
+ public MCComponentAdapter(KernelController controller, ComponentAdapter delegate, InterceptMC interceptMC,
+ AbstractBeanMetaData data)
{
if (controller == null)
{
@@ -128,7 +129,8 @@
* @throws PicoInitializationException
* @throws PicoIntrospectionException
*/
- public Object getComponentInstance(PicoContainer container) throws PicoInitializationException, PicoIntrospectionException
+ public Object getComponentInstance(PicoContainer container) throws PicoInitializationException,
+ PicoIntrospectionException
{
Object target = lastComponentInstance;
if (target != null)
@@ -163,7 +165,8 @@
}
if (ctrl.getStates().isBeforeState(ctx.getState(), ControllerState.INSTALLED))
{
- throw new IllegalArgumentException("Missing some dependency: " + ctx.getDependencyInfo().getUnresolvedDependencies(null));
+ throw new IllegalArgumentException("Missing some dependency: "
+ + ctx.getDependencyInfo().getUnresolvedDependencies(null));
}
target = ctx.getTarget();
@@ -172,7 +175,8 @@
}
catch (Throwable ex)
{
- throw new RuntimeException("Failed to perform MC interception on component: " + delegate.getComponentImplementation(), ex);
+ throw new RuntimeException("Failed to perform MC interception on component: "
+ + delegate.getComponentImplementation(), ex);
}
}
@@ -188,11 +192,11 @@
switch (mode)
{
- case ALL:
+ case ALL :
return BeanAccessMode.ALL;
- case FIELDS:
+ case FIELDS :
return BeanAccessMode.FIELDS;
- default:
+ default :
return BeanAccessMode.STANDARD;
}
}
Modified: kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int/src/main/java/org/exoplatform/container/mc/impl/MCIntConfig.java
===================================================================
--- kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int/src/main/java/org/exoplatform/container/mc/impl/MCIntConfig.java 2011-04-28 12:36:25 UTC (rev 4327)
+++ kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int/src/main/java/org/exoplatform/container/mc/impl/MCIntConfig.java 2011-04-28 13:23:28 UTC (rev 4328)
@@ -53,7 +53,8 @@
* <annotation>@org.exoplatform.container.mc.impl.InterceptMC</annotation>
* </bean>
* <bean name="InjectingBean2">
- * <annotation>@org.exoplatform.container.mc.impl.InterceptMC(injectionMode=org.exoplatform.container.mc.impl.MCInjectionMode.STANDARD)</annotation>
+ * <annotation>@org.exoplatform.container.mc.impl.InterceptMC(injectionMode=
+ * org.exoplatform.container.mc.impl.MCInjectionMode.STANDARD)</annotation>
* </bean>
* </pre>
* <p>
13 years, 2 months
exo-jcr SVN: r4327 - in jcr/branches/1.12.x/patch/1.12.9-GA: JCR-1613 and 1 other directory.
by do-not-reply@jboss.org
Author: tolusha
Date: 2011-04-28 08:36:25 -0400 (Thu, 28 Apr 2011)
New Revision: 4327
Added:
jcr/branches/1.12.x/patch/1.12.9-GA/JCR-1613/
jcr/branches/1.12.x/patch/1.12.9-GA/JCR-1613/JCR-1613.patch
Log:
JCR-1316: patch proposed
Added: jcr/branches/1.12.x/patch/1.12.9-GA/JCR-1613/JCR-1613.patch
===================================================================
--- jcr/branches/1.12.x/patch/1.12.9-GA/JCR-1613/JCR-1613.patch (rev 0)
+++ jcr/branches/1.12.x/patch/1.12.9-GA/JCR-1613/JCR-1613.patch 2011-04-28 12:36:25 UTC (rev 4327)
@@ -0,0 +1,208 @@
+Index: exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/writing/TestOrderBefore.java
+===================================================================
+--- exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/writing/TestOrderBefore.java (revision 4266)
++++ exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/writing/TestOrderBefore.java (working copy)
+@@ -19,6 +19,9 @@
+ package org.exoplatform.services.jcr.api.writing;
+
+ import org.exoplatform.services.jcr.JcrAPIBaseTest;
++import org.exoplatform.services.jcr.datamodel.NodeData;
++import org.exoplatform.services.jcr.impl.core.NodeImpl;
++import org.exoplatform.services.jcr.impl.core.SessionImpl;
+ import org.exoplatform.services.jcr.impl.util.EntityCollection;
+
+ import java.util.ArrayList;
+@@ -1032,6 +1035,76 @@
+ }
+ }
+
++ public void testOrderBeforeAfterMove() throws Exception
++ {
++ SessionImpl session = (SessionImpl)repository.login(credentials, WORKSPACE);
++ Node list = session.getRootNode().addNode("list2", "list");
++ assertEquals("list", list.getPrimaryNodeType().getName());
++ assertTrue(list.getPrimaryNodeType().hasOrderableChildNodes());
++
++ String path = list.addNode("1").getPath();
++ list.addNode("2");
++ session.save();
++ session.logout();
++
++ session = (SessionImpl)repository.login(credentials, WORKSPACE);
++ list = session.getRootNode().getNode("list2");
++ session.move(path, list.getPath() + "/3");
++ list.orderBefore("3", "2");
++ session.save();
++ session.logout();
++
++ session = (SessionImpl)repository.login(credentials, WORKSPACE);
++ NodeIterator it = session.getRootNode().getNode("list2").getNodes();
++ NodeImpl node1 = (NodeImpl)it.nextNode();
++ NodeImpl node2 = (NodeImpl)it.nextNode();
++ assertEquals("3", node1.getName());
++ assertEquals("2", node2.getName());
++ assertTrue(((NodeData)node1.getData()).getOrderNumber() < ((NodeData)node2.getData()).getOrderNumber());
++
++ session.logout();
++ }
++
++ public void testOrderBeforeAfterMove2() throws Exception
++ {
++ SessionImpl session = (SessionImpl)repository.login(credentials, WORKSPACE);
++ Node list = session.getRootNode().addNode("list2", "list");
++ assertEquals("list", list.getPrimaryNodeType().getName());
++ assertTrue(list.getPrimaryNodeType().hasOrderableChildNodes());
++
++ list.addNode("1");
++ list.addNode("2");
++ list.addNode("3");
++ list.addNode("4");
++ session.save();
++ session.logout();
++
++ session = (SessionImpl)repository.login(credentials, WORKSPACE);
++ list = session.getRootNode().getNode("list2");
++ session.move(list.getPath() + "/2", list.getPath() + "/5");
++ list.orderBefore("5", "1");
++ session.save();
++ session.logout();
++
++ session = (SessionImpl)repository.login(credentials, WORKSPACE);
++ NodeIterator it = session.getRootNode().getNode("list2").getNodes();
++ NodeImpl node1 = (NodeImpl)it.nextNode();
++ NodeImpl node2 = (NodeImpl)it.nextNode();
++ NodeImpl node3 = (NodeImpl)it.nextNode();
++ NodeImpl node4 = (NodeImpl)it.nextNode();
++
++ assertEquals("5", node1.getName());
++ assertEquals("1", node2.getName());
++ assertEquals("3", node3.getName());
++ assertEquals("4", node4.getName());
++
++ assertTrue(((NodeData)node1.getData()).getOrderNumber() < ((NodeData)node2.getData()).getOrderNumber());
++ assertTrue(((NodeData)node2.getData()).getOrderNumber() < ((NodeData)node3.getData()).getOrderNumber());
++ assertTrue(((NodeData)node3.getData()).getOrderNumber() < ((NodeData)node4.getData()).getOrderNumber());
++
++ session.logout();
++ }
++
+ private EntityCollection getEntityCollection(NodeIterator nodes)
+ {
+ List result = new ArrayList();
+Index: exo.jcr.component.core/src/test/resources/conf/test/nodetypes-usecase.xml
+===================================================================
+--- exo.jcr.component.core/src/test/resources/conf/test/nodetypes-usecase.xml (revision 4266)
++++ exo.jcr.component.core/src/test/resources/conf/test/nodetypes-usecase.xml (working copy)
+@@ -253,4 +253,18 @@
+ </propertyDefinitions>
+ </nodeType>
+
++ <nodeType name="list" isMixin="false" hasOrderableChildNodes="true" primaryItemName="">
++ <supertypes>
++ <supertype>nt:base</supertype>
++ </supertypes>
++ <childNodeDefinitions>
++ <childNodeDefinition name="*" defaultPrimaryType="nt:unstructured" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" sameNameSiblings="false">
++ <requiredPrimaryTypes>
++ <requiredPrimaryType>nt:unstructured</requiredPrimaryType>
++ </requiredPrimaryTypes>
++ </childNodeDefinition>
++ </childNodeDefinitions>
++ </nodeType>
++
++
+ </nodeTypes>
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java (revision 4266)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java (working copy)
+@@ -2441,11 +2441,6 @@
+
+ protected void doOrderBefore(QPath srcPath, QPath destPath) throws RepositoryException
+ {
+- if (!getPrimaryNodeType().hasOrderableChildNodes())
+- {
+- throw new UnsupportedRepositoryOperationException("child node ordering not supported on node " + getPath());
+- }
+-
+ if (srcPath.equals(destPath))
+ {
+ return;
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java (revision 4266)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java (working copy)
+@@ -133,18 +133,23 @@
+ NodeData srcParent;
+
+ destIndex = 1;
++
++ // If ordering is supported by the node
++ // type of the parent node of the new location, then the
++ // newly moved node is appended to the end of the child
++ // node list.
+ destOrderNum = destChilds.size() > 0 ? destChilds.get(destChilds.size() - 1).getOrderNumber() + 1 : 0;
+
+ if (parent.getIdentifier().equals(node.getParentIdentifier()))
+ {
+- // move to another dest
++ // move to same parent
+ srcChilds = destChilds;
+ srcParent = parent;
+ }
+ else
+ {
+- // move of SNSes on same parent
+- // find index and orederNum on destination
++ // move to another parent
++ // find index on destination
+ for (NodeData dchild : destChilds)
+ {
+ if (dchild.getQPath().getName().equals(qname))
+@@ -154,16 +159,17 @@
+ // for fix SNSes on source
+ srcParent = (NodeData)dataManager.getItemData(node.getParentIdentifier());
+ if (srcParent == null)
++ {
+ throw new RepositoryException("FATAL: parent Node not for " + node.getQPath().getAsString()
+ + ", parent id: " + node.getParentIdentifier());
++ }
+
+ srcChilds = dataManager.getChildNodesData(srcParent);
+ }
+
+- int srcOrderNum = 0;
+ int srcIndex = 1;
+
+- // Calculate SNS index on source
++ // Fix SNS on source
+ for (int i = 0; i < srcChilds.size(); i++)
+ {
+ NodeData child = srcChilds.get(i);
+@@ -173,22 +179,21 @@
+ {
+ QPath siblingPath = QPath.makeChildPath(srcParent.getQPath(), child.getQPath().getName(), srcIndex);
+ TransientNodeData sibling =
+- new TransientNodeData(siblingPath, child.getIdentifier(), child.getPersistedVersion() + 1, child
+- .getPrimaryTypeName(), child.getMixinTypeNames(), srcOrderNum, // orderNum
++ new TransientNodeData(siblingPath, child.getIdentifier(), child.getPersistedVersion() + 1,
++ child.getPrimaryTypeName(), child.getMixinTypeNames(), child.getOrderNumber(),
+ child.getParentIdentifier(), child.getACL());
++
+ addStates.add(new ItemState(sibling, ItemState.UPDATED, true, ancestorToSave, false, true));
+
+ srcIndex++;
+ }
+-
+- srcOrderNum++;
+ }
+ }
+
++ // in case of moving to the same parent destination index is calculated above
+ if (srcChilds == destChilds)
+ {
+ destIndex = srcIndex;
+- destOrderNum = srcOrderNum;
+ }
+ }
+ else
13 years, 2 months
exo-jcr SVN: r4326 - in jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl: rdbms and 1 other directory.
by do-not-reply@jboss.org
Author: tolusha
Date: 2011-04-28 08:11:42 -0400 (Thu, 28 Apr 2011)
New Revision: 4326
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/BackupManagerImpl.java
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistingRepositorySameConfigRestore.java
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistingWorkspaceSameConfigRestore.java
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsBackupWorkspaceInitializer.java
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java
Log:
EXOJCR-1324: Misspelling in some class names
Modified: jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/BackupManagerImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/BackupManagerImpl.java 2011-04-28 12:11:15 UTC (rev 4325)
+++ jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/BackupManagerImpl.java 2011-04-28 12:11:42 UTC (rev 4326)
@@ -53,7 +53,7 @@
import org.exoplatform.services.jcr.ext.common.SessionProvider;
import org.exoplatform.services.jcr.ext.registry.RegistryEntry;
import org.exoplatform.services.jcr.ext.registry.RegistryService;
-import org.exoplatform.services.jcr.impl.backup.JCRRestor;
+import org.exoplatform.services.jcr.impl.backup.JCRRestore;
import org.exoplatform.services.jcr.impl.core.RepositoryImpl;
import org.exoplatform.services.jcr.impl.core.SysViewWorkspaceInitializer;
import org.exoplatform.services.jcr.impl.dataflow.persistent.WorkspacePersistentDataManager;
@@ -995,7 +995,7 @@
(WorkspacePersistentDataManager)repoService.getRepository(repositoryName).getWorkspaceContainer(workspaceName)
.getComponent(WorkspacePersistentDataManager.class);
- JCRRestor restorer = new JCRRestor(dataManager, fileCleaner);
+ JCRRestore restorer = new JCRRestore(dataManager, fileCleaner);
restorer.incrementalRestore(new File(pathBackupFile));
}
Modified: jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistingRepositorySameConfigRestore.java
===================================================================
--- jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistingRepositorySameConfigRestore.java 2011-04-28 12:11:15 UTC (rev 4325)
+++ jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistingRepositorySameConfigRestore.java 2011-04-28 12:11:42 UTC (rev 4326)
@@ -28,8 +28,8 @@
import org.exoplatform.services.jcr.ext.backup.RepositoryRestoreExeption;
import org.exoplatform.services.jcr.impl.backup.BackupException;
import org.exoplatform.services.jcr.impl.backup.Backupable;
-import org.exoplatform.services.jcr.impl.backup.DataRestor;
-import org.exoplatform.services.jcr.impl.backup.JCRRestor;
+import org.exoplatform.services.jcr.impl.backup.DataRestore;
+import org.exoplatform.services.jcr.impl.backup.JCRRestore;
import org.exoplatform.services.jcr.impl.backup.JdbcBackupable;
import org.exoplatform.services.jcr.impl.dataflow.persistent.WorkspacePersistentDataManager;
import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer;
@@ -75,7 +75,7 @@
protected void restoreRepository() throws RepositoryRestoreExeption
{
// list of data restorers
- List<DataRestor> dataRestorer = new ArrayList<DataRestor>();
+ List<DataRestore> dataRestorer = new ArrayList<DataRestore>();
try
{
@@ -115,7 +115,7 @@
.getComponentInstancesOfType(Backupable.class);
File fullBackupDir =
- JCRRestor.getFullBackupFile(workspacesMapping.get(wEntry.getName()).getBackupConfig().getBackupDir());
+ JCRRestore.getFullBackupFile(workspacesMapping.get(wEntry.getName()).getBackupConfig().getBackupDir());
for (Backupable component : backupable)
{
@@ -130,17 +130,17 @@
}
}
- for (DataRestor restorer : dataRestorer)
+ for (DataRestore restorer : dataRestorer)
{
restorer.clean();
}
- for (DataRestor restorer : dataRestorer)
+ for (DataRestore restorer : dataRestorer)
{
restorer.restore();
}
- for (DataRestor restorer : dataRestorer)
+ for (DataRestore restorer : dataRestorer)
{
restorer.commit();
}
@@ -163,10 +163,10 @@
.getWorkspaceContainer(wEntry.getName()).getComponent(FileCleanerHolder.class);
File storageDir =
- JCRRestor.getFullBackupFile(workspacesMapping.get(wEntry.getName()).getBackupConfig().getBackupDir());
+ JCRRestore.getFullBackupFile(workspacesMapping.get(wEntry.getName()).getBackupConfig().getBackupDir());
- JCRRestor restorer = new JCRRestor(dataManager, fileCleanHolder.getFileCleaner());
- for (File incrBackupFile : JCRRestor.getIncrementalFiles(storageDir))
+ JCRRestore restorer = new JCRRestore(dataManager, fileCleanHolder.getFileCleaner());
+ for (File incrBackupFile : JCRRestore.getIncrementalFiles(storageDir))
{
restorer.incrementalRestore(incrBackupFile);
}
@@ -175,7 +175,7 @@
catch (Throwable t)
{
// rollback
- for (DataRestor restorer : dataRestorer)
+ for (DataRestore restorer : dataRestorer)
{
try
{
@@ -192,7 +192,7 @@
finally
{
// close
- for (DataRestor restorer : dataRestorer)
+ for (DataRestore restorer : dataRestorer)
{
try
{
Modified: jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistingWorkspaceSameConfigRestore.java
===================================================================
--- jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistingWorkspaceSameConfigRestore.java 2011-04-28 12:11:15 UTC (rev 4325)
+++ jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobExistingWorkspaceSameConfigRestore.java 2011-04-28 12:11:42 UTC (rev 4326)
@@ -26,8 +26,8 @@
import org.exoplatform.services.jcr.ext.backup.WorkspaceRestoreException;
import org.exoplatform.services.jcr.impl.backup.BackupException;
import org.exoplatform.services.jcr.impl.backup.Backupable;
-import org.exoplatform.services.jcr.impl.backup.DataRestor;
-import org.exoplatform.services.jcr.impl.backup.JCRRestor;
+import org.exoplatform.services.jcr.impl.backup.DataRestore;
+import org.exoplatform.services.jcr.impl.backup.JCRRestore;
import org.exoplatform.services.jcr.impl.dataflow.persistent.WorkspacePersistentDataManager;
import org.exoplatform.services.jcr.impl.util.io.FileCleanerHolder;
import org.exoplatform.services.log.ExoLogger;
@@ -70,7 +70,7 @@
protected void restore() throws WorkspaceRestoreException
{
// list of data restorers
- List<DataRestor> dataRestorer = new ArrayList<DataRestor>();
+ List<DataRestore> dataRestorer = new ArrayList<DataRestore>();
try
{
@@ -86,21 +86,21 @@
for (Backupable component : backupable)
{
- File fullBackupDir = JCRRestor.getFullBackupFile(storageDir);
+ File fullBackupDir = JCRRestore.getFullBackupFile(storageDir);
dataRestorer.add(component.getDataRestorer(fullBackupDir));
}
- for (DataRestor restorer : dataRestorer)
+ for (DataRestore restorer : dataRestorer)
{
restorer.clean();
}
- for (DataRestor restorer : dataRestorer)
+ for (DataRestore restorer : dataRestorer)
{
restorer.restore();
}
- for (DataRestor restorer : dataRestorer)
+ for (DataRestore restorer : dataRestorer)
{
restorer.commit();
}
@@ -117,8 +117,8 @@
(FileCleanerHolder)repositoryService.getRepository(repositoryName).getWorkspaceContainer(wEntry.getName())
.getComponent(FileCleanerHolder.class);
- JCRRestor restorer = new JCRRestor(dataManager, fileCleanHolder.getFileCleaner());
- for (File incrBackupFile : JCRRestor.getIncrementalFiles(storageDir))
+ JCRRestore restorer = new JCRRestore(dataManager, fileCleanHolder.getFileCleaner());
+ for (File incrBackupFile : JCRRestore.getIncrementalFiles(storageDir))
{
restorer.incrementalRestore(incrBackupFile);
}
@@ -126,7 +126,7 @@
catch (Throwable t)
{
// rollback
- for (DataRestor restorer : dataRestorer)
+ for (DataRestore restorer : dataRestorer)
{
try
{
@@ -143,7 +143,7 @@
finally
{
// close
- for (DataRestor restorer : dataRestorer)
+ for (DataRestore restorer : dataRestorer)
{
try
{
Modified: jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsBackupWorkspaceInitializer.java
===================================================================
--- jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsBackupWorkspaceInitializer.java 2011-04-28 12:11:15 UTC (rev 4325)
+++ jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsBackupWorkspaceInitializer.java 2011-04-28 12:11:42 UTC (rev 4326)
@@ -21,7 +21,7 @@
import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
import org.exoplatform.services.jcr.config.RepositoryEntry;
import org.exoplatform.services.jcr.config.WorkspaceEntry;
-import org.exoplatform.services.jcr.impl.backup.JCRRestor;
+import org.exoplatform.services.jcr.impl.backup.JCRRestore;
import org.exoplatform.services.jcr.impl.core.LocationFactory;
import org.exoplatform.services.jcr.impl.core.NamespaceRegistryImpl;
import org.exoplatform.services.jcr.impl.core.nodetype.NodeTypeManagerImpl;
@@ -76,8 +76,8 @@
fullRdbmsRestore();
// restore from incremental backup
- JCRRestor restorer = new JCRRestor(dataManager, fileCleaner);
- for (File incrBackupFile : JCRRestor.getIncrementalFiles(new File(restoreDir)))
+ JCRRestore restorer = new JCRRestore(dataManager, fileCleaner);
+ for (File incrBackupFile : JCRRestore.getIncrementalFiles(new File(restoreDir)))
{
try
{
Modified: jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java
===================================================================
--- jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java 2011-04-28 12:11:15 UTC (rev 4325)
+++ jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java 2011-04-28 12:11:42 UTC (rev 4326)
@@ -28,7 +28,7 @@
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.backup.BackupException;
import org.exoplatform.services.jcr.impl.backup.Backupable;
-import org.exoplatform.services.jcr.impl.backup.DataRestor;
+import org.exoplatform.services.jcr.impl.backup.DataRestore;
import org.exoplatform.services.jcr.impl.core.BackupWorkspaceInitializer;
import org.exoplatform.services.jcr.impl.core.LocationFactory;
import org.exoplatform.services.jcr.impl.core.NamespaceRegistryImpl;
@@ -115,7 +115,7 @@
*/
protected void fullRdbmsRestore() throws RepositoryException
{
- List<DataRestor> dataRestorers = new ArrayList<DataRestor>();
+ List<DataRestore> dataRestorers = new ArrayList<DataRestore>();
ManageableRepository repository = null;
try
@@ -138,24 +138,24 @@
dataRestorers.add(component.getDataRestorer(new File(restorePath)));
}
- for (DataRestor restorer : dataRestorers)
+ for (DataRestore restorer : dataRestorers)
{
restorer.clean();
}
- for (DataRestor restorer : dataRestorers)
+ for (DataRestore restorer : dataRestorers)
{
restorer.restore();
}
- for (DataRestor restorer : dataRestorers)
+ for (DataRestore restorer : dataRestorers)
{
restorer.commit();
}
}
catch (Throwable e)
{
- for (DataRestor restorer : dataRestorers)
+ for (DataRestore restorer : dataRestorers)
{
try
{
@@ -171,7 +171,7 @@
}
finally
{
- for (DataRestor restorer : dataRestorers)
+ for (DataRestore restorer : dataRestorers)
{
try
{
13 years, 2 months
exo-jcr SVN: r4325 - in jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl: backup/rdbms and 6 other directories.
by do-not-reply@jboss.org
Author: tolusha
Date: 2011-04-28 08:11:15 -0400 (Thu, 28 Apr 2011)
New Revision: 4325
Added:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/ComplexDataRestore.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/DataRestore.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/DummyDataRestore.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JCRRestore.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBRestore.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DirectoryRestore.java
Removed:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/ComplexDataRestor.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/DataRestor.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/DummyDataRestor.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JCRRestor.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBRestor.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DirectoryRestor.java
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/Backupable.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JdbcBackupable.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cacheable/AbstractCacheableLockManager.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/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java
Log:
EXOJCR-1324: Misspelling in some class names
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/Backupable.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/Backupable.java 2011-04-28 11:48:05 UTC (rev 4324)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/Backupable.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -52,6 +52,6 @@
* @throws RestoreException
* if any exception occurred
*/
- DataRestor getDataRestorer(File storageDir) throws BackupException;
+ DataRestore getDataRestorer(File storageDir) throws BackupException;
}
Deleted: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/ComplexDataRestor.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/ComplexDataRestor.java 2011-04-28 11:48:05 UTC (rev 4324)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/ComplexDataRestor.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2003-2010 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.impl.backup;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by The eXo Platform SAS.
- *
- * Date: 21 01 2011
- *
- * @author <a href="mailto:anatoliy.bazko@exoplatform.com.ua">Anatoliy Bazko</a>
- * @version $Id: ComplexDataRestor.java 34360 2010-11-11 11:11:11Z tolusha $
- */
-public class ComplexDataRestor implements DataRestor
-{
-
- /**
- * List of restorers.
- */
- private List<DataRestor> restorers = new ArrayList<DataRestor>();
-
- /**
- * Constructor ComplexDataRestor.
- *
- * @param restorers
- */
- public ComplexDataRestor(List<DataRestor> restorers)
- {
- this.restorers.addAll(restorers);
- }
-
- /**
- * {@inheritDoc}
- */
- public void clean() throws BackupException
- {
- for (DataRestor restorer : restorers)
- {
- restorer.clean();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public void restore() throws BackupException
- {
- for (DataRestor restorer : restorers)
- {
- restorer.restore();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public void commit() throws BackupException
- {
- for (DataRestor restorer : restorers)
- {
- restorer.commit();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public void rollback() throws BackupException
- {
- for (DataRestor restorer : restorers)
- {
- restorer.rollback();
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public void close() throws BackupException
- {
- try
- {
- for (DataRestor restorer : restorers)
- {
- restorer.close();
- }
- }
- finally
- {
- restorers.clear();
- }
- }
-}
Copied: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/ComplexDataRestore.java (from rev 4323, jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/ComplexDataRestor.java)
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/ComplexDataRestore.java (rev 0)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/ComplexDataRestore.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2003-2010 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.impl.backup;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by The eXo Platform SAS.
+ *
+ * Date: 21 01 2011
+ *
+ * @author <a href="mailto:anatoliy.bazko@exoplatform.com.ua">Anatoliy Bazko</a>
+ * @version $Id: ComplexDataRestore.java 34360 2010-11-11 11:11:11Z tolusha $
+ */
+public class ComplexDataRestore implements DataRestore
+{
+
+ /**
+ * List of restorers.
+ */
+ private List<DataRestore> restorers = new ArrayList<DataRestore>();
+
+ /**
+ * Constructor ComplexDataRestor.
+ *
+ * @param restorers
+ */
+ public ComplexDataRestore(List<DataRestore> restorers)
+ {
+ this.restorers.addAll(restorers);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void clean() throws BackupException
+ {
+ for (DataRestore restorer : restorers)
+ {
+ restorer.clean();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void restore() throws BackupException
+ {
+ for (DataRestore restorer : restorers)
+ {
+ restorer.restore();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void commit() throws BackupException
+ {
+ for (DataRestore restorer : restorers)
+ {
+ restorer.commit();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void rollback() throws BackupException
+ {
+ for (DataRestore restorer : restorers)
+ {
+ restorer.rollback();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void close() throws BackupException
+ {
+ try
+ {
+ for (DataRestore restorer : restorers)
+ {
+ restorer.close();
+ }
+ }
+ finally
+ {
+ restorers.clear();
+ }
+ }
+}
Deleted: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/DataRestor.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/DataRestor.java 2011-04-28 11:48:05 UTC (rev 4324)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/DataRestor.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2003-2010 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.impl.backup;
-
-/**
- * Created by The eXo Platform SAS.
- *
- * Date: 22 01 2011
- *
- * @author <a href="mailto:anatoliy.bazko@exoplatform.com.ua">Anatoliy Bazko</a>
- * @version $Id: DataRestor.java.java 34360 2010-11-11 11:11:11Z tolusha $
- */
-public interface DataRestor
-{
-
- /**
- * Clean old data from the storage.
- *
- * @throws RestoreException
- * if any exception is occurred
- */
- void clean() throws BackupException;
-
- /**
- * Restore new data into storage.
- *
- * @throws RestoreException
- * if any exception is occurred
- */
- void restore() throws BackupException;
-
- /**
- * Commit changes.
- *
- * @throws RestoreException
- * if any exception is occurred
- */
- void commit() throws BackupException;
-
- /**
- * Rollback changes.
- *
- * @throws RestoreException
- * if any exception is occurred
- */
- void rollback() throws BackupException;
-
- /**
- * Close DataRestor.
- *
- * @throws RestoreException
- * if any exception is occurred
- */
- void close() throws BackupException;
-}
Copied: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/DataRestore.java (from rev 4323, jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/DataRestor.java)
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/DataRestore.java (rev 0)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/DataRestore.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2003-2010 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.impl.backup;
+
+/**
+ * Created by The eXo Platform SAS.
+ *
+ * Date: 22 01 2011
+ *
+ * @author <a href="mailto:anatoliy.bazko@exoplatform.com.ua">Anatoliy Bazko</a>
+ * @version $Id: DataRestore.java.java 34360 2010-11-11 11:11:11Z tolusha $
+ */
+public interface DataRestore
+{
+
+ /**
+ * Clean old data from the storage.
+ *
+ * @throws RestoreException
+ * if any exception is occurred
+ */
+ void clean() throws BackupException;
+
+ /**
+ * Restore new data into storage.
+ *
+ * @throws RestoreException
+ * if any exception is occurred
+ */
+ void restore() throws BackupException;
+
+ /**
+ * Commit changes.
+ *
+ * @throws RestoreException
+ * if any exception is occurred
+ */
+ void commit() throws BackupException;
+
+ /**
+ * Rollback changes.
+ *
+ * @throws RestoreException
+ * if any exception is occurred
+ */
+ void rollback() throws BackupException;
+
+ /**
+ * Close DataRestor.
+ *
+ * @throws RestoreException
+ * if any exception is occurred
+ */
+ void close() throws BackupException;
+}
Deleted: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/DummyDataRestor.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/DummyDataRestor.java 2011-04-28 11:48:05 UTC (rev 4324)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/DummyDataRestor.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2003-2010 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.impl.backup;
-
-/***
- * Created by The eXo Platform SAS.
- *
- * Date: 21 01 2011
- *
- * @author <a href="mailto:anatoliy.bazko@exoplatform.com.ua">Anatoliy Bazko</a>
- * @version $Id: DummyDataRestor.java 34360 2010-11-11 11:11:11Z tolusha $
- */
-public class DummyDataRestor implements DataRestor
-{
- /**
- * {@inheritDoc}
- */
- public void restore() throws BackupException
- {
- }
-
- /**
- * {@inheritDoc}
- */
- public void clean() throws BackupException
- {
- }
-
- /**
- * {@inheritDoc}
- */
- public void commit() throws BackupException
- {
- }
-
- /**
- * {@inheritDoc}
- */
- public void rollback() throws BackupException
- {
- }
-
- /**
- * {@inheritDoc}
- */
- public void close() throws BackupException
- {
- }
-}
Copied: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/DummyDataRestore.java (from rev 4323, jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/DummyDataRestor.java)
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/DummyDataRestore.java (rev 0)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/DummyDataRestore.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2003-2010 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.impl.backup;
+
+/***
+ * Created by The eXo Platform SAS.
+ *
+ * Date: 21 01 2011
+ *
+ * @author <a href="mailto:anatoliy.bazko@exoplatform.com.ua">Anatoliy Bazko</a>
+ * @version $Id: DummyDataRestore.java 34360 2010-11-11 11:11:11Z tolusha $
+ */
+public class DummyDataRestore implements DataRestore
+{
+ /**
+ * {@inheritDoc}
+ */
+ public void restore() throws BackupException
+ {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void clean() throws BackupException
+ {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void commit() throws BackupException
+ {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void rollback() throws BackupException
+ {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void close() throws BackupException
+ {
+ }
+}
Deleted: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JCRRestor.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JCRRestor.java 2011-04-28 11:48:05 UTC (rev 4324)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JCRRestor.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -1,448 +0,0 @@
-/*
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.exoplatform.services.jcr.impl.backup;
-
-import org.exoplatform.commons.utils.PrivilegedFileHelper;
-import org.exoplatform.commons.utils.PrivilegedSystemHelper;
-import org.exoplatform.services.jcr.dataflow.ChangesLogIterator;
-import org.exoplatform.services.jcr.dataflow.DataManager;
-import org.exoplatform.services.jcr.dataflow.ItemState;
-import org.exoplatform.services.jcr.dataflow.PlainChangesLog;
-import org.exoplatform.services.jcr.dataflow.PlainChangesLogImpl;
-import org.exoplatform.services.jcr.dataflow.TransactionChangesLog;
-import org.exoplatform.services.jcr.dataflow.persistent.PersistedPropertyData;
-import org.exoplatform.services.jcr.datamodel.ItemData;
-import org.exoplatform.services.jcr.datamodel.ValueData;
-import org.exoplatform.services.jcr.impl.Constants;
-import org.exoplatform.services.jcr.impl.dataflow.persistent.StreamPersistedValueData;
-import org.exoplatform.services.jcr.impl.storage.JCRInvalidItemStateException;
-import org.exoplatform.services.jcr.impl.storage.JCRItemExistsException;
-import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
-import org.exoplatform.services.jcr.impl.util.io.SpoolFile;
-import org.exoplatform.services.jcr.observation.ExtendedEvent;
-
-import java.io.EOFException;
-import java.io.Externalizable;
-import java.io.File;
-import java.io.FileFilter;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutput;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.jcr.RepositoryException;
-
-/**
- * Created by The eXo Platform SAS.
- *
- * Date: 24 01 2011
- *
- * Class contains commons method for JCR restore operation.
- * - get path to full backup<br>
- * - get list of incremental backup files<br>
- * - perform incremental restore function<br>
- *
- * @author <a href="mailto:anatoliy.bazko@exoplatform.com.ua">Anatoliy Bazko</a>
- * @version $Id: JCRRestorerHelper.java 34360 2010-11-11 11:11:11Z tolusha $
- */
-public class JCRRestor
-{
-
- private final DataManager dataManager;
-
- private final FileCleaner fileCleaner;
-
- private final File tempDir = new File(PrivilegedSystemHelper.getProperty("java.io.tmpdir"));
-
- public JCRRestor(DataManager dataManager, FileCleaner fileCleaner)
- {
- this.dataManager = dataManager;
- this.fileCleaner = fileCleaner;
- }
-
- /**
- * Returns file with full backup. In case of RDBMS backup
- * it may be a directory.
- *
- * @param restoreDir
- * @return
- */
- public static File getFullBackupFile(File restoreDir)
- {
- Pattern p = Pattern.compile(".+\\.0");
-
- for (File f : PrivilegedFileHelper.listFiles(restoreDir, new FileFilter()
- {
- public boolean accept(File pathname)
- {
- Pattern p = Pattern.compile(".+\\.[0-9]+");
- Matcher m = p.matcher(pathname.getName());
- return m.matches();
- }
- }))
- {
- Matcher m = p.matcher(f.getName());
- if (m.matches())
- {
- return f;
- }
- }
-
- return null;
- }
-
- /**
- * Get list of incremental backup files.
- *
- * @param restoreDir
- * @return list of files
- */
- public static List<File> getIncrementalFiles(File restoreDir)
- {
- ArrayList<File> list = new ArrayList<File>();
-
- Pattern fullBackupPattern = Pattern.compile(".+\\.0");
-
- for (File f : PrivilegedFileHelper.listFiles(restoreDir, new FileFilter()
- {
- public boolean accept(File pathname)
- {
- Pattern p = Pattern.compile(".+\\.[0-9]+");
- Matcher m = p.matcher(pathname.getName());
- return m.matches();
- }
- }))
- {
- if (fullBackupPattern.matcher(f.getName()).matches() == false)
- {
- list.add(f);
- }
- }
-
- return list;
- }
-
- /**
- * Perform incremental restore operation.
- *
- * @param incrementalBackupFile
- * incremental backup file
- * @throws FileNotFoundException
- * @throws IOException
- * @throws ClassNotFoundException
- * @throws RepositoryException
- */
- public void incrementalRestore(File incrementalBackupFile) throws FileNotFoundException, IOException,
- ClassNotFoundException, RepositoryException
- {
- ObjectInputStream ois = null;
- try
- {
- ois = new ObjectInputStream(PrivilegedFileHelper.fileInputStream(incrementalBackupFile));
-
- while (true)
- {
- TransactionChangesLog changesLog = readExternal(ois);
- changesLog.setSystemId(Constants.JCR_CORE_RESTORE_WORKSPACE_INITIALIZER_SYSTEM_ID); // mark changes
-
- ChangesLogIterator cli = changesLog.getLogIterator();
- while (cli.hasNextLog())
- {
- if (cli.nextLog().getEventType() == ExtendedEvent.LOCK)
- cli.removeLog();
- }
-
- saveChangesLog(changesLog);
- }
- }
- catch (EOFException ioe)
- {
- // ok - reading all data from backup file;
- }
- }
-
- private void saveChangesLog(TransactionChangesLog changesLog) throws RepositoryException
- {
- try
- {
- dataManager.save(changesLog);
- }
- catch (JCRInvalidItemStateException e)
- {
- TransactionChangesLog normalizeChangesLog =
- getNormalizedChangesLog(e.getIdentifier(), e.getState(), changesLog);
- if (normalizeChangesLog != null)
- saveChangesLog(normalizeChangesLog);
- else
- throw new RepositoryException(
- "Collisions found during save of restore changes log, but caused item is not found by ID "
- + e.getIdentifier() + ". " + e, e);
- }
- catch (JCRItemExistsException e)
- {
- TransactionChangesLog normalizeChangesLog =
- getNormalizedChangesLog(e.getIdentifier(), e.getState(), changesLog);
- if (normalizeChangesLog != null)
- saveChangesLog(normalizeChangesLog);
- else
- throw new RepositoryException(
- "Collisions found during save of restore changes log, but caused item is not found by ID "
- + e.getIdentifier() + ". " + e, e);
- }
- }
-
- private TransactionChangesLog getNormalizedChangesLog(String collisionID, int state, TransactionChangesLog changesLog)
- {
- ItemState citem = changesLog.getItemState(collisionID);
-
- if (citem != null)
- {
-
- TransactionChangesLog result = new TransactionChangesLog();
- result.setSystemId(changesLog.getSystemId());
-
- ChangesLogIterator cli = changesLog.getLogIterator();
- while (cli.hasNextLog())
- {
- ArrayList<ItemState> normalized = new ArrayList<ItemState>();
- PlainChangesLog next = cli.nextLog();
- for (ItemState change : next.getAllStates())
- {
- if (state == change.getState())
- {
- ItemData item = change.getData();
- // targeted state
- if (citem.isNode())
- {
- // Node... by ID and desc path
- if (!item.getIdentifier().equals(collisionID)
- && !item.getQPath().isDescendantOf(citem.getData().getQPath()))
- normalized.add(change);
- }
- else if (!item.getIdentifier().equals(collisionID))
- {
- // Property... by ID
- normalized.add(change);
- }
- }
- else
- // another state
- normalized.add(change);
- }
-
- PlainChangesLog plog = new PlainChangesLogImpl(normalized, next.getSessionId(), next.getEventType());
- result.addLog(plog);
- }
-
- return result;
- }
-
- return null;
- }
-
- private TransactionChangesLog readExternal(ObjectInputStream in) throws IOException, ClassNotFoundException
- {
- int changesLogType = in.readInt();
-
- TransactionChangesLog transactionChangesLog = null;
-
- if (changesLogType == RestoreChangesLog.Type.ItemDataChangesLog_with_Streams)
- {
-
- // read ChangesLog
- transactionChangesLog = (TransactionChangesLog)in.readObject();
-
- // read FixupStream count
- int iFixupStream = in.readInt();
-
- ArrayList<FixupStream> listFixupStreams = new ArrayList<FixupStream>();
-
- for (int i = 0; i < iFixupStream; i++)
- {
- FixupStream fs = new FixupStream();
- fs.readExternal(in);
- listFixupStreams.add(fs);
- }
-
- // read stream data
- int iStreamCount = in.readInt();
- ArrayList<SpoolFile> listFiles = new ArrayList<SpoolFile>();
-
- for (int i = 0; i < iStreamCount; i++)
- {
-
- // read file size
- long fileSize = in.readLong();
-
- // read content file
- listFiles.add(getAsFile(in, fileSize));
- }
-
- RestoreChangesLog restoreChangesLog =
- new RestoreChangesLog(transactionChangesLog, listFixupStreams, listFiles, fileCleaner);
-
- restoreChangesLog.restore();
-
- }
- else if (changesLogType == RestoreChangesLog.Type.ItemDataChangesLog_without_Streams)
- {
- transactionChangesLog = (TransactionChangesLog)in.readObject();
- }
-
- return transactionChangesLog;
- }
-
- private SpoolFile getAsFile(ObjectInputStream ois, long fileSize) throws IOException
- {
- int bufferSize = 1024 * 8;
- byte[] buf = new byte[bufferSize];
-
- SpoolFile tempFile = SpoolFile.createTempFile("vdincb" + System.currentTimeMillis(), ".stmp", tempDir);
- FileOutputStream fos = PrivilegedFileHelper.fileOutputStream(tempFile);
- long readBytes = fileSize;
-
- while (readBytes > 0)
- {
- // long longTemp = readByte - bufferSize;
- if (readBytes >= bufferSize)
- {
- ois.readFully(buf);
- fos.write(buf);
- }
- else if (readBytes < bufferSize)
- {
- ois.readFully(buf, 0, (int)readBytes);
- fos.write(buf, 0, (int)readBytes);
- }
- readBytes -= bufferSize;
- }
-
- fos.flush();
- fos.close();
-
- return tempFile;
- }
-
- class RestoreChangesLog
- {
- public class Type
- {
- public static final int ItemDataChangesLog_without_Streams = 1;
-
- public static final int ItemDataChangesLog_with_Streams = 2;
- }
-
- private TransactionChangesLog itemDataChangesLog;
-
- private List<FixupStream> listFixupStream;
-
- private List<SpoolFile> listFile;
-
- private FileCleaner fileCleaner;
-
- public RestoreChangesLog(TransactionChangesLog transactionChangesLog, List<FixupStream> listFixupStreams,
- List<SpoolFile> listFiles, FileCleaner fileCleaner)
- {
- this.itemDataChangesLog = transactionChangesLog;
- this.listFixupStream = listFixupStreams;
- this.listFile = listFiles;
- this.fileCleaner = fileCleaner;
- }
-
- public TransactionChangesLog getItemDataChangesLog()
- {
- return itemDataChangesLog;
- }
-
- public void restore() throws IOException
- {
- List<ItemState> listItemState = itemDataChangesLog.getAllStates();
- for (int i = 0; i < this.listFixupStream.size(); i++)
- {
- ItemState itemState = listItemState.get(listFixupStream.get(i).getItemSateId());
- ItemData itemData = itemState.getData();
-
- PersistedPropertyData propertyData = (PersistedPropertyData)itemData;
- ValueData vd = (propertyData.getValues().get(listFixupStream.get(i).getValueDataId()));
-
- // re-init the value
- propertyData.getValues().set(listFixupStream.get(i).getValueDataId(),
- new StreamPersistedValueData(vd.getOrderNumber(), listFile.get(i)));
- }
-
- for (int i = 0; i < listFile.size(); i++)
- fileCleaner.addFile(listFile.get(i));
- }
- }
-
- class FixupStream implements Externalizable
- {
- int iItemStateId = -1;
-
- int iValueDataId = -1;
-
- public FixupStream()
- {
- }
-
- public FixupStream(int itemState_, int valueData_)
- {
- iItemStateId = itemState_;
- iValueDataId = valueData_;
- }
-
- public int getItemSateId()
- {
- return iItemStateId;
- }
-
- public int getValueDataId()
- {
- return iValueDataId;
- }
-
- public boolean compare(FixupStream fs)
- {
- boolean b = true;
- if (fs.getItemSateId() != this.getItemSateId())
- b = false;
- if (fs.getValueDataId() != this.getValueDataId())
- b = false;
- return b;
- }
-
- public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
- {
- iItemStateId = in.readInt();
- iValueDataId = in.readInt();
- }
-
- public void writeExternal(ObjectOutput out) throws IOException
- {
- out.writeInt(iItemStateId);
- out.writeInt(iValueDataId);
- }
- }
-}
Copied: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JCRRestore.java (from rev 4323, jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JCRRestor.java)
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JCRRestore.java (rev 0)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JCRRestore.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -0,0 +1,448 @@
+/*
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.exoplatform.services.jcr.impl.backup;
+
+import org.exoplatform.commons.utils.PrivilegedFileHelper;
+import org.exoplatform.commons.utils.PrivilegedSystemHelper;
+import org.exoplatform.services.jcr.dataflow.ChangesLogIterator;
+import org.exoplatform.services.jcr.dataflow.DataManager;
+import org.exoplatform.services.jcr.dataflow.ItemState;
+import org.exoplatform.services.jcr.dataflow.PlainChangesLog;
+import org.exoplatform.services.jcr.dataflow.PlainChangesLogImpl;
+import org.exoplatform.services.jcr.dataflow.TransactionChangesLog;
+import org.exoplatform.services.jcr.dataflow.persistent.PersistedPropertyData;
+import org.exoplatform.services.jcr.datamodel.ItemData;
+import org.exoplatform.services.jcr.datamodel.ValueData;
+import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.dataflow.persistent.StreamPersistedValueData;
+import org.exoplatform.services.jcr.impl.storage.JCRInvalidItemStateException;
+import org.exoplatform.services.jcr.impl.storage.JCRItemExistsException;
+import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
+import org.exoplatform.services.jcr.impl.util.io.SpoolFile;
+import org.exoplatform.services.jcr.observation.ExtendedEvent;
+
+import java.io.EOFException;
+import java.io.Externalizable;
+import java.io.File;
+import java.io.FileFilter;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutput;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.jcr.RepositoryException;
+
+/**
+ * Created by The eXo Platform SAS.
+ *
+ * Date: 24 01 2011
+ *
+ * Class contains commons method for JCR restore operation.
+ * - get path to full backup<br>
+ * - get list of incremental backup files<br>
+ * - perform incremental restore function<br>
+ *
+ * @author <a href="mailto:anatoliy.bazko@exoplatform.com.ua">Anatoliy Bazko</a>
+ * @version $Id: JCRRestore.java 34360 2010-11-11 11:11:11Z tolusha $
+ */
+public class JCRRestore
+{
+
+ private final DataManager dataManager;
+
+ private final FileCleaner fileCleaner;
+
+ private final File tempDir = new File(PrivilegedSystemHelper.getProperty("java.io.tmpdir"));
+
+ public JCRRestore(DataManager dataManager, FileCleaner fileCleaner)
+ {
+ this.dataManager = dataManager;
+ this.fileCleaner = fileCleaner;
+ }
+
+ /**
+ * Returns file with full backup. In case of RDBMS backup
+ * it may be a directory.
+ *
+ * @param restoreDir
+ * @return
+ */
+ public static File getFullBackupFile(File restoreDir)
+ {
+ Pattern p = Pattern.compile(".+\\.0");
+
+ for (File f : PrivilegedFileHelper.listFiles(restoreDir, new FileFilter()
+ {
+ public boolean accept(File pathname)
+ {
+ Pattern p = Pattern.compile(".+\\.[0-9]+");
+ Matcher m = p.matcher(pathname.getName());
+ return m.matches();
+ }
+ }))
+ {
+ Matcher m = p.matcher(f.getName());
+ if (m.matches())
+ {
+ return f;
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Get list of incremental backup files.
+ *
+ * @param restoreDir
+ * @return list of files
+ */
+ public static List<File> getIncrementalFiles(File restoreDir)
+ {
+ ArrayList<File> list = new ArrayList<File>();
+
+ Pattern fullBackupPattern = Pattern.compile(".+\\.0");
+
+ for (File f : PrivilegedFileHelper.listFiles(restoreDir, new FileFilter()
+ {
+ public boolean accept(File pathname)
+ {
+ Pattern p = Pattern.compile(".+\\.[0-9]+");
+ Matcher m = p.matcher(pathname.getName());
+ return m.matches();
+ }
+ }))
+ {
+ if (fullBackupPattern.matcher(f.getName()).matches() == false)
+ {
+ list.add(f);
+ }
+ }
+
+ return list;
+ }
+
+ /**
+ * Perform incremental restore operation.
+ *
+ * @param incrementalBackupFile
+ * incremental backup file
+ * @throws FileNotFoundException
+ * @throws IOException
+ * @throws ClassNotFoundException
+ * @throws RepositoryException
+ */
+ public void incrementalRestore(File incrementalBackupFile) throws FileNotFoundException, IOException,
+ ClassNotFoundException, RepositoryException
+ {
+ ObjectInputStream ois = null;
+ try
+ {
+ ois = new ObjectInputStream(PrivilegedFileHelper.fileInputStream(incrementalBackupFile));
+
+ while (true)
+ {
+ TransactionChangesLog changesLog = readExternal(ois);
+ changesLog.setSystemId(Constants.JCR_CORE_RESTORE_WORKSPACE_INITIALIZER_SYSTEM_ID); // mark changes
+
+ ChangesLogIterator cli = changesLog.getLogIterator();
+ while (cli.hasNextLog())
+ {
+ if (cli.nextLog().getEventType() == ExtendedEvent.LOCK)
+ cli.removeLog();
+ }
+
+ saveChangesLog(changesLog);
+ }
+ }
+ catch (EOFException ioe)
+ {
+ // ok - reading all data from backup file;
+ }
+ }
+
+ private void saveChangesLog(TransactionChangesLog changesLog) throws RepositoryException
+ {
+ try
+ {
+ dataManager.save(changesLog);
+ }
+ catch (JCRInvalidItemStateException e)
+ {
+ TransactionChangesLog normalizeChangesLog =
+ getNormalizedChangesLog(e.getIdentifier(), e.getState(), changesLog);
+ if (normalizeChangesLog != null)
+ saveChangesLog(normalizeChangesLog);
+ else
+ throw new RepositoryException(
+ "Collisions found during save of restore changes log, but caused item is not found by ID "
+ + e.getIdentifier() + ". " + e, e);
+ }
+ catch (JCRItemExistsException e)
+ {
+ TransactionChangesLog normalizeChangesLog =
+ getNormalizedChangesLog(e.getIdentifier(), e.getState(), changesLog);
+ if (normalizeChangesLog != null)
+ saveChangesLog(normalizeChangesLog);
+ else
+ throw new RepositoryException(
+ "Collisions found during save of restore changes log, but caused item is not found by ID "
+ + e.getIdentifier() + ". " + e, e);
+ }
+ }
+
+ private TransactionChangesLog getNormalizedChangesLog(String collisionID, int state, TransactionChangesLog changesLog)
+ {
+ ItemState citem = changesLog.getItemState(collisionID);
+
+ if (citem != null)
+ {
+
+ TransactionChangesLog result = new TransactionChangesLog();
+ result.setSystemId(changesLog.getSystemId());
+
+ ChangesLogIterator cli = changesLog.getLogIterator();
+ while (cli.hasNextLog())
+ {
+ ArrayList<ItemState> normalized = new ArrayList<ItemState>();
+ PlainChangesLog next = cli.nextLog();
+ for (ItemState change : next.getAllStates())
+ {
+ if (state == change.getState())
+ {
+ ItemData item = change.getData();
+ // targeted state
+ if (citem.isNode())
+ {
+ // Node... by ID and desc path
+ if (!item.getIdentifier().equals(collisionID)
+ && !item.getQPath().isDescendantOf(citem.getData().getQPath()))
+ normalized.add(change);
+ }
+ else if (!item.getIdentifier().equals(collisionID))
+ {
+ // Property... by ID
+ normalized.add(change);
+ }
+ }
+ else
+ // another state
+ normalized.add(change);
+ }
+
+ PlainChangesLog plog = new PlainChangesLogImpl(normalized, next.getSessionId(), next.getEventType());
+ result.addLog(plog);
+ }
+
+ return result;
+ }
+
+ return null;
+ }
+
+ private TransactionChangesLog readExternal(ObjectInputStream in) throws IOException, ClassNotFoundException
+ {
+ int changesLogType = in.readInt();
+
+ TransactionChangesLog transactionChangesLog = null;
+
+ if (changesLogType == RestoreChangesLog.Type.ItemDataChangesLog_with_Streams)
+ {
+
+ // read ChangesLog
+ transactionChangesLog = (TransactionChangesLog)in.readObject();
+
+ // read FixupStream count
+ int iFixupStream = in.readInt();
+
+ ArrayList<FixupStream> listFixupStreams = new ArrayList<FixupStream>();
+
+ for (int i = 0; i < iFixupStream; i++)
+ {
+ FixupStream fs = new FixupStream();
+ fs.readExternal(in);
+ listFixupStreams.add(fs);
+ }
+
+ // read stream data
+ int iStreamCount = in.readInt();
+ ArrayList<SpoolFile> listFiles = new ArrayList<SpoolFile>();
+
+ for (int i = 0; i < iStreamCount; i++)
+ {
+
+ // read file size
+ long fileSize = in.readLong();
+
+ // read content file
+ listFiles.add(getAsFile(in, fileSize));
+ }
+
+ RestoreChangesLog restoreChangesLog =
+ new RestoreChangesLog(transactionChangesLog, listFixupStreams, listFiles, fileCleaner);
+
+ restoreChangesLog.restore();
+
+ }
+ else if (changesLogType == RestoreChangesLog.Type.ItemDataChangesLog_without_Streams)
+ {
+ transactionChangesLog = (TransactionChangesLog)in.readObject();
+ }
+
+ return transactionChangesLog;
+ }
+
+ private SpoolFile getAsFile(ObjectInputStream ois, long fileSize) throws IOException
+ {
+ int bufferSize = 1024 * 8;
+ byte[] buf = new byte[bufferSize];
+
+ SpoolFile tempFile = SpoolFile.createTempFile("vdincb" + System.currentTimeMillis(), ".stmp", tempDir);
+ FileOutputStream fos = PrivilegedFileHelper.fileOutputStream(tempFile);
+ long readBytes = fileSize;
+
+ while (readBytes > 0)
+ {
+ // long longTemp = readByte - bufferSize;
+ if (readBytes >= bufferSize)
+ {
+ ois.readFully(buf);
+ fos.write(buf);
+ }
+ else if (readBytes < bufferSize)
+ {
+ ois.readFully(buf, 0, (int)readBytes);
+ fos.write(buf, 0, (int)readBytes);
+ }
+ readBytes -= bufferSize;
+ }
+
+ fos.flush();
+ fos.close();
+
+ return tempFile;
+ }
+
+ class RestoreChangesLog
+ {
+ public class Type
+ {
+ public static final int ItemDataChangesLog_without_Streams = 1;
+
+ public static final int ItemDataChangesLog_with_Streams = 2;
+ }
+
+ private TransactionChangesLog itemDataChangesLog;
+
+ private List<FixupStream> listFixupStream;
+
+ private List<SpoolFile> listFile;
+
+ private FileCleaner fileCleaner;
+
+ public RestoreChangesLog(TransactionChangesLog transactionChangesLog, List<FixupStream> listFixupStreams,
+ List<SpoolFile> listFiles, FileCleaner fileCleaner)
+ {
+ this.itemDataChangesLog = transactionChangesLog;
+ this.listFixupStream = listFixupStreams;
+ this.listFile = listFiles;
+ this.fileCleaner = fileCleaner;
+ }
+
+ public TransactionChangesLog getItemDataChangesLog()
+ {
+ return itemDataChangesLog;
+ }
+
+ public void restore() throws IOException
+ {
+ List<ItemState> listItemState = itemDataChangesLog.getAllStates();
+ for (int i = 0; i < this.listFixupStream.size(); i++)
+ {
+ ItemState itemState = listItemState.get(listFixupStream.get(i).getItemSateId());
+ ItemData itemData = itemState.getData();
+
+ PersistedPropertyData propertyData = (PersistedPropertyData)itemData;
+ ValueData vd = (propertyData.getValues().get(listFixupStream.get(i).getValueDataId()));
+
+ // re-init the value
+ propertyData.getValues().set(listFixupStream.get(i).getValueDataId(),
+ new StreamPersistedValueData(vd.getOrderNumber(), listFile.get(i)));
+ }
+
+ for (int i = 0; i < listFile.size(); i++)
+ fileCleaner.addFile(listFile.get(i));
+ }
+ }
+
+ class FixupStream implements Externalizable
+ {
+ int iItemStateId = -1;
+
+ int iValueDataId = -1;
+
+ public FixupStream()
+ {
+ }
+
+ public FixupStream(int itemState_, int valueData_)
+ {
+ iItemStateId = itemState_;
+ iValueDataId = valueData_;
+ }
+
+ public int getItemSateId()
+ {
+ return iItemStateId;
+ }
+
+ public int getValueDataId()
+ {
+ return iValueDataId;
+ }
+
+ public boolean compare(FixupStream fs)
+ {
+ boolean b = true;
+ if (fs.getItemSateId() != this.getItemSateId())
+ b = false;
+ if (fs.getValueDataId() != this.getValueDataId())
+ b = false;
+ return b;
+ }
+
+ public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
+ {
+ iItemStateId = in.readInt();
+ iValueDataId = in.readInt();
+ }
+
+ public void writeExternal(ObjectOutput out) throws IOException
+ {
+ out.writeInt(iItemStateId);
+ out.writeInt(iValueDataId);
+ }
+ }
+}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JdbcBackupable.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JdbcBackupable.java 2011-04-28 11:48:05 UTC (rev 4324)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/JdbcBackupable.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -38,6 +38,6 @@
* @throws RestoreException
* if any exception occurred
*/
- DataRestor getDataRestorer(File storageDir, Connection jdbcConn) throws BackupException;
+ DataRestore getDataRestorer(File storageDir, Connection jdbcConn) throws BackupException;
}
Deleted: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBRestor.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBRestor.java 2011-04-28 11:48:05 UTC (rev 4324)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBRestor.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -1,657 +0,0 @@
-/*
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.exoplatform.services.jcr.impl.backup.rdbms;
-
-import org.exoplatform.commons.utils.PrivilegedFileHelper;
-import org.exoplatform.commons.utils.PrivilegedSystemHelper;
-import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
-import org.exoplatform.services.jcr.config.WorkspaceEntry;
-import org.exoplatform.services.jcr.core.security.JCRRuntimePermissions;
-import org.exoplatform.services.jcr.dataflow.serialization.ObjectReader;
-import org.exoplatform.services.jcr.impl.Constants;
-import org.exoplatform.services.jcr.impl.backup.BackupException;
-import org.exoplatform.services.jcr.impl.backup.DataRestor;
-import org.exoplatform.services.jcr.impl.clean.rdbms.DBClean;
-import org.exoplatform.services.jcr.impl.clean.rdbms.DBCleanService;
-import org.exoplatform.services.jcr.impl.dataflow.serialization.ObjectZipReaderImpl;
-import org.exoplatform.services.jcr.impl.storage.jdbc.DialectDetecter;
-import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer;
-import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
-import org.exoplatform.services.log.ExoLogger;
-import org.exoplatform.services.log.Log;
-
-import java.io.ByteArrayInputStream;
-import java.io.EOFException;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.sql.Types;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import javax.naming.NamingException;
-
-/**
- * Created by The eXo Platform SAS.
- *
- * Date: 22 01 2011
- *
- * @author <a href="mailto:anatoliy.bazko@exoplatform.com.ua">Anatoliy Bazko</a>
- * @version $Id: DBRestor.java 34360 2010-11-11 11:11:11Z tolusha $
- */
-public class DBRestor implements DataRestor
-{
- /**
- * The maximum possible batch size.
- */
- private final int MAXIMUM_BATCH_SIZE = 1000;
-
- /**
- * List of temporary files.
- */
- private final List<File> spoolFileList = new ArrayList<File>();
-
- /**
- * The file cleaner.
- */
- private final FileCleaner fileCleaner;
-
- /**
- * Temporary directory.
- */
- private final File tempDir = new File(PrivilegedSystemHelper.getProperty("java.io.tmpdir"));
-
- /**
- * Maximum buffer size.
- */
- private final int maxBufferSize;
-
- /**
- * Logger.
- */
- protected static final Log LOG = ExoLogger.getLogger("exo.jcr.component.core.DBRestor");
-
- /**
- * Connection to database.
- */
- private final Connection jdbcConn;
-
- /**
- * Directory with tables dump.
- */
- private final File storageDir;
-
- /**
- * Restore table rules.
- */
- private final Map<String, RestoreTableRule> tables;
-
- /**
- * Database cleaner.
- */
- private final DBClean dbClean;
-
- /**
- * Constructor DBRestor.
- *
- * @throws NamingException
- * @throws SQLException
- * @throws RepositoryConfigurationException
- */
- public DBRestor(File storageDir, Connection jdbcConn, Map<String, RestoreTableRule> tables,
- WorkspaceEntry wsConfig, FileCleaner fileCleaner) throws NamingException, SQLException,
- RepositoryConfigurationException
- {
- this.jdbcConn = jdbcConn;
- this.fileCleaner = fileCleaner;
- this.maxBufferSize =
- wsConfig.getContainer().getParameterInteger(JDBCWorkspaceDataContainer.MAXBUFFERSIZE_PROP,
- JDBCWorkspaceDataContainer.DEF_MAXBUFFERSIZE);
-
- this.storageDir = storageDir;
- this.tables = tables;
- this.dbClean = DBCleanService.getDBCleaner(this.jdbcConn, wsConfig);
- }
-
- /**
- * {@inheritDoc}
- */
- public void clean() throws BackupException
- {
- try
- {
- dbClean.clean();
- }
- catch (SQLException e)
- {
- throw new BackupException(e);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public void restore() throws BackupException
- {
- Statement st = null;
-
- try
- {
- int dialect = DialectDetecter.detect(jdbcConn.getMetaData()).hashCode();
-
- for (Entry<String, RestoreTableRule> entry : tables.entrySet())
- {
- String tableName = entry.getKey();
- RestoreTableRule restoreRule = entry.getValue();
-
- String constraint = null;
- if (tableName.equals("JCR_SITEM") || tableName.equals("JCR_MITEM"))
- {
- if (dialect != DBBackup.DB_DIALECT_SYBASE)
- {
- // resolve constraint name depends on database
- String constraintName;
- if (dialect == DBBackup.DB_DIALECT_DB2 || dialect == DBBackup.DB_DIALECT_DB2V8)
- {
- constraintName = "JCR_FK_" + (restoreRule.getDstMultiDb() ? "M" : "S") + "ITEM_PAREN";
- }
- else
- {
- constraintName = "JCR_FK_" + (restoreRule.getDstMultiDb() ? "M" : "S") + "ITEM_PARENT";
- }
- constraint =
- "CONSTRAINT " + constraintName + " FOREIGN KEY(PARENT_ID) REFERENCES " + tableName + "(ID)";
-
- // drop constraint
- st = jdbcConn.createStatement();
-
- if (dialect == DBBackup.DB_DIALECT_MYSQL || dialect == DBBackup.DB_DIALECT_MYSQL_UTF8)
- {
- st.execute("ALTER TABLE " + tableName + " DROP FOREIGN KEY " + constraintName);
- }
- else
- {
- st.execute("ALTER TABLE " + tableName + " DROP CONSTRAINT " + constraintName);
- }
- }
- }
-
- restoreTable(storageDir, jdbcConn, tableName, restoreRule);
-
- if (constraint != null)
- {
- // add constraint
- st.execute("ALTER TABLE " + tableName + " ADD " + constraint);
- }
- }
- }
- catch (IOException e)
- {
- throw new BackupException(e);
- }
- catch (SQLException e)
- {
- SQLException next = e.getNextException();
- String errorTrace = "";
- while (next != null)
- {
- errorTrace += next.getMessage() + "; ";
- next = next.getNextException();
- }
-
- Throwable cause = e.getCause();
- String msg = "SQL Exception: " + errorTrace + (cause != null ? " (Cause: " + cause.getMessage() + ")" : "");
-
- throw new BackupException(msg, e);
- }
- finally
- {
- if (st != null)
- {
- try
- {
- st.close();
- }
- catch (SQLException e)
- {
- LOG.warn("Can't close statemnt", e);
- }
- }
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public void commit() throws BackupException
- {
- try
- {
- jdbcConn.commit();
- }
- catch (SQLException e)
- {
- throw new BackupException(e);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public void rollback() throws BackupException
- {
- try
- {
- jdbcConn.rollback();
- }
- catch (SQLException e)
- {
- throw new BackupException(e);
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public void close() throws BackupException
- {
- try
- {
- // in case for shared connection
- if (!jdbcConn.isClosed())
- {
- jdbcConn.close();
- }
- }
- catch (SQLException e)
- {
- throw new BackupException(e);
- }
- }
-
- /**
- * Restore table.
- */
- private void restoreTable(File storageDir, Connection jdbcConn, String tableName, RestoreTableRule restoreRule)
- throws IOException, SQLException
- {
- // Need privileges
- SecurityManager security = System.getSecurityManager();
- if (security != null)
- {
- security.checkPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION);
- }
-
- ObjectZipReaderImpl contentReader = null;
- ObjectZipReaderImpl contentLenReader = null;
-
- PreparedStatement insertNode = null;
- ResultSet tableMetaData = null;
-
- int dialect = DialectDetecter.detect(jdbcConn.getMetaData()).hashCode();
-
- // switch table name to lower case
- if (dialect == DBBackup.DB_DIALECT_PGSQL)
- {
- tableName = tableName.toLowerCase();
- }
-
- try
- {
- contentReader = new ObjectZipReaderImpl(PrivilegedFileHelper.zipInputStream(restoreRule.getContentFile()));
- contentReader.getNextEntry();
-
- contentLenReader =
- new ObjectZipReaderImpl(PrivilegedFileHelper.zipInputStream(restoreRule.getContentLenFile()));
- contentLenReader.getNextEntry();
-
- // get information about source table
- int sourceColumnCount = contentReader.readInt();
-
- List<Integer> columnType = new ArrayList<Integer>();
- List<String> columnName = new ArrayList<String>();
-
- for (int i = 0; i < sourceColumnCount; i++)
- {
- columnType.add(contentReader.readInt());
- columnName.add(contentReader.readString());
- }
-
- int targetColumnCount = sourceColumnCount;
- if (restoreRule.getDeleteColumnIndex() != null)
- {
- targetColumnCount--;
- }
- else if (restoreRule.getNewColumnIndex() != null)
- {
- targetColumnCount++;
-
- columnType.add(restoreRule.getNewColumnIndex(), restoreRule.getNewColumnType());
-
- String newColumnName =
- dialect == DBBackup.DB_DIALECT_PGSQL ? restoreRule.getNewColumnName().toLowerCase() : restoreRule
- .getNewColumnName();
- columnName.add(restoreRule.getNewColumnIndex(), newColumnName);
- }
-
- // construct statement
- String names = "";
- String parameters = "";
- for (int i = 0; i < targetColumnCount; i++)
- {
- if (restoreRule.getSkipColumnIndex() != null && restoreRule.getSkipColumnIndex() == i)
- {
- continue;
- }
- names += columnName.get(i) + (i == targetColumnCount - 1 ? "" : ",");
- parameters += "?" + (i == targetColumnCount - 1 ? "" : ",");
- }
-
- int batchSize = 0;
- insertNode =
- jdbcConn.prepareStatement("INSERT INTO " + tableName + " (" + names + ") VALUES(" + parameters + ")");
-
- // set data
- outer : while (true)
- {
- for (int i = 0, targetIndex = 0; i < columnType.size(); i++, targetIndex++)
- {
- InputStream stream;
- long len;
-
- if (restoreRule.getNewColumnIndex() != null && restoreRule.getNewColumnIndex() == i)
- {
- stream =
- new ByteArrayInputStream(restoreRule.getDstContainerName().getBytes(Constants.DEFAULT_ENCODING));
- len = ((ByteArrayInputStream)stream).available();
- }
- else
- {
- try
- {
- len = contentLenReader.readLong();
- }
- catch (EOFException e)
- {
- if (i == 0)
- {
- // content length file is empty check content file
- try
- {
- contentReader.readByte();
- }
- catch (EOFException e1)
- {
- break outer;
- }
- }
-
- throw new IOException("Content length file is empty but content still present", e);
- }
- stream = len == -1 ? null : spoolInputStream(contentReader, len);
- }
-
- if (restoreRule.getSkipColumnIndex() != null && restoreRule.getSkipColumnIndex() == i)
- {
- targetIndex--;
- continue;
- }
- else if (restoreRule.getDeleteColumnIndex() != null && restoreRule.getDeleteColumnIndex() == i)
- {
- targetIndex--;
- continue;
- }
-
- // set
- if (stream != null)
- {
- if (restoreRule.getConvertColumnIndex() != null && restoreRule.getConvertColumnIndex().contains(i))
- {
- // convert column value
- ByteArrayInputStream ba = (ByteArrayInputStream)stream;
- byte[] readBuffer = new byte[ba.available()];
- ba.read(readBuffer);
-
- String currentValue = new String(readBuffer, Constants.DEFAULT_ENCODING);
- if (currentValue.equals(Constants.ROOT_PARENT_UUID))
- {
- stream = new ByteArrayInputStream(Constants.ROOT_PARENT_UUID.getBytes());
- }
- else
- {
- if (restoreRule.getDstMultiDb())
- {
- if (!restoreRule.getSrcMultiDb())
- {
- stream =
- new ByteArrayInputStream(new String(readBuffer, Constants.DEFAULT_ENCODING).substring(
- restoreRule.getSrcContainerName().length()).getBytes());
- }
- }
- else
- {
- if (restoreRule.getSrcMultiDb())
- {
- StringBuilder builder = new StringBuilder();
- builder.append(restoreRule.getDstContainerName());
- builder.append(currentValue);
-
- stream = new ByteArrayInputStream(builder.toString().getBytes());
- }
- else
- {
- StringBuilder builder = new StringBuilder();
- builder.append(restoreRule.getDstContainerName());
- builder.append(new String(readBuffer, Constants.DEFAULT_ENCODING).substring(restoreRule
- .getSrcContainerName().length()));
-
- stream = new ByteArrayInputStream(builder.toString().getBytes());
- }
- }
- }
-
- len = ((ByteArrayInputStream)stream).available();
- }
-
- if (columnType.get(i) == Types.INTEGER || columnType.get(i) == Types.BIGINT
- || columnType.get(i) == Types.SMALLINT || columnType.get(i) == Types.TINYINT)
- {
- ByteArrayInputStream ba = (ByteArrayInputStream)stream;
- byte[] readBuffer = new byte[ba.available()];
- ba.read(readBuffer);
-
- String value = new String(readBuffer, Constants.DEFAULT_ENCODING);
- insertNode.setLong(targetIndex + 1, Integer.parseInt(value));
- }
- else if (columnType.get(i) == Types.BIT)
- {
- ByteArrayInputStream ba = (ByteArrayInputStream)stream;
- byte[] readBuffer = new byte[ba.available()];
- ba.read(readBuffer);
-
- String value = new String(readBuffer);
- if (dialect == DBBackup.DB_DIALECT_PGSQL)
- {
- insertNode.setBoolean(targetIndex + 1, value.equals("t"));
- }
- else
- {
- insertNode.setBoolean(targetIndex + 1, value.equals("1"));
- }
- }
- else if (columnType.get(i) == Types.BOOLEAN)
- {
- ByteArrayInputStream ba = (ByteArrayInputStream)stream;
- byte[] readBuffer = new byte[ba.available()];
- ba.read(readBuffer);
-
- String value = new String(readBuffer);
- insertNode.setBoolean(targetIndex + 1, value.equals("true"));
- }
- else if (columnType.get(i) == Types.VARBINARY || columnType.get(i) == Types.LONGVARBINARY
- || columnType.get(i) == Types.BLOB || columnType.get(i) == Types.BINARY
- || columnType.get(i) == Types.OTHER)
- {
- insertNode.setBinaryStream(targetIndex + 1, stream, (int)len);
- }
- else
- {
- byte[] readBuffer = new byte[(int)len];
- stream.read(readBuffer);
-
- insertNode.setString(targetIndex + 1, new String(readBuffer, Constants.DEFAULT_ENCODING));
- }
- }
- else
- {
- insertNode.setNull(targetIndex + 1, columnType.get(i));
- }
- }
-
- // add statement to batch
- insertNode.addBatch();
-
- if (++batchSize == MAXIMUM_BATCH_SIZE)
- {
- insertNode.executeBatch();
- batchSize = 0;
- }
- }
-
- if (batchSize != 0)
- {
- insertNode.executeBatch();
- }
- }
- finally
- {
- if (contentReader != null)
- {
- contentReader.close();
- }
-
- if (contentLenReader != null)
- {
- contentLenReader.close();
- }
-
- if (insertNode != null)
- {
- insertNode.close();
- }
-
- // delete all temporary files
- for (File file : spoolFileList)
- {
- if (!PrivilegedFileHelper.delete(file))
- {
- fileCleaner.addFile(file);
- }
- }
-
- if (tableMetaData != null)
- {
- tableMetaData.close();
- }
- }
- }
-
- /**
- * Spool input stream.
- */
- private InputStream spoolInputStream(ObjectReader in, long contentLen) throws IOException
- {
- byte[] buffer = new byte[0];
- byte[] tmpBuff;
- long readLen = 0;
- File sf = null;
- OutputStream sfout = null;
-
- try
- {
- while (true)
- {
- int needToRead = contentLen - readLen > 2048 ? 2048 : (int)(contentLen - readLen);
- tmpBuff = new byte[needToRead];
-
- if (needToRead == 0)
- {
- break;
- }
-
- in.readFully(tmpBuff);
-
- if (sfout != null)
- {
- sfout.write(tmpBuff);
- }
- else if (readLen + needToRead > maxBufferSize && fileCleaner != null)
- {
- sf = PrivilegedFileHelper.createTempFile("jcrvd", null, tempDir);
- sfout = PrivilegedFileHelper.fileOutputStream(sf);
-
- sfout.write(buffer);
- sfout.write(tmpBuff);
- buffer = null;
- }
- else
- {
- // reallocate new buffer and spool old buffer contents
- byte[] newBuffer = new byte[(int)(readLen + needToRead)];
- System.arraycopy(buffer, 0, newBuffer, 0, (int)readLen);
- System.arraycopy(tmpBuff, 0, newBuffer, (int)readLen, needToRead);
- buffer = newBuffer;
- }
-
- readLen += needToRead;
- }
-
- if (buffer != null)
- {
- return new ByteArrayInputStream(buffer);
- }
- else
- {
- return PrivilegedFileHelper.fileInputStream(sf);
- }
- }
- finally
- {
- if (sfout != null)
- {
- sfout.close();
- }
-
- if (sf != null)
- {
- spoolFileList.add(sf);
- }
- }
- }
-}
-
-
Copied: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBRestore.java (from rev 4323, jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBRestor.java)
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBRestore.java (rev 0)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DBRestore.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -0,0 +1,657 @@
+/*
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.exoplatform.services.jcr.impl.backup.rdbms;
+
+import org.exoplatform.commons.utils.PrivilegedFileHelper;
+import org.exoplatform.commons.utils.PrivilegedSystemHelper;
+import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
+import org.exoplatform.services.jcr.config.WorkspaceEntry;
+import org.exoplatform.services.jcr.core.security.JCRRuntimePermissions;
+import org.exoplatform.services.jcr.dataflow.serialization.ObjectReader;
+import org.exoplatform.services.jcr.impl.Constants;
+import org.exoplatform.services.jcr.impl.backup.BackupException;
+import org.exoplatform.services.jcr.impl.backup.DataRestore;
+import org.exoplatform.services.jcr.impl.clean.rdbms.DBClean;
+import org.exoplatform.services.jcr.impl.clean.rdbms.DBCleanService;
+import org.exoplatform.services.jcr.impl.dataflow.serialization.ObjectZipReaderImpl;
+import org.exoplatform.services.jcr.impl.storage.jdbc.DialectDetecter;
+import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer;
+import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
+
+import java.io.ByteArrayInputStream;
+import java.io.EOFException;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.sql.Types;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import javax.naming.NamingException;
+
+/**
+ * Created by The eXo Platform SAS.
+ *
+ * Date: 22 01 2011
+ *
+ * @author <a href="mailto:anatoliy.bazko@exoplatform.com.ua">Anatoliy Bazko</a>
+ * @version $Id: DBRestor.java 34360 2010-11-11 11:11:11Z tolusha $
+ */
+public class DBRestore implements DataRestore
+{
+ /**
+ * The maximum possible batch size.
+ */
+ private final int MAXIMUM_BATCH_SIZE = 1000;
+
+ /**
+ * List of temporary files.
+ */
+ private final List<File> spoolFileList = new ArrayList<File>();
+
+ /**
+ * The file cleaner.
+ */
+ private final FileCleaner fileCleaner;
+
+ /**
+ * Temporary directory.
+ */
+ private final File tempDir = new File(PrivilegedSystemHelper.getProperty("java.io.tmpdir"));
+
+ /**
+ * Maximum buffer size.
+ */
+ private final int maxBufferSize;
+
+ /**
+ * Logger.
+ */
+ protected static final Log LOG = ExoLogger.getLogger("exo.jcr.component.core.DBRestor");
+
+ /**
+ * Connection to database.
+ */
+ private final Connection jdbcConn;
+
+ /**
+ * Directory with tables dump.
+ */
+ private final File storageDir;
+
+ /**
+ * Restore table rules.
+ */
+ private final Map<String, RestoreTableRule> tables;
+
+ /**
+ * Database cleaner.
+ */
+ private final DBClean dbClean;
+
+ /**
+ * Constructor DBRestor.
+ *
+ * @throws NamingException
+ * @throws SQLException
+ * @throws RepositoryConfigurationException
+ */
+ public DBRestore(File storageDir, Connection jdbcConn, Map<String, RestoreTableRule> tables,
+ WorkspaceEntry wsConfig, FileCleaner fileCleaner) throws NamingException, SQLException,
+ RepositoryConfigurationException
+ {
+ this.jdbcConn = jdbcConn;
+ this.fileCleaner = fileCleaner;
+ this.maxBufferSize =
+ wsConfig.getContainer().getParameterInteger(JDBCWorkspaceDataContainer.MAXBUFFERSIZE_PROP,
+ JDBCWorkspaceDataContainer.DEF_MAXBUFFERSIZE);
+
+ this.storageDir = storageDir;
+ this.tables = tables;
+ this.dbClean = DBCleanService.getDBCleaner(this.jdbcConn, wsConfig);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void clean() throws BackupException
+ {
+ try
+ {
+ dbClean.clean();
+ }
+ catch (SQLException e)
+ {
+ throw new BackupException(e);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void restore() throws BackupException
+ {
+ Statement st = null;
+
+ try
+ {
+ int dialect = DialectDetecter.detect(jdbcConn.getMetaData()).hashCode();
+
+ for (Entry<String, RestoreTableRule> entry : tables.entrySet())
+ {
+ String tableName = entry.getKey();
+ RestoreTableRule restoreRule = entry.getValue();
+
+ String constraint = null;
+ if (tableName.equals("JCR_SITEM") || tableName.equals("JCR_MITEM"))
+ {
+ if (dialect != DBBackup.DB_DIALECT_SYBASE)
+ {
+ // resolve constraint name depends on database
+ String constraintName;
+ if (dialect == DBBackup.DB_DIALECT_DB2 || dialect == DBBackup.DB_DIALECT_DB2V8)
+ {
+ constraintName = "JCR_FK_" + (restoreRule.getDstMultiDb() ? "M" : "S") + "ITEM_PAREN";
+ }
+ else
+ {
+ constraintName = "JCR_FK_" + (restoreRule.getDstMultiDb() ? "M" : "S") + "ITEM_PARENT";
+ }
+ constraint =
+ "CONSTRAINT " + constraintName + " FOREIGN KEY(PARENT_ID) REFERENCES " + tableName + "(ID)";
+
+ // drop constraint
+ st = jdbcConn.createStatement();
+
+ if (dialect == DBBackup.DB_DIALECT_MYSQL || dialect == DBBackup.DB_DIALECT_MYSQL_UTF8)
+ {
+ st.execute("ALTER TABLE " + tableName + " DROP FOREIGN KEY " + constraintName);
+ }
+ else
+ {
+ st.execute("ALTER TABLE " + tableName + " DROP CONSTRAINT " + constraintName);
+ }
+ }
+ }
+
+ restoreTable(storageDir, jdbcConn, tableName, restoreRule);
+
+ if (constraint != null)
+ {
+ // add constraint
+ st.execute("ALTER TABLE " + tableName + " ADD " + constraint);
+ }
+ }
+ }
+ catch (IOException e)
+ {
+ throw new BackupException(e);
+ }
+ catch (SQLException e)
+ {
+ SQLException next = e.getNextException();
+ String errorTrace = "";
+ while (next != null)
+ {
+ errorTrace += next.getMessage() + "; ";
+ next = next.getNextException();
+ }
+
+ Throwable cause = e.getCause();
+ String msg = "SQL Exception: " + errorTrace + (cause != null ? " (Cause: " + cause.getMessage() + ")" : "");
+
+ throw new BackupException(msg, e);
+ }
+ finally
+ {
+ if (st != null)
+ {
+ try
+ {
+ st.close();
+ }
+ catch (SQLException e)
+ {
+ LOG.warn("Can't close statemnt", e);
+ }
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void commit() throws BackupException
+ {
+ try
+ {
+ jdbcConn.commit();
+ }
+ catch (SQLException e)
+ {
+ throw new BackupException(e);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void rollback() throws BackupException
+ {
+ try
+ {
+ jdbcConn.rollback();
+ }
+ catch (SQLException e)
+ {
+ throw new BackupException(e);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void close() throws BackupException
+ {
+ try
+ {
+ // in case for shared connection
+ if (!jdbcConn.isClosed())
+ {
+ jdbcConn.close();
+ }
+ }
+ catch (SQLException e)
+ {
+ throw new BackupException(e);
+ }
+ }
+
+ /**
+ * Restore table.
+ */
+ private void restoreTable(File storageDir, Connection jdbcConn, String tableName, RestoreTableRule restoreRule)
+ throws IOException, SQLException
+ {
+ // Need privileges
+ SecurityManager security = System.getSecurityManager();
+ if (security != null)
+ {
+ security.checkPermission(JCRRuntimePermissions.MANAGE_REPOSITORY_PERMISSION);
+ }
+
+ ObjectZipReaderImpl contentReader = null;
+ ObjectZipReaderImpl contentLenReader = null;
+
+ PreparedStatement insertNode = null;
+ ResultSet tableMetaData = null;
+
+ int dialect = DialectDetecter.detect(jdbcConn.getMetaData()).hashCode();
+
+ // switch table name to lower case
+ if (dialect == DBBackup.DB_DIALECT_PGSQL)
+ {
+ tableName = tableName.toLowerCase();
+ }
+
+ try
+ {
+ contentReader = new ObjectZipReaderImpl(PrivilegedFileHelper.zipInputStream(restoreRule.getContentFile()));
+ contentReader.getNextEntry();
+
+ contentLenReader =
+ new ObjectZipReaderImpl(PrivilegedFileHelper.zipInputStream(restoreRule.getContentLenFile()));
+ contentLenReader.getNextEntry();
+
+ // get information about source table
+ int sourceColumnCount = contentReader.readInt();
+
+ List<Integer> columnType = new ArrayList<Integer>();
+ List<String> columnName = new ArrayList<String>();
+
+ for (int i = 0; i < sourceColumnCount; i++)
+ {
+ columnType.add(contentReader.readInt());
+ columnName.add(contentReader.readString());
+ }
+
+ int targetColumnCount = sourceColumnCount;
+ if (restoreRule.getDeleteColumnIndex() != null)
+ {
+ targetColumnCount--;
+ }
+ else if (restoreRule.getNewColumnIndex() != null)
+ {
+ targetColumnCount++;
+
+ columnType.add(restoreRule.getNewColumnIndex(), restoreRule.getNewColumnType());
+
+ String newColumnName =
+ dialect == DBBackup.DB_DIALECT_PGSQL ? restoreRule.getNewColumnName().toLowerCase() : restoreRule
+ .getNewColumnName();
+ columnName.add(restoreRule.getNewColumnIndex(), newColumnName);
+ }
+
+ // construct statement
+ String names = "";
+ String parameters = "";
+ for (int i = 0; i < targetColumnCount; i++)
+ {
+ if (restoreRule.getSkipColumnIndex() != null && restoreRule.getSkipColumnIndex() == i)
+ {
+ continue;
+ }
+ names += columnName.get(i) + (i == targetColumnCount - 1 ? "" : ",");
+ parameters += "?" + (i == targetColumnCount - 1 ? "" : ",");
+ }
+
+ int batchSize = 0;
+ insertNode =
+ jdbcConn.prepareStatement("INSERT INTO " + tableName + " (" + names + ") VALUES(" + parameters + ")");
+
+ // set data
+ outer : while (true)
+ {
+ for (int i = 0, targetIndex = 0; i < columnType.size(); i++, targetIndex++)
+ {
+ InputStream stream;
+ long len;
+
+ if (restoreRule.getNewColumnIndex() != null && restoreRule.getNewColumnIndex() == i)
+ {
+ stream =
+ new ByteArrayInputStream(restoreRule.getDstContainerName().getBytes(Constants.DEFAULT_ENCODING));
+ len = ((ByteArrayInputStream)stream).available();
+ }
+ else
+ {
+ try
+ {
+ len = contentLenReader.readLong();
+ }
+ catch (EOFException e)
+ {
+ if (i == 0)
+ {
+ // content length file is empty check content file
+ try
+ {
+ contentReader.readByte();
+ }
+ catch (EOFException e1)
+ {
+ break outer;
+ }
+ }
+
+ throw new IOException("Content length file is empty but content still present", e);
+ }
+ stream = len == -1 ? null : spoolInputStream(contentReader, len);
+ }
+
+ if (restoreRule.getSkipColumnIndex() != null && restoreRule.getSkipColumnIndex() == i)
+ {
+ targetIndex--;
+ continue;
+ }
+ else if (restoreRule.getDeleteColumnIndex() != null && restoreRule.getDeleteColumnIndex() == i)
+ {
+ targetIndex--;
+ continue;
+ }
+
+ // set
+ if (stream != null)
+ {
+ if (restoreRule.getConvertColumnIndex() != null && restoreRule.getConvertColumnIndex().contains(i))
+ {
+ // convert column value
+ ByteArrayInputStream ba = (ByteArrayInputStream)stream;
+ byte[] readBuffer = new byte[ba.available()];
+ ba.read(readBuffer);
+
+ String currentValue = new String(readBuffer, Constants.DEFAULT_ENCODING);
+ if (currentValue.equals(Constants.ROOT_PARENT_UUID))
+ {
+ stream = new ByteArrayInputStream(Constants.ROOT_PARENT_UUID.getBytes());
+ }
+ else
+ {
+ if (restoreRule.getDstMultiDb())
+ {
+ if (!restoreRule.getSrcMultiDb())
+ {
+ stream =
+ new ByteArrayInputStream(new String(readBuffer, Constants.DEFAULT_ENCODING).substring(
+ restoreRule.getSrcContainerName().length()).getBytes());
+ }
+ }
+ else
+ {
+ if (restoreRule.getSrcMultiDb())
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append(restoreRule.getDstContainerName());
+ builder.append(currentValue);
+
+ stream = new ByteArrayInputStream(builder.toString().getBytes());
+ }
+ else
+ {
+ StringBuilder builder = new StringBuilder();
+ builder.append(restoreRule.getDstContainerName());
+ builder.append(new String(readBuffer, Constants.DEFAULT_ENCODING).substring(restoreRule
+ .getSrcContainerName().length()));
+
+ stream = new ByteArrayInputStream(builder.toString().getBytes());
+ }
+ }
+ }
+
+ len = ((ByteArrayInputStream)stream).available();
+ }
+
+ if (columnType.get(i) == Types.INTEGER || columnType.get(i) == Types.BIGINT
+ || columnType.get(i) == Types.SMALLINT || columnType.get(i) == Types.TINYINT)
+ {
+ ByteArrayInputStream ba = (ByteArrayInputStream)stream;
+ byte[] readBuffer = new byte[ba.available()];
+ ba.read(readBuffer);
+
+ String value = new String(readBuffer, Constants.DEFAULT_ENCODING);
+ insertNode.setLong(targetIndex + 1, Integer.parseInt(value));
+ }
+ else if (columnType.get(i) == Types.BIT)
+ {
+ ByteArrayInputStream ba = (ByteArrayInputStream)stream;
+ byte[] readBuffer = new byte[ba.available()];
+ ba.read(readBuffer);
+
+ String value = new String(readBuffer);
+ if (dialect == DBBackup.DB_DIALECT_PGSQL)
+ {
+ insertNode.setBoolean(targetIndex + 1, value.equals("t"));
+ }
+ else
+ {
+ insertNode.setBoolean(targetIndex + 1, value.equals("1"));
+ }
+ }
+ else if (columnType.get(i) == Types.BOOLEAN)
+ {
+ ByteArrayInputStream ba = (ByteArrayInputStream)stream;
+ byte[] readBuffer = new byte[ba.available()];
+ ba.read(readBuffer);
+
+ String value = new String(readBuffer);
+ insertNode.setBoolean(targetIndex + 1, value.equals("true"));
+ }
+ else if (columnType.get(i) == Types.VARBINARY || columnType.get(i) == Types.LONGVARBINARY
+ || columnType.get(i) == Types.BLOB || columnType.get(i) == Types.BINARY
+ || columnType.get(i) == Types.OTHER)
+ {
+ insertNode.setBinaryStream(targetIndex + 1, stream, (int)len);
+ }
+ else
+ {
+ byte[] readBuffer = new byte[(int)len];
+ stream.read(readBuffer);
+
+ insertNode.setString(targetIndex + 1, new String(readBuffer, Constants.DEFAULT_ENCODING));
+ }
+ }
+ else
+ {
+ insertNode.setNull(targetIndex + 1, columnType.get(i));
+ }
+ }
+
+ // add statement to batch
+ insertNode.addBatch();
+
+ if (++batchSize == MAXIMUM_BATCH_SIZE)
+ {
+ insertNode.executeBatch();
+ batchSize = 0;
+ }
+ }
+
+ if (batchSize != 0)
+ {
+ insertNode.executeBatch();
+ }
+ }
+ finally
+ {
+ if (contentReader != null)
+ {
+ contentReader.close();
+ }
+
+ if (contentLenReader != null)
+ {
+ contentLenReader.close();
+ }
+
+ if (insertNode != null)
+ {
+ insertNode.close();
+ }
+
+ // delete all temporary files
+ for (File file : spoolFileList)
+ {
+ if (!PrivilegedFileHelper.delete(file))
+ {
+ fileCleaner.addFile(file);
+ }
+ }
+
+ if (tableMetaData != null)
+ {
+ tableMetaData.close();
+ }
+ }
+ }
+
+ /**
+ * Spool input stream.
+ */
+ private InputStream spoolInputStream(ObjectReader in, long contentLen) throws IOException
+ {
+ byte[] buffer = new byte[0];
+ byte[] tmpBuff;
+ long readLen = 0;
+ File sf = null;
+ OutputStream sfout = null;
+
+ try
+ {
+ while (true)
+ {
+ int needToRead = contentLen - readLen > 2048 ? 2048 : (int)(contentLen - readLen);
+ tmpBuff = new byte[needToRead];
+
+ if (needToRead == 0)
+ {
+ break;
+ }
+
+ in.readFully(tmpBuff);
+
+ if (sfout != null)
+ {
+ sfout.write(tmpBuff);
+ }
+ else if (readLen + needToRead > maxBufferSize && fileCleaner != null)
+ {
+ sf = PrivilegedFileHelper.createTempFile("jcrvd", null, tempDir);
+ sfout = PrivilegedFileHelper.fileOutputStream(sf);
+
+ sfout.write(buffer);
+ sfout.write(tmpBuff);
+ buffer = null;
+ }
+ else
+ {
+ // reallocate new buffer and spool old buffer contents
+ byte[] newBuffer = new byte[(int)(readLen + needToRead)];
+ System.arraycopy(buffer, 0, newBuffer, 0, (int)readLen);
+ System.arraycopy(tmpBuff, 0, newBuffer, (int)readLen, needToRead);
+ buffer = newBuffer;
+ }
+
+ readLen += needToRead;
+ }
+
+ if (buffer != null)
+ {
+ return new ByteArrayInputStream(buffer);
+ }
+ else
+ {
+ return PrivilegedFileHelper.fileInputStream(sf);
+ }
+ }
+ finally
+ {
+ if (sfout != null)
+ {
+ sfout.close();
+ }
+
+ if (sf != null)
+ {
+ spoolFileList.add(sf);
+ }
+ }
+ }
+}
+
+
Deleted: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DirectoryRestor.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DirectoryRestor.java 2011-04-28 11:48:05 UTC (rev 4324)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DirectoryRestor.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -1,195 +0,0 @@
-/*
- * Copyright (C) 2003-2010 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.impl.backup.rdbms;
-
-import org.exoplatform.commons.utils.PrivilegedFileHelper;
-import org.exoplatform.commons.utils.PrivilegedSystemHelper;
-import org.exoplatform.services.jcr.impl.backup.BackupException;
-import org.exoplatform.services.jcr.impl.backup.DataRestor;
-import org.exoplatform.services.jcr.impl.util.io.DirectoryHelper;
-import org.exoplatform.services.jcr.util.IdGenerator;
-import org.exoplatform.services.log.ExoLogger;
-import org.exoplatform.services.log.Log;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author <a href="mailto:anatoliy.bazko@gmail.com">Anatoliy Bazko</a>
- * @version $Id: DirectoryRestorer.java 34360 2009-07-22 23:58:59Z tolusha $
- */
-public class DirectoryRestor implements DataRestor
-{
-
- /**
- * Logger.
- */
- protected final static Log LOG = ExoLogger.getLogger("exo.jcr.component.core.DirectoryRestorer");
-
- /**
- * The list of directories with actual data.
- */
- protected final List<File> dataDirs = new ArrayList<File>();
-
- /**
- * The list of directories with backuped data.
- */
- protected final List<File> backupDirs = new ArrayList<File>();
-
- /**
- * The list of temporary directories.
- */
- private final List<File> tmpDirs = new ArrayList<File>();
-
- /**
- * Java temporary directory.
- */
- protected final File tempDir = new File(PrivilegedSystemHelper.getProperty("java.io.tmpdir"));
-
- /**
- * The prefix for temporary directories.
- */
- private static final String PREFIX = "dr";
-
- /**
- * Constructor DirectoryRestorer.
- *
- * @param dataDirs
- * @param backupDirs
- */
- public DirectoryRestor(List<File> dataDirs, List<File> backupDirs)
- {
- this.dataDirs.addAll(dataDirs);
- this.backupDirs.addAll(backupDirs);
- }
-
- /**
- * Constructor DirectoryRestorer.
- *
- * @param dataDir
- * @param backupDir
- */
- public DirectoryRestor(File dataDir, File backupDir)
- {
- this.dataDirs.add(dataDir);
- this.backupDirs.add(backupDir);
- }
-
- /**
- * {@inheritDoc}
- */
- public void clean() throws BackupException
- {
- for (File dataDir : dataDirs)
- {
- try
- {
- File tmpDir = new File(tempDir, PREFIX + IdGenerator.generate());
- PrivilegedFileHelper.mkdirs(tmpDir);
- tmpDirs.add(tmpDir);
-
- if (PrivilegedFileHelper.exists(dataDir))
- {
- DirectoryHelper.copyDirectory(dataDir, tmpDir);
- DirectoryHelper.removeDirectory(dataDir);
- }
- }
- catch (IOException e)
- {
- throw new BackupException(e);
- }
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public void restore() throws BackupException
- {
- for (int i = 0; i < backupDirs.size(); i++)
- {
- File backupDir = backupDirs.get(i);
- File dataDir = dataDirs.get(i);
-
- try
- {
- DirectoryHelper.uncompressDirectory(backupDir, dataDir);
- }
- catch (IOException e)
- {
- throw new BackupException(e);
- }
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public void commit() throws BackupException
- {
- }
-
- /**
- * {@inheritDoc}
- */
- public void rollback() throws BackupException
- {
- for (int i = 0; i < tmpDirs.size(); i++)
- {
- try
- {
- File tmpDir = tmpDirs.get(i);
- File dataDir = dataDirs.get(i);
-
- if (PrivilegedFileHelper.exists(dataDir))
- {
- DirectoryHelper.removeDirectory(dataDir);
- }
-
- DirectoryHelper.copyDirectory(tmpDir, dataDir);
- }
- catch (IOException e)
- {
- throw new BackupException(e);
- }
- }
- }
-
- /**
- * {@inheritDoc}
- */
- public void close() throws BackupException
- {
- for (File tmpDir : tmpDirs)
- {
- try
- {
- DirectoryHelper.removeDirectory(tmpDir);
- }
- catch (IOException e)
- {
- throw new BackupException(e);
- }
- }
-
- dataDirs.clear();
- backupDirs.clear();
- tmpDirs.clear();
- }
-}
Copied: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DirectoryRestore.java (from rev 4323, jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DirectoryRestor.java)
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DirectoryRestore.java (rev 0)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/backup/rdbms/DirectoryRestore.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2003-2010 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.impl.backup.rdbms;
+
+import org.exoplatform.commons.utils.PrivilegedFileHelper;
+import org.exoplatform.commons.utils.PrivilegedSystemHelper;
+import org.exoplatform.services.jcr.impl.backup.BackupException;
+import org.exoplatform.services.jcr.impl.backup.DataRestore;
+import org.exoplatform.services.jcr.impl.util.io.DirectoryHelper;
+import org.exoplatform.services.jcr.util.IdGenerator;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:anatoliy.bazko@gmail.com">Anatoliy Bazko</a>
+ * @version $Id: DirectoryRestorere.java 34360 2009-07-22 23:58:59Z tolusha $
+ */
+public class DirectoryRestore implements DataRestore
+{
+
+ /**
+ * Logger.
+ */
+ protected final static Log LOG = ExoLogger.getLogger("exo.jcr.component.core.DirectoryRestorer");
+
+ /**
+ * The list of directories with actual data.
+ */
+ protected final List<File> dataDirs = new ArrayList<File>();
+
+ /**
+ * The list of directories with backuped data.
+ */
+ protected final List<File> backupDirs = new ArrayList<File>();
+
+ /**
+ * The list of temporary directories.
+ */
+ private final List<File> tmpDirs = new ArrayList<File>();
+
+ /**
+ * Java temporary directory.
+ */
+ protected final File tempDir = new File(PrivilegedSystemHelper.getProperty("java.io.tmpdir"));
+
+ /**
+ * The prefix for temporary directories.
+ */
+ private static final String PREFIX = "dr";
+
+ /**
+ * Constructor DirectoryRestorer.
+ *
+ * @param dataDirs
+ * @param backupDirs
+ */
+ public DirectoryRestore(List<File> dataDirs, List<File> backupDirs)
+ {
+ this.dataDirs.addAll(dataDirs);
+ this.backupDirs.addAll(backupDirs);
+ }
+
+ /**
+ * Constructor DirectoryRestorer.
+ *
+ * @param dataDir
+ * @param backupDir
+ */
+ public DirectoryRestore(File dataDir, File backupDir)
+ {
+ this.dataDirs.add(dataDir);
+ this.backupDirs.add(backupDir);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void clean() throws BackupException
+ {
+ for (File dataDir : dataDirs)
+ {
+ try
+ {
+ File tmpDir = new File(tempDir, PREFIX + IdGenerator.generate());
+ PrivilegedFileHelper.mkdirs(tmpDir);
+ tmpDirs.add(tmpDir);
+
+ if (PrivilegedFileHelper.exists(dataDir))
+ {
+ DirectoryHelper.copyDirectory(dataDir, tmpDir);
+ DirectoryHelper.removeDirectory(dataDir);
+ }
+ }
+ catch (IOException e)
+ {
+ throw new BackupException(e);
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void restore() throws BackupException
+ {
+ for (int i = 0; i < backupDirs.size(); i++)
+ {
+ File backupDir = backupDirs.get(i);
+ File dataDir = dataDirs.get(i);
+
+ try
+ {
+ DirectoryHelper.uncompressDirectory(backupDir, dataDir);
+ }
+ catch (IOException e)
+ {
+ throw new BackupException(e);
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void commit() throws BackupException
+ {
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void rollback() throws BackupException
+ {
+ for (int i = 0; i < tmpDirs.size(); i++)
+ {
+ try
+ {
+ File tmpDir = tmpDirs.get(i);
+ File dataDir = dataDirs.get(i);
+
+ if (PrivilegedFileHelper.exists(dataDir))
+ {
+ DirectoryHelper.removeDirectory(dataDir);
+ }
+
+ DirectoryHelper.copyDirectory(tmpDir, dataDir);
+ }
+ catch (IOException e)
+ {
+ throw new BackupException(e);
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void close() throws BackupException
+ {
+ for (File tmpDir : tmpDirs)
+ {
+ try
+ {
+ DirectoryHelper.removeDirectory(tmpDir);
+ }
+ catch (IOException e)
+ {
+ throw new BackupException(e);
+ }
+ }
+
+ dataDirs.clear();
+ backupDirs.clear();
+ tmpDirs.clear();
+ }
+}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java 2011-04-28 11:48:05 UTC (rev 4324)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -28,7 +28,7 @@
import org.exoplatform.services.jcr.datamodel.IllegalNameException;
import org.exoplatform.services.jcr.datamodel.NodeData;
import org.exoplatform.services.jcr.impl.Constants;
-import org.exoplatform.services.jcr.impl.backup.JCRRestor;
+import org.exoplatform.services.jcr.impl.backup.JCRRestore;
import org.exoplatform.services.jcr.impl.core.nodetype.NodeTypeManagerImpl;
import org.exoplatform.services.jcr.impl.core.value.ValueFactoryImpl;
import org.exoplatform.services.jcr.impl.dataflow.persistent.CacheableWorkspaceDataManager;
@@ -63,7 +63,7 @@
restoreDir = restorePath;
- String fullBackupPath = PrivilegedFileHelper.getAbsolutePath(JCRRestor.getFullBackupFile(new File(restoreDir)));
+ String fullBackupPath = PrivilegedFileHelper.getAbsolutePath(JCRRestore.getFullBackupFile(new File(restoreDir)));
if (fullBackupPath == null)
{
@@ -97,8 +97,8 @@
dataManager.save(tLog);
// restore from incremental backup
- JCRRestor restorer = new JCRRestor(dataManager, fileCleaner);
- for (File incrBackupFile : JCRRestor.getIncrementalFiles(new File(restoreDir)))
+ JCRRestore restorer = new JCRRestore(dataManager, fileCleaner);
+ for (File incrBackupFile : JCRRestore.getIncrementalFiles(new File(restoreDir)))
{
restorer.incrementalRestore(incrBackupFile);
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cacheable/AbstractCacheableLockManager.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cacheable/AbstractCacheableLockManager.java 2011-04-28 11:48:05 UTC (rev 4324)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/cacheable/AbstractCacheableLockManager.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -38,8 +38,8 @@
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.backup.BackupException;
import org.exoplatform.services.jcr.impl.backup.Backupable;
-import org.exoplatform.services.jcr.impl.backup.DataRestor;
-import org.exoplatform.services.jcr.impl.backup.DummyDataRestor;
+import org.exoplatform.services.jcr.impl.backup.DataRestore;
+import org.exoplatform.services.jcr.impl.backup.DummyDataRestore;
import org.exoplatform.services.jcr.impl.backup.rdbms.DBBackup;
import org.exoplatform.services.jcr.impl.core.SessionDataManager;
import org.exoplatform.services.jcr.impl.core.lock.LockRemover;
@@ -864,7 +864,7 @@
/**
* {@inheritDoc}
*/
- public DataRestor getDataRestorer(File storageDir) throws BackupException
+ public DataRestore getDataRestorer(File storageDir) throws BackupException
{
List<LockData> locks = new ArrayList<LockData>();
@@ -876,7 +876,7 @@
// it is possible that backup was created on configuration without Backupable WorkspaceLockManager class
if (!PrivilegedFileHelper.exists(contentFile))
{
- return new DummyDataRestor();
+ return new DummyDataRestore();
}
in = new ObjectInputStream(PrivilegedFileHelper.fileInputStream(contentFile));
@@ -917,20 +917,20 @@
}
}
- return new CacheLocksRestor(locks);
+ return new CacheLocksRestore(locks);
}
/**
* Cache restorer.
*/
- protected class CacheLocksRestor implements DataRestor
+ protected class CacheLocksRestore implements DataRestore
{
final private List<LockData> backupLocks = new ArrayList<LockData>();
private List<LockData> actualLocks = new ArrayList<LockData>();
- CacheLocksRestor(final List<LockData> backupLocks)
+ CacheLocksRestore(final List<LockData> backupLocks)
{
this.backupLocks.addAll(backupLocks);
}
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-04-28 11:48:05 UTC (rev 4324)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/SearchManager.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -50,11 +50,11 @@
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.backup.BackupException;
import org.exoplatform.services.jcr.impl.backup.Backupable;
-import org.exoplatform.services.jcr.impl.backup.DataRestor;
+import org.exoplatform.services.jcr.impl.backup.DataRestore;
import org.exoplatform.services.jcr.impl.backup.ResumeException;
import org.exoplatform.services.jcr.impl.backup.SuspendException;
import org.exoplatform.services.jcr.impl.backup.Suspendable;
-import org.exoplatform.services.jcr.impl.backup.rdbms.DirectoryRestor;
+import org.exoplatform.services.jcr.impl.backup.rdbms.DirectoryRestore;
import org.exoplatform.services.jcr.impl.core.LocationFactory;
import org.exoplatform.services.jcr.impl.core.NamespaceRegistryImpl;
import org.exoplatform.services.jcr.impl.core.SessionDataManager;
@@ -1548,7 +1548,7 @@
/**
* {@inheritDoc}}
*/
- public DataRestor getDataRestorer(File storageDir) throws BackupException
+ public DataRestore getDataRestorer(File storageDir) throws BackupException
{
try
{
@@ -1561,7 +1561,7 @@
}
else
{
- return new DirectoryRestor(getIndexDirectory(), backupDir);
+ return new DirectoryRestore(getIndexDirectory(), backupDir);
}
}
catch (RepositoryConfigurationException e)
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java 2011-04-28 11:48:05 UTC (rev 4324)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/infinispan/ISPNCacheWorkspaceStorageCache.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -42,7 +42,7 @@
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.backup.BackupException;
import org.exoplatform.services.jcr.impl.backup.Backupable;
-import org.exoplatform.services.jcr.impl.backup.DataRestor;
+import org.exoplatform.services.jcr.impl.backup.DataRestore;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
import org.exoplatform.services.jcr.infinispan.ISPNCacheFactory;
@@ -535,7 +535,6 @@
// order children by orderNumber, as HashSet returns children in other order
Collections.sort(childs, new NodesOrderComparator<NodeData>());
-
return childs;
}
else
@@ -898,7 +897,7 @@
while (keys.hasNext())
{
- CacheKey key = (CacheKey)keys.next();
+ CacheKey key = keys.next();
if (key instanceof CacheId)
{
ItemData data = (ItemData)cache.get(key);
@@ -1188,9 +1187,9 @@
/**
* {@inheritDoc}
*/
- public DataRestor getDataRestorer(File storageDir) throws BackupException
+ public DataRestore getDataRestorer(File storageDir) throws BackupException
{
- return new DataRestor()
+ return new DataRestore()
{
/**
* {@inheritDoc}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java 2011-04-28 11:48:05 UTC (rev 4324)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -40,7 +40,7 @@
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.backup.BackupException;
import org.exoplatform.services.jcr.impl.backup.Backupable;
-import org.exoplatform.services.jcr.impl.backup.DataRestor;
+import org.exoplatform.services.jcr.impl.backup.DataRestore;
import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData;
import org.exoplatform.services.jcr.impl.dataflow.TransientPropertyData;
import org.exoplatform.services.jcr.jbosscache.ExoJBossCacheFactory;
@@ -1583,9 +1583,9 @@
/**
* {@inheritDoc}
*/
- public DataRestor getDataRestorer(File storageDir) throws BackupException
+ public DataRestore getDataRestorer(File storageDir) throws BackupException
{
- return new DataRestor()
+ return new DataRestore()
{
/**
* {@inheritDoc}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java 2011-04-28 11:48:05 UTC (rev 4324)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java 2011-04-28 12:11:15 UTC (rev 4325)
@@ -29,12 +29,12 @@
import org.exoplatform.services.jcr.dataflow.serialization.ObjectWriter;
import org.exoplatform.services.jcr.impl.Constants;
import org.exoplatform.services.jcr.impl.backup.BackupException;
-import org.exoplatform.services.jcr.impl.backup.ComplexDataRestor;
-import org.exoplatform.services.jcr.impl.backup.DataRestor;
+import org.exoplatform.services.jcr.impl.backup.ComplexDataRestore;
+import org.exoplatform.services.jcr.impl.backup.DataRestore;
import org.exoplatform.services.jcr.impl.backup.JdbcBackupable;
import org.exoplatform.services.jcr.impl.backup.rdbms.DBBackup;
-import org.exoplatform.services.jcr.impl.backup.rdbms.DBRestor;
-import org.exoplatform.services.jcr.impl.backup.rdbms.DirectoryRestor;
+import org.exoplatform.services.jcr.impl.backup.rdbms.DBRestore;
+import org.exoplatform.services.jcr.impl.backup.rdbms.DirectoryRestore;
import org.exoplatform.services.jcr.impl.backup.rdbms.RestoreTableRule;
import org.exoplatform.services.jcr.impl.clean.rdbms.DBCleanService;
import org.exoplatform.services.jcr.impl.core.query.NodeDataIndexingIterator;
@@ -1164,10 +1164,10 @@
/**
* {@inheritDoc}
*/
- public DataRestor getDataRestorer(File storageDir, Connection jdbcConn) throws BackupException
+ public DataRestore getDataRestorer(File storageDir, Connection jdbcConn) throws BackupException
{
- List<DataRestor> restorers = new ArrayList<DataRestor>();
+ List<DataRestore> restorers = new ArrayList<DataRestore>();
ObjectReader backupInfo = null;
try
@@ -1280,7 +1280,7 @@
}
tables.put(dstTableName, restoreTableRule);
- restorers.add(new DBRestor(storageDir, jdbcConn, tables, wsConfig, swapCleaner));
+ restorers.add(new DBRestore(storageDir, jdbcConn, tables, wsConfig, swapCleaner));
// prepare value storage restorer
File backupValueStorageDir = new File(storageDir, "values");
@@ -1316,7 +1316,7 @@
}
}
- restorers.add(new DirectoryRestor(dataDirs, backupDirs));
+ restorers.add(new DirectoryRestore(dataDirs, backupDirs));
}
else
{
@@ -1327,7 +1327,7 @@
}
}
- return new ComplexDataRestor(restorers);
+ return new ComplexDataRestore(restorers);
}
catch (FileNotFoundException e)
{
@@ -1368,7 +1368,7 @@
/**
* {@inheritDoc}
*/
- public DataRestor getDataRestorer(File storageDir) throws BackupException
+ public DataRestore getDataRestorer(File storageDir) throws BackupException
{
try
{
13 years, 2 months
exo-jcr SVN: r4324 - in jcr/trunk/exo.jcr.component.core/src: main/java/org/exoplatform/services/jcr/impl/dataflow and 2 other directories.
by do-not-reply@jboss.org
Author: tolusha
Date: 2011-04-28 07:48:05 -0400 (Thu, 28 Apr 2011)
New Revision: 4324
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/writing/TestOrderBefore.java
jcr/trunk/exo.jcr.component.core/src/test/resources/conf/test/nodetypes-usecase.xml
Log:
EXOJCR-1305: Orderable child nodes not honouring the order before method after a move
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java 2011-04-28 10:46:53 UTC (rev 4323)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java 2011-04-28 11:48:05 UTC (rev 4324)
@@ -2604,11 +2604,6 @@
protected void doOrderBefore(QPath srcPath, QPath destPath) throws RepositoryException
{
- if (!getPrimaryNodeType().hasOrderableChildNodes())
- {
- throw new UnsupportedRepositoryOperationException("child node ordering not supported on node " + getPath());
- }
-
if (srcPath.equals(destPath))
{
return;
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java 2011-04-28 10:46:53 UTC (rev 4323)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/ItemDataMoveVisitor.java 2011-04-28 11:48:05 UTC (rev 4324)
@@ -157,18 +157,23 @@
NodeData srcParent;
destIndex = 1;
+
+ // If ordering is supported by the node
+ // type of the parent node of the new location, then the
+ // newly moved node is appended to the end of the child
+ // node list.
destOrderNum = destChilds.size() > 0 ? destChilds.get(destChilds.size() - 1).getOrderNumber() + 1 : 0;
if (parent.getIdentifier().equals(node.getParentIdentifier()))
{
- // move to another dest
+ // move to same parent
srcChilds = destChilds;
srcParent = parent;
}
else
{
- // move of SNSes on same parent
- // find index and orederNum on destination
+ // move to another parent
+ // find index on destination
for (NodeData dchild : destChilds)
{
if (dchild.getQPath().getName().equals(qname))
@@ -178,16 +183,17 @@
// for fix SNSes on source
srcParent = (NodeData)dataManager.getItemData(node.getParentIdentifier());
if (srcParent == null)
+ {
throw new RepositoryException("FATAL: parent Node not for " + node.getQPath().getAsString()
+ ", parent id: " + node.getParentIdentifier());
+ }
srcChilds = dataManager.getChildNodesData(srcParent);
}
- int srcOrderNum = 0;
int srcIndex = 1;
- // Calculate SNS index on source
+ // Fix SNS on source
for (int i = 0; i < srcChilds.size(); i++)
{
NodeData child = srcChilds.get(i);
@@ -197,22 +203,21 @@
{
QPath siblingPath = QPath.makeChildPath(srcParent.getQPath(), child.getQPath().getName(), srcIndex);
TransientNodeData sibling =
- new TransientNodeData(siblingPath, child.getIdentifier(), child.getPersistedVersion() + 1, child
- .getPrimaryTypeName(), child.getMixinTypeNames(), srcOrderNum, // orderNum
+ new TransientNodeData(siblingPath, child.getIdentifier(), child.getPersistedVersion() + 1,
+ child.getPrimaryTypeName(), child.getMixinTypeNames(), child.getOrderNumber(),
child.getParentIdentifier(), child.getACL());
+
addStates.add(new ItemState(sibling, ItemState.UPDATED, true, ancestorToSave, false, true));
srcIndex++;
}
-
- srcOrderNum++;
}
}
+ // in case of moving to the same parent destination index is calculated above
if (srcChilds == destChilds)
{
destIndex = srcIndex;
- destOrderNum = srcOrderNum;
}
}
else
Modified: jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/writing/TestOrderBefore.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/writing/TestOrderBefore.java 2011-04-28 10:46:53 UTC (rev 4323)
+++ jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/writing/TestOrderBefore.java 2011-04-28 11:48:05 UTC (rev 4324)
@@ -19,6 +19,9 @@
package org.exoplatform.services.jcr.api.writing;
import org.exoplatform.services.jcr.JcrAPIBaseTest;
+import org.exoplatform.services.jcr.datamodel.NodeData;
+import org.exoplatform.services.jcr.impl.core.NodeImpl;
+import org.exoplatform.services.jcr.impl.core.SessionImpl;
import org.exoplatform.services.jcr.impl.util.EntityCollection;
import java.util.ArrayList;
@@ -1032,6 +1035,76 @@
}
}
+ public void testOrderBeforeAfterMove() throws Exception
+ {
+ SessionImpl session = (SessionImpl)repository.login(credentials, WORKSPACE);
+ Node list = session.getRootNode().addNode("list2", "list");
+ assertEquals("list", list.getPrimaryNodeType().getName());
+ assertTrue(list.getPrimaryNodeType().hasOrderableChildNodes());
+
+ String path = list.addNode("1").getPath();
+ list.addNode("2");
+ session.save();
+ session.logout();
+
+ session = (SessionImpl)repository.login(credentials, WORKSPACE);
+ list = session.getRootNode().getNode("list2");
+ session.move(path, list.getPath() + "/3");
+ list.orderBefore("3", "2");
+ session.save();
+ session.logout();
+
+ session = (SessionImpl)repository.login(credentials, WORKSPACE);
+ NodeIterator it = session.getRootNode().getNode("list2").getNodes();
+ NodeImpl node1 = (NodeImpl)it.nextNode();
+ NodeImpl node2 = (NodeImpl)it.nextNode();
+ assertEquals("3", node1.getName());
+ assertEquals("2", node2.getName());
+ assertTrue(((NodeData)node1.getData()).getOrderNumber() < ((NodeData)node2.getData()).getOrderNumber());
+
+ session.logout();
+ }
+
+ public void testOrderBeforeAfterMove2() throws Exception
+ {
+ SessionImpl session = (SessionImpl)repository.login(credentials, WORKSPACE);
+ Node list = session.getRootNode().addNode("list2", "list");
+ assertEquals("list", list.getPrimaryNodeType().getName());
+ assertTrue(list.getPrimaryNodeType().hasOrderableChildNodes());
+
+ list.addNode("1");
+ list.addNode("2");
+ list.addNode("3");
+ list.addNode("4");
+ session.save();
+ session.logout();
+
+ session = (SessionImpl)repository.login(credentials, WORKSPACE);
+ list = session.getRootNode().getNode("list2");
+ session.move(list.getPath() + "/2", list.getPath() + "/5");
+ list.orderBefore("5", "1");
+ session.save();
+ session.logout();
+
+ session = (SessionImpl)repository.login(credentials, WORKSPACE);
+ NodeIterator it = session.getRootNode().getNode("list2").getNodes();
+ NodeImpl node1 = (NodeImpl)it.nextNode();
+ NodeImpl node2 = (NodeImpl)it.nextNode();
+ NodeImpl node3 = (NodeImpl)it.nextNode();
+ NodeImpl node4 = (NodeImpl)it.nextNode();
+
+ assertEquals("5", node1.getName());
+ assertEquals("1", node2.getName());
+ assertEquals("3", node3.getName());
+ assertEquals("4", node4.getName());
+
+ assertTrue(((NodeData)node1.getData()).getOrderNumber() < ((NodeData)node2.getData()).getOrderNumber());
+ assertTrue(((NodeData)node2.getData()).getOrderNumber() < ((NodeData)node3.getData()).getOrderNumber());
+ assertTrue(((NodeData)node3.getData()).getOrderNumber() < ((NodeData)node4.getData()).getOrderNumber());
+
+ session.logout();
+ }
+
private EntityCollection getEntityCollection(NodeIterator nodes)
{
List result = new ArrayList();
Modified: jcr/trunk/exo.jcr.component.core/src/test/resources/conf/test/nodetypes-usecase.xml
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/test/resources/conf/test/nodetypes-usecase.xml 2011-04-28 10:46:53 UTC (rev 4323)
+++ jcr/trunk/exo.jcr.component.core/src/test/resources/conf/test/nodetypes-usecase.xml 2011-04-28 11:48:05 UTC (rev 4324)
@@ -253,4 +253,18 @@
</propertyDefinitions>
</nodeType>
+ <nodeType name="list" isMixin="false" hasOrderableChildNodes="true" primaryItemName="">
+ <supertypes>
+ <supertype>nt:base</supertype>
+ </supertypes>
+ <childNodeDefinitions>
+ <childNodeDefinition name="*" defaultPrimaryType="nt:unstructured" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" sameNameSiblings="false">
+ <requiredPrimaryTypes>
+ <requiredPrimaryType>nt:unstructured</requiredPrimaryType>
+ </requiredPrimaryTypes>
+ </childNodeDefinition>
+ </childNodeDefinitions>
+ </nodeType>
+
+
</nodeTypes>
13 years, 2 months
exo-jcr SVN: r4323 - jcr/branches/1.12.x/patch/1.12.9-GA/JCR-1615.
by do-not-reply@jboss.org
Author: nzamosenchuk
Date: 2011-04-28 06:46:53 -0400 (Thu, 28 Apr 2011)
New Revision: 4323
Modified:
jcr/branches/1.12.x/patch/1.12.9-GA/JCR-1615/JCR-1615.patch
Log:
JCR-1615: patch updated
Modified: jcr/branches/1.12.x/patch/1.12.9-GA/JCR-1615/JCR-1615.patch
===================================================================
--- jcr/branches/1.12.x/patch/1.12.9-GA/JCR-1615/JCR-1615.patch 2011-04-28 10:32:57 UTC (rev 4322)
+++ jcr/branches/1.12.x/patch/1.12.9-GA/JCR-1615/JCR-1615.patch 2011-04-28 10:46:53 UTC (rev 4323)
@@ -81,12 +81,12 @@
+
+ }
+
-+ public void testCheckOutWhenParentLocked() throws RepositoryException
++ public void testCheckOutWhenLocked() throws RepositoryException
+ {
+ // creating node that is going to be locked, adding a child also.
+
+ Session session1 = repository.login(new CredentialsImpl("root", "exo".toCharArray()), "ws");
-+ Node lockedNodeSession1 = session1.getRootNode().addNode("testCheckOutWhenParentLocked");
++ Node lockedNodeSession1 = session1.getRootNode().addNode("testCheckOutWhenLocked");
+ lockedNodeSession1.addMixin("mix:lockable");
+ lockedNodeSession1.addMixin("mix:versionable");
+ session1.save();
@@ -96,7 +96,7 @@
+ session1.save();
+ assertTrue(lockedNodeSession1.isLocked());
+
-+ Node lockedNode = session.getRootNode().getNode("testCheckOutWhenParentLocked");
++ Node lockedNode = session.getRootNode().getNode("testCheckOutWhenLocked");
+
+ try
+ {
13 years, 2 months
exo-jcr SVN: r4322 - jcr/branches/1.12.x/patch/1.12.9-GA/JCR-1615.
by do-not-reply@jboss.org
Author: nzamosenchuk
Date: 2011-04-28 06:32:57 -0400 (Thu, 28 Apr 2011)
New Revision: 4322
Modified:
jcr/branches/1.12.x/patch/1.12.9-GA/JCR-1615/JCR-1615.patch
Log:
JCR-1615: patch updated
Modified: jcr/branches/1.12.x/patch/1.12.9-GA/JCR-1615/JCR-1615.patch
===================================================================
--- jcr/branches/1.12.x/patch/1.12.9-GA/JCR-1615/JCR-1615.patch 2011-04-28 08:53:18 UTC (rev 4321)
+++ jcr/branches/1.12.x/patch/1.12.9-GA/JCR-1615/JCR-1615.patch 2011-04-28 10:32:57 UTC (rev 4322)
@@ -44,7 +44,7 @@
session1.save();
Lock lock = nodeToCopyLock.lock(true, false);// boolean isSessionScoped
// in ECM we are using lock(true, true) without saving lockToken
-@@ -503,4 +511,37 @@
+@@ -503,4 +511,70 @@
}
}
@@ -81,17 +81,62 @@
+
+ }
+
++ public void testCheckOutWhenParentLocked() throws RepositoryException
++ {
++ // creating node that is going to be locked, adding a child also.
++
++ Session session1 = repository.login(new CredentialsImpl("root", "exo".toCharArray()), "ws");
++ Node lockedNodeSession1 = session1.getRootNode().addNode("testCheckOutWhenParentLocked");
++ lockedNodeSession1.addMixin("mix:lockable");
++ lockedNodeSession1.addMixin("mix:versionable");
++ session1.save();
++ lockedNodeSession1.checkin();
++ // locking it
++ lockedNodeSession1.lock(false, false);
++ session1.save();
++ assertTrue(lockedNodeSession1.isLocked());
++
++ Node lockedNode = session.getRootNode().getNode("testCheckOutWhenParentLocked");
++
++ try
++ {
++ lockedNode.checkout();
++ fail("Lock exeption should be thrown");
++ }
++ catch (LockException e)
++ {
++ // it's okey
++ }
++
++ lockedNodeSession1.checkout();
++ session1.save();
++
++ session1.logout();
++ }
++
}
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java
===================================================================
--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java (revision 4306)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/NodeImpl.java (working copy)
-@@ -433,7 +433,7 @@
+@@ -433,8 +433,8 @@
if (hasProperty(Constants.JCR_MERGEFAILED))
throw new VersionException("Node has jcr:mergeFailed " + getPath());
- if (!parent().checkLocking())
+- throw new LockException("Node " + parent().getPath() + " is locked ");
+ if (!checkLocking())
- throw new LockException("Node " + parent().getPath() + " is locked ");
++ throw new LockException("Node " + getPath() + " is locked ");
// the new version identifier
+ String verIdentifier = IdGenerator.generate();
+@@ -480,6 +480,9 @@
+ throw new UnsupportedRepositoryOperationException(
+ "Node.checkout() is not supported for not mix:versionable node ");
+
++ if (!checkLocking())
++ throw new LockException("Node " + getPath() + " is locked ");
++
+ if (checkedOut())
+ return;
+
13 years, 2 months
exo-jcr SVN: r4321 - in ws/branches/2.1.x: patch and 2 other directories.
by do-not-reply@jboss.org
Author: nzamosenchuk
Date: 2011-04-28 04:53:18 -0400 (Thu, 28 Apr 2011)
New Revision: 4321
Added:
ws/branches/2.1.x/patch/
ws/branches/2.1.x/patch/2.1.9-GA/
ws/branches/2.1.x/patch/2.1.9-GA/WS-264/
ws/branches/2.1.x/patch/2.1.9-GA/WS-264/WS-264.patch
Log:
WS-264 : commiting the actual patch for 2.1.9-GA
Added: ws/branches/2.1.x/patch/2.1.9-GA/WS-264/WS-264.patch
===================================================================
--- ws/branches/2.1.x/patch/2.1.9-GA/WS-264/WS-264.patch (rev 0)
+++ ws/branches/2.1.x/patch/2.1.9-GA/WS-264/WS-264.patch 2011-04-28 08:53:18 UTC (rev 4321)
@@ -0,0 +1,31 @@
+Index: exo.ws.frameworks.servlet/src/main/java/org/exoplatform/ws/frameworks/servlet/StandaloneContainerInitializedListener.java
+===================================================================
+--- exo.ws.frameworks.servlet/src/main/java/org/exoplatform/ws/frameworks/servlet/StandaloneContainerInitializedListener.java (revision 4236)
++++ exo.ws.frameworks.servlet/src/main/java/org/exoplatform/ws/frameworks/servlet/StandaloneContainerInitializedListener.java (working copy)
+@@ -80,13 +80,25 @@
+ LOG.error("Error of configurationURL read", e);
+ }
+
++ // If no configuration in web.xml check system property.
++ if (configurationURL == null)
++ configurationURL = System.getProperty(CONF_URL_PARAMETER);
++
+ try
+ {
+ StandaloneContainer.addConfigurationURL(configurationURL);
+ }
+ catch (MalformedURLException e)
+ {
+- LOG.error("Error of addConfigurationURL", e);
++ // Try to use path, we do not need have full path (file:/path/conf) to configuration. Any relative path is OK.
++ try
++ {
++ StandaloneContainer.addConfigurationPath(configurationURL);
++ }
++ catch (MalformedURLException e2)
++ {
++ LOG.error("Error of addConfiguration", e2);
++ }
+ }
+
+ try
13 years, 2 months