exo-jcr SVN: r5879 - in core/trunk: exo.core.component.database and 11 other directories.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-19 06:53:55 -0400 (Mon, 19 Mar 2012)
New Revision: 5879
Modified:
core/trunk/exo.core.component.database/pom.xml
core/trunk/exo.core.component.document/pom.xml
core/trunk/exo.core.component.ldap/pom.xml
core/trunk/exo.core.component.organization.api/pom.xml
core/trunk/exo.core.component.organization.jdbc/pom.xml
core/trunk/exo.core.component.organization.ldap/pom.xml
core/trunk/exo.core.component.organization.tests/pom.xml
core/trunk/exo.core.component.script.groovy/pom.xml
core/trunk/exo.core.component.security.core/pom.xml
core/trunk/exo.core.component.web.css/pom.xml
core/trunk/exo.core.component.xml-processing/pom.xml
core/trunk/packaging/module/pom.xml
core/trunk/pom.xml
Log:
[maven-release-plugin] prepare for next development iteration
Modified: core/trunk/exo.core.component.database/pom.xml
===================================================================
--- core/trunk/exo.core.component.database/pom.xml 2012-03-19 10:53:35 UTC (rev 5878)
+++ core/trunk/exo.core.component.database/pom.xml 2012-03-19 10:53:55 UTC (rev 5879)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA</version>
+ <version>2.4.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.core.component.database</artifactId>
Modified: core/trunk/exo.core.component.document/pom.xml
===================================================================
--- core/trunk/exo.core.component.document/pom.xml 2012-03-19 10:53:35 UTC (rev 5878)
+++ core/trunk/exo.core.component.document/pom.xml 2012-03-19 10:53:55 UTC (rev 5879)
@@ -23,7 +23,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA</version>
+ <version>2.4.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.core.component.document</artifactId>
<name>eXo Core :: Component :: Demo Service</name>
Modified: core/trunk/exo.core.component.ldap/pom.xml
===================================================================
--- core/trunk/exo.core.component.ldap/pom.xml 2012-03-19 10:53:35 UTC (rev 5878)
+++ core/trunk/exo.core.component.ldap/pom.xml 2012-03-19 10:53:55 UTC (rev 5879)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA</version>
+ <version>2.4.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.core.component.ldap</artifactId>
Modified: core/trunk/exo.core.component.organization.api/pom.xml
===================================================================
--- core/trunk/exo.core.component.organization.api/pom.xml 2012-03-19 10:53:35 UTC (rev 5878)
+++ core/trunk/exo.core.component.organization.api/pom.xml 2012-03-19 10:53:55 UTC (rev 5879)
@@ -23,7 +23,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA</version>
+ <version>2.4.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.core.component.organization.api</artifactId>
<name>eXo Core :: Component :: Organization Service API</name>
Modified: core/trunk/exo.core.component.organization.jdbc/pom.xml
===================================================================
--- core/trunk/exo.core.component.organization.jdbc/pom.xml 2012-03-19 10:53:35 UTC (rev 5878)
+++ core/trunk/exo.core.component.organization.jdbc/pom.xml 2012-03-19 10:53:55 UTC (rev 5879)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA</version>
+ <version>2.4.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.core.component.organization.jdbc</artifactId>
Modified: core/trunk/exo.core.component.organization.ldap/pom.xml
===================================================================
--- core/trunk/exo.core.component.organization.ldap/pom.xml 2012-03-19 10:53:35 UTC (rev 5878)
+++ core/trunk/exo.core.component.organization.ldap/pom.xml 2012-03-19 10:53:55 UTC (rev 5879)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA</version>
+ <version>2.4.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.core.component.organization.ldap</artifactId>
Modified: core/trunk/exo.core.component.organization.tests/pom.xml
===================================================================
--- core/trunk/exo.core.component.organization.tests/pom.xml 2012-03-19 10:53:35 UTC (rev 5878)
+++ core/trunk/exo.core.component.organization.tests/pom.xml 2012-03-19 10:53:55 UTC (rev 5879)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA</version>
+ <version>2.4.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.core.component.organization.tests</artifactId>
Modified: core/trunk/exo.core.component.script.groovy/pom.xml
===================================================================
--- core/trunk/exo.core.component.script.groovy/pom.xml 2012-03-19 10:53:35 UTC (rev 5878)
+++ core/trunk/exo.core.component.script.groovy/pom.xml 2012-03-19 10:53:55 UTC (rev 5879)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA</version>
+ <version>2.4.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.core.component.script.groovy</artifactId>
Modified: core/trunk/exo.core.component.security.core/pom.xml
===================================================================
--- core/trunk/exo.core.component.security.core/pom.xml 2012-03-19 10:53:35 UTC (rev 5878)
+++ core/trunk/exo.core.component.security.core/pom.xml 2012-03-19 10:53:55 UTC (rev 5879)
@@ -16,7 +16,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA</version>
+ <version>2.4.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.core.component.security.core</artifactId>
Modified: core/trunk/exo.core.component.web.css/pom.xml
===================================================================
--- core/trunk/exo.core.component.web.css/pom.xml 2012-03-19 10:53:35 UTC (rev 5878)
+++ core/trunk/exo.core.component.web.css/pom.xml 2012-03-19 10:53:55 UTC (rev 5879)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA</version>
+ <version>2.4.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.core.component.web.css</artifactId>
Modified: core/trunk/exo.core.component.xml-processing/pom.xml
===================================================================
--- core/trunk/exo.core.component.xml-processing/pom.xml 2012-03-19 10:53:35 UTC (rev 5878)
+++ core/trunk/exo.core.component.xml-processing/pom.xml 2012-03-19 10:53:55 UTC (rev 5879)
@@ -23,7 +23,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA</version>
+ <version>2.4.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.core.component.xml-processing</artifactId>
<name>eXo Core :: Component :: XML Processing Service</name>
Modified: core/trunk/packaging/module/pom.xml
===================================================================
--- core/trunk/packaging/module/pom.xml 2012-03-19 10:53:35 UTC (rev 5878)
+++ core/trunk/packaging/module/pom.xml 2012-03-19 10:53:55 UTC (rev 5879)
@@ -2,7 +2,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA</version>
+ <version>2.4.8-GA-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
@@ -19,13 +19,13 @@
<!-- declare the same dependencies than in the module.js -->
<dependencies>
- <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.database</artifactId><version>2.4.7-GA</version></dependency>
- <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.document</artifactId><version>2.4.7-GA</version></dependency>
- <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.organization.api</artifactId><version>2.4.7-GA</version></dependency>
- <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.organization.ldap</artifactId><version>2.4.7-GA</version></dependency>
- <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.security.core</artifactId><version>2.4.7-GA</version></dependency>
- <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.xml-processing</artifactId><version>2.4.7-GA</version></dependency>
- <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.script.groovy</artifactId><version>2.4.7-GA</version></dependency>
+ <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.database</artifactId><version>2.4.8-GA-SNAPSHOT</version></dependency>
+ <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.document</artifactId><version>2.4.8-GA-SNAPSHOT</version></dependency>
+ <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.organization.api</artifactId><version>2.4.8-GA-SNAPSHOT</version></dependency>
+ <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.organization.ldap</artifactId><version>2.4.8-GA-SNAPSHOT</version></dependency>
+ <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.security.core</artifactId><version>2.4.8-GA-SNAPSHOT</version></dependency>
+ <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.xml-processing</artifactId><version>2.4.8-GA-SNAPSHOT</version></dependency>
+ <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.script.groovy</artifactId><version>2.4.8-GA-SNAPSHOT</version></dependency>
</dependencies>
<build>
Modified: core/trunk/pom.xml
===================================================================
--- core/trunk/pom.xml 2012-03-19 10:53:35 UTC (rev 5878)
+++ core/trunk/pom.xml 2012-03-19 10:53:55 UTC (rev 5879)
@@ -29,7 +29,7 @@
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA</version>
+ <version>2.4.8-GA-SNAPSHOT</version>
<packaging>pom</packaging>
<name>eXo Core</name>
@@ -46,9 +46,9 @@
</properties>
<scm>
- <connection>scm:svn:https://anonsvn.jboss.org/repos/exo-jcr/core/tags/2.4.7-GA</connection>
- <developerConnection>scm:svn:https://svn.jboss.org/repos/exo-jcr/core/tags/2.4.7-GA</developerConnection>
- <url>http://fisheye.jboss.org/browse/exo-jcr/core/tags/2.4.7-GA</url>
+ <connection>scm:svn:https://anonsvn.jboss.org/repos/exo-jcr/core/trunk/</connection>
+ <developerConnection>scm:svn:https://svn.jboss.org/repos/exo-jcr/core/trunk/</developerConnection>
+ <url>http://fisheye.jboss.org/browse/exo-jcr/core/trunk</url>
</scm>
<modules>
14 years, 1 month
exo-jcr SVN: r5878 - core/tags.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-19 06:53:35 -0400 (Mon, 19 Mar 2012)
New Revision: 5878
Added:
core/tags/2.4.7-GA/
Log:
[maven-scm] copy for tag 2.4.7-GA
14 years, 1 month
exo-jcr SVN: r5877 - in core/trunk: exo.core.component.database and 11 other directories.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-19 06:53:21 -0400 (Mon, 19 Mar 2012)
New Revision: 5877
Modified:
core/trunk/exo.core.component.database/pom.xml
core/trunk/exo.core.component.document/pom.xml
core/trunk/exo.core.component.ldap/pom.xml
core/trunk/exo.core.component.organization.api/pom.xml
core/trunk/exo.core.component.organization.jdbc/pom.xml
core/trunk/exo.core.component.organization.ldap/pom.xml
core/trunk/exo.core.component.organization.tests/pom.xml
core/trunk/exo.core.component.script.groovy/pom.xml
core/trunk/exo.core.component.security.core/pom.xml
core/trunk/exo.core.component.web.css/pom.xml
core/trunk/exo.core.component.xml-processing/pom.xml
core/trunk/packaging/module/pom.xml
core/trunk/pom.xml
Log:
[maven-release-plugin] prepare release 2.4.7-GA
Modified: core/trunk/exo.core.component.database/pom.xml
===================================================================
--- core/trunk/exo.core.component.database/pom.xml 2012-03-19 10:50:29 UTC (rev 5876)
+++ core/trunk/exo.core.component.database/pom.xml 2012-03-19 10:53:21 UTC (rev 5877)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA-SNAPSHOT</version>
+ <version>2.4.7-GA</version>
</parent>
<artifactId>exo.core.component.database</artifactId>
Modified: core/trunk/exo.core.component.document/pom.xml
===================================================================
--- core/trunk/exo.core.component.document/pom.xml 2012-03-19 10:50:29 UTC (rev 5876)
+++ core/trunk/exo.core.component.document/pom.xml 2012-03-19 10:53:21 UTC (rev 5877)
@@ -23,7 +23,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA-SNAPSHOT</version>
+ <version>2.4.7-GA</version>
</parent>
<artifactId>exo.core.component.document</artifactId>
<name>eXo Core :: Component :: Demo Service</name>
Modified: core/trunk/exo.core.component.ldap/pom.xml
===================================================================
--- core/trunk/exo.core.component.ldap/pom.xml 2012-03-19 10:50:29 UTC (rev 5876)
+++ core/trunk/exo.core.component.ldap/pom.xml 2012-03-19 10:53:21 UTC (rev 5877)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA-SNAPSHOT</version>
+ <version>2.4.7-GA</version>
</parent>
<artifactId>exo.core.component.ldap</artifactId>
Modified: core/trunk/exo.core.component.organization.api/pom.xml
===================================================================
--- core/trunk/exo.core.component.organization.api/pom.xml 2012-03-19 10:50:29 UTC (rev 5876)
+++ core/trunk/exo.core.component.organization.api/pom.xml 2012-03-19 10:53:21 UTC (rev 5877)
@@ -23,7 +23,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA-SNAPSHOT</version>
+ <version>2.4.7-GA</version>
</parent>
<artifactId>exo.core.component.organization.api</artifactId>
<name>eXo Core :: Component :: Organization Service API</name>
Modified: core/trunk/exo.core.component.organization.jdbc/pom.xml
===================================================================
--- core/trunk/exo.core.component.organization.jdbc/pom.xml 2012-03-19 10:50:29 UTC (rev 5876)
+++ core/trunk/exo.core.component.organization.jdbc/pom.xml 2012-03-19 10:53:21 UTC (rev 5877)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA-SNAPSHOT</version>
+ <version>2.4.7-GA</version>
</parent>
<artifactId>exo.core.component.organization.jdbc</artifactId>
Modified: core/trunk/exo.core.component.organization.ldap/pom.xml
===================================================================
--- core/trunk/exo.core.component.organization.ldap/pom.xml 2012-03-19 10:50:29 UTC (rev 5876)
+++ core/trunk/exo.core.component.organization.ldap/pom.xml 2012-03-19 10:53:21 UTC (rev 5877)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA-SNAPSHOT</version>
+ <version>2.4.7-GA</version>
</parent>
<artifactId>exo.core.component.organization.ldap</artifactId>
Modified: core/trunk/exo.core.component.organization.tests/pom.xml
===================================================================
--- core/trunk/exo.core.component.organization.tests/pom.xml 2012-03-19 10:50:29 UTC (rev 5876)
+++ core/trunk/exo.core.component.organization.tests/pom.xml 2012-03-19 10:53:21 UTC (rev 5877)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA-SNAPSHOT</version>
+ <version>2.4.7-GA</version>
</parent>
<artifactId>exo.core.component.organization.tests</artifactId>
Modified: core/trunk/exo.core.component.script.groovy/pom.xml
===================================================================
--- core/trunk/exo.core.component.script.groovy/pom.xml 2012-03-19 10:50:29 UTC (rev 5876)
+++ core/trunk/exo.core.component.script.groovy/pom.xml 2012-03-19 10:53:21 UTC (rev 5877)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA-SNAPSHOT</version>
+ <version>2.4.7-GA</version>
</parent>
<artifactId>exo.core.component.script.groovy</artifactId>
Modified: core/trunk/exo.core.component.security.core/pom.xml
===================================================================
--- core/trunk/exo.core.component.security.core/pom.xml 2012-03-19 10:50:29 UTC (rev 5876)
+++ core/trunk/exo.core.component.security.core/pom.xml 2012-03-19 10:53:21 UTC (rev 5877)
@@ -16,7 +16,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA-SNAPSHOT</version>
+ <version>2.4.7-GA</version>
</parent>
<artifactId>exo.core.component.security.core</artifactId>
Modified: core/trunk/exo.core.component.web.css/pom.xml
===================================================================
--- core/trunk/exo.core.component.web.css/pom.xml 2012-03-19 10:50:29 UTC (rev 5876)
+++ core/trunk/exo.core.component.web.css/pom.xml 2012-03-19 10:53:21 UTC (rev 5877)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA-SNAPSHOT</version>
+ <version>2.4.7-GA</version>
</parent>
<artifactId>exo.core.component.web.css</artifactId>
Modified: core/trunk/exo.core.component.xml-processing/pom.xml
===================================================================
--- core/trunk/exo.core.component.xml-processing/pom.xml 2012-03-19 10:50:29 UTC (rev 5876)
+++ core/trunk/exo.core.component.xml-processing/pom.xml 2012-03-19 10:53:21 UTC (rev 5877)
@@ -23,7 +23,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA-SNAPSHOT</version>
+ <version>2.4.7-GA</version>
</parent>
<artifactId>exo.core.component.xml-processing</artifactId>
<name>eXo Core :: Component :: XML Processing Service</name>
Modified: core/trunk/packaging/module/pom.xml
===================================================================
--- core/trunk/packaging/module/pom.xml 2012-03-19 10:50:29 UTC (rev 5876)
+++ core/trunk/packaging/module/pom.xml 2012-03-19 10:53:21 UTC (rev 5877)
@@ -2,7 +2,7 @@
<parent>
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA-SNAPSHOT</version>
+ <version>2.4.7-GA</version>
<relativePath>../../pom.xml</relativePath>
</parent>
@@ -19,13 +19,13 @@
<!-- declare the same dependencies than in the module.js -->
<dependencies>
- <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.database</artifactId><version>2.4.7-GA-SNAPSHOT</version></dependency>
- <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.document</artifactId><version>2.4.7-GA-SNAPSHOT</version></dependency>
- <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.organization.api</artifactId><version>2.4.7-GA-SNAPSHOT</version></dependency>
- <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.organization.ldap</artifactId><version>2.4.7-GA-SNAPSHOT</version></dependency>
- <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.security.core</artifactId><version>2.4.7-GA-SNAPSHOT</version></dependency>
- <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.xml-processing</artifactId><version>2.4.7-GA-SNAPSHOT</version></dependency>
- <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.script.groovy</artifactId><version>2.4.7-GA-SNAPSHOT</version></dependency>
+ <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.database</artifactId><version>2.4.7-GA</version></dependency>
+ <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.document</artifactId><version>2.4.7-GA</version></dependency>
+ <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.organization.api</artifactId><version>2.4.7-GA</version></dependency>
+ <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.organization.ldap</artifactId><version>2.4.7-GA</version></dependency>
+ <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.security.core</artifactId><version>2.4.7-GA</version></dependency>
+ <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.xml-processing</artifactId><version>2.4.7-GA</version></dependency>
+ <dependency><groupId>org.exoplatform.core</groupId><artifactId>exo.core.component.script.groovy</artifactId><version>2.4.7-GA</version></dependency>
</dependencies>
<build>
Modified: core/trunk/pom.xml
===================================================================
--- core/trunk/pom.xml 2012-03-19 10:50:29 UTC (rev 5876)
+++ core/trunk/pom.xml 2012-03-19 10:53:21 UTC (rev 5877)
@@ -29,7 +29,7 @@
<groupId>org.exoplatform.core</groupId>
<artifactId>core-parent</artifactId>
- <version>2.4.7-GA-SNAPSHOT</version>
+ <version>2.4.7-GA</version>
<packaging>pom</packaging>
<name>eXo Core</name>
@@ -46,9 +46,9 @@
</properties>
<scm>
- <connection>scm:svn:https://anonsvn.jboss.org/repos/exo-jcr/core/trunk/</connection>
- <developerConnection>scm:svn:https://svn.jboss.org/repos/exo-jcr/core/trunk/</developerConnection>
- <url>http://fisheye.jboss.org/browse/exo-jcr/core/trunk</url>
+ <connection>scm:svn:https://anonsvn.jboss.org/repos/exo-jcr/core/tags/2.4.7-GA</connection>
+ <developerConnection>scm:svn:https://svn.jboss.org/repos/exo-jcr/core/tags/2.4.7-GA</developerConnection>
+ <url>http://fisheye.jboss.org/browse/exo-jcr/core/tags/2.4.7-GA</url>
</scm>
<modules>
14 years, 1 month
exo-jcr SVN: r5876 - core/trunk.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-19 06:50:29 -0400 (Mon, 19 Mar 2012)
New Revision: 5876
Modified:
core/trunk/pom.xml
Log:
EXOJCR-1676: change dep to tag
Modified: core/trunk/pom.xml
===================================================================
--- core/trunk/pom.xml 2012-03-19 10:18:53 UTC (rev 5875)
+++ core/trunk/pom.xml 2012-03-19 10:50:29 UTC (rev 5876)
@@ -39,7 +39,7 @@
<exo.product.specification>2.4</exo.product.specification>
<org.exoplatform.framework.junit.version>1.2.1-GA</org.exoplatform.framework.junit.version>
- <org.exoplatform.kernel.version>2.3.7-GA-SNAPSHOT</org.exoplatform.kernel.version>
+ <org.exoplatform.kernel.version>2.3.7-GA</org.exoplatform.kernel.version>
<!-- Plugins updates -->
<version.source.plugin>2.1.2</version.source.plugin>
14 years, 1 month
exo-jcr SVN: r5875 - in kernel/trunk: exo.kernel.commons and 14 other directories.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-19 06:18:53 -0400 (Mon, 19 Mar 2012)
New Revision: 5875
Modified:
kernel/trunk/exo.kernel.commons.test/pom.xml
kernel/trunk/exo.kernel.commons/pom.xml
kernel/trunk/exo.kernel.component.cache/pom.xml
kernel/trunk/exo.kernel.component.command/pom.xml
kernel/trunk/exo.kernel.component.common/pom.xml
kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v5/pom.xml
kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/pom.xml
kernel/trunk/exo.kernel.component.ext.rpc.impl.jgroups.v3/pom.xml
kernel/trunk/exo.kernel.container/pom.xml
kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int-demo/pom.xml
kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int-tests/pom.xml
kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int/pom.xml
kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-kernel-extras/pom.xml
kernel/trunk/exo.kernel.mc-integration/pom.xml
kernel/trunk/packaging/module/pom.xml
kernel/trunk/pom.xml
Log:
[maven-release-plugin] prepare for next development iteration
Modified: kernel/trunk/exo.kernel.commons/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.commons/pom.xml 2012-03-19 10:18:39 UTC (rev 5874)
+++ kernel/trunk/exo.kernel.commons/pom.xml 2012-03-19 10:18:53 UTC (rev 5875)
@@ -16,7 +16,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA</version>
+ <version>2.3.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.kernel.commons</artifactId>
Modified: kernel/trunk/exo.kernel.commons.test/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.commons.test/pom.xml 2012-03-19 10:18:39 UTC (rev 5874)
+++ kernel/trunk/exo.kernel.commons.test/pom.xml 2012-03-19 10:18:53 UTC (rev 5875)
@@ -16,7 +16,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA</version>
+ <version>2.3.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.kernel.commons.test</artifactId>
Modified: kernel/trunk/exo.kernel.component.cache/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.component.cache/pom.xml 2012-03-19 10:18:39 UTC (rev 5874)
+++ kernel/trunk/exo.kernel.component.cache/pom.xml 2012-03-19 10:18:53 UTC (rev 5875)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA</version>
+ <version>2.3.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.kernel.component.cache</artifactId>
Modified: kernel/trunk/exo.kernel.component.command/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.component.command/pom.xml 2012-03-19 10:18:39 UTC (rev 5874)
+++ kernel/trunk/exo.kernel.component.command/pom.xml 2012-03-19 10:18:53 UTC (rev 5875)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA</version>
+ <version>2.3.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.kernel.component.command</artifactId>
Modified: kernel/trunk/exo.kernel.component.common/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.component.common/pom.xml 2012-03-19 10:18:39 UTC (rev 5874)
+++ kernel/trunk/exo.kernel.component.common/pom.xml 2012-03-19 10:18:53 UTC (rev 5875)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA</version>
+ <version>2.3.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.kernel.component.common</artifactId>
Modified: kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v5/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v5/pom.xml 2012-03-19 10:18:39 UTC (rev 5874)
+++ kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v5/pom.xml 2012-03-19 10:18:53 UTC (rev 5875)
@@ -9,7 +9,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA</version>
+ <version>2.3.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.kernel.component.ext.cache.impl.infinispan.v5</artifactId>
<name>eXo Kernel :: Cache Extension :: Infinispan Implementation</name>
Modified: kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/pom.xml 2012-03-19 10:18:39 UTC (rev 5874)
+++ kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/pom.xml 2012-03-19 10:18:53 UTC (rev 5875)
@@ -23,7 +23,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA</version>
+ <version>2.3.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.kernel.component.ext.cache.impl.jboss.v3</artifactId>
<name>eXo Kernel :: Cache Extension :: JBoss Cache Implementation</name>
Modified: kernel/trunk/exo.kernel.component.ext.rpc.impl.jgroups.v3/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.component.ext.rpc.impl.jgroups.v3/pom.xml 2012-03-19 10:18:39 UTC (rev 5874)
+++ kernel/trunk/exo.kernel.component.ext.rpc.impl.jgroups.v3/pom.xml 2012-03-19 10:18:53 UTC (rev 5875)
@@ -23,7 +23,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA</version>
+ <version>2.3.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.kernel.component.ext.rpc.impl.jgroups.v3</artifactId>
<name>eXo Kernel :: RPC Service Extension :: JGroups 3 Implementation</name>
Modified: kernel/trunk/exo.kernel.container/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.container/pom.xml 2012-03-19 10:18:39 UTC (rev 5874)
+++ kernel/trunk/exo.kernel.container/pom.xml 2012-03-19 10:18:53 UTC (rev 5875)
@@ -12,7 +12,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA</version>
+ <version>2.3.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.kernel.container</artifactId>
<name>eXo Kernel :: Container</name>
Modified: kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int/pom.xml 2012-03-19 10:18:39 UTC (rev 5874)
+++ kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int/pom.xml 2012-03-19 10:18:53 UTC (rev 5875)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>mc-integration-parent</artifactId>
- <version>2.3.7-GA</version>
+ <version>2.3.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.kernel.mc-int</artifactId>
Modified: kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int-demo/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int-demo/pom.xml 2012-03-19 10:18:39 UTC (rev 5874)
+++ kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int-demo/pom.xml 2012-03-19 10:18:53 UTC (rev 5875)
@@ -5,7 +5,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>mc-integration-parent</artifactId>
- <version>2.3.7-GA</version>
+ <version>2.3.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.kernel.mc-int-demo</artifactId>
Modified: kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int-tests/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int-tests/pom.xml 2012-03-19 10:18:39 UTC (rev 5874)
+++ kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int-tests/pom.xml 2012-03-19 10:18:53 UTC (rev 5875)
@@ -5,7 +5,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>mc-integration-parent</artifactId>
- <version>2.3.7-GA</version>
+ <version>2.3.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.kernel.mc-int-tests</artifactId>
Modified: kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-kernel-extras/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-kernel-extras/pom.xml 2012-03-19 10:18:39 UTC (rev 5874)
+++ kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-kernel-extras/pom.xml 2012-03-19 10:18:53 UTC (rev 5875)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>mc-integration-parent</artifactId>
- <version>2.3.7-GA</version>
+ <version>2.3.8-GA-SNAPSHOT</version>
</parent>
<artifactId>exo.kernel.mc-kernel-extras</artifactId>
Modified: kernel/trunk/exo.kernel.mc-integration/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.mc-integration/pom.xml 2012-03-19 10:18:39 UTC (rev 5874)
+++ kernel/trunk/exo.kernel.mc-integration/pom.xml 2012-03-19 10:18:53 UTC (rev 5875)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA</version>
+ <version>2.3.8-GA-SNAPSHOT</version>
</parent>
<artifactId>mc-integration-parent</artifactId>
Modified: kernel/trunk/packaging/module/pom.xml
===================================================================
--- kernel/trunk/packaging/module/pom.xml 2012-03-19 10:18:39 UTC (rev 5874)
+++ kernel/trunk/packaging/module/pom.xml 2012-03-19 10:18:53 UTC (rev 5875)
@@ -2,7 +2,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA</version>
+ <version>2.3.8-GA-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
Modified: kernel/trunk/pom.xml
===================================================================
--- kernel/trunk/pom.xml 2012-03-19 10:18:39 UTC (rev 5874)
+++ kernel/trunk/pom.xml 2012-03-19 10:18:53 UTC (rev 5875)
@@ -30,7 +30,7 @@
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA</version>
+ <version>2.3.8-GA-SNAPSHOT</version>
<packaging>pom</packaging>
<name>eXo Kernel</name>
@@ -43,9 +43,9 @@
</properties>
<scm>
- <connection>scm:svn:http://anonsvn.jboss.org/repos/exo-jcr/kernel/tags/2.3.7-GA</connection>
- <developerConnection>scm:svn:https://svn.jboss.org/repos/exo-jcr/kernel/tags/2.3.7-GA</developerConnection>
- <url>http://fisheye.jboss.org/browse/exo-jcr/kernel/tags/2.3.7-GA</url>
+ <connection>scm:svn:http://anonsvn.jboss.org/repos/exo-jcr/kernel/trunk</connection>
+ <developerConnection>scm:svn:https://svn.jboss.org/repos/exo-jcr/kernel/trunk</developerConnection>
+ <url>http://fisheye.jboss.org/browse/exo-jcr/kernel/trunk</url>
</scm>
<modules>
14 years, 1 month
exo-jcr SVN: r5874 - kernel/tags.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-19 06:18:39 -0400 (Mon, 19 Mar 2012)
New Revision: 5874
Added:
kernel/tags/2.3.7-GA/
Log:
[maven-scm] copy for tag 2.3.7-GA
14 years, 1 month
exo-jcr SVN: r5873 - in kernel/trunk: exo.kernel.commons and 14 other directories.
by do-not-reply@jboss.org
Author: tolusha
Date: 2012-03-19 06:18:22 -0400 (Mon, 19 Mar 2012)
New Revision: 5873
Modified:
kernel/trunk/exo.kernel.commons.test/pom.xml
kernel/trunk/exo.kernel.commons/pom.xml
kernel/trunk/exo.kernel.component.cache/pom.xml
kernel/trunk/exo.kernel.component.command/pom.xml
kernel/trunk/exo.kernel.component.common/pom.xml
kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v5/pom.xml
kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/pom.xml
kernel/trunk/exo.kernel.component.ext.rpc.impl.jgroups.v3/pom.xml
kernel/trunk/exo.kernel.container/pom.xml
kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int-demo/pom.xml
kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int-tests/pom.xml
kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int/pom.xml
kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-kernel-extras/pom.xml
kernel/trunk/exo.kernel.mc-integration/pom.xml
kernel/trunk/packaging/module/pom.xml
kernel/trunk/pom.xml
Log:
[maven-release-plugin] prepare release 2.3.7-GA
Modified: kernel/trunk/exo.kernel.commons/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.commons/pom.xml 2012-03-16 14:08:29 UTC (rev 5872)
+++ kernel/trunk/exo.kernel.commons/pom.xml 2012-03-19 10:18:22 UTC (rev 5873)
@@ -16,7 +16,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA-SNAPSHOT</version>
+ <version>2.3.7-GA</version>
</parent>
<artifactId>exo.kernel.commons</artifactId>
Modified: kernel/trunk/exo.kernel.commons.test/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.commons.test/pom.xml 2012-03-16 14:08:29 UTC (rev 5872)
+++ kernel/trunk/exo.kernel.commons.test/pom.xml 2012-03-19 10:18:22 UTC (rev 5873)
@@ -16,7 +16,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA-SNAPSHOT</version>
+ <version>2.3.7-GA</version>
</parent>
<artifactId>exo.kernel.commons.test</artifactId>
Modified: kernel/trunk/exo.kernel.component.cache/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.component.cache/pom.xml 2012-03-16 14:08:29 UTC (rev 5872)
+++ kernel/trunk/exo.kernel.component.cache/pom.xml 2012-03-19 10:18:22 UTC (rev 5873)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA-SNAPSHOT</version>
+ <version>2.3.7-GA</version>
</parent>
<artifactId>exo.kernel.component.cache</artifactId>
Modified: kernel/trunk/exo.kernel.component.command/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.component.command/pom.xml 2012-03-16 14:08:29 UTC (rev 5872)
+++ kernel/trunk/exo.kernel.component.command/pom.xml 2012-03-19 10:18:22 UTC (rev 5873)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA-SNAPSHOT</version>
+ <version>2.3.7-GA</version>
</parent>
<artifactId>exo.kernel.component.command</artifactId>
Modified: kernel/trunk/exo.kernel.component.common/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.component.common/pom.xml 2012-03-16 14:08:29 UTC (rev 5872)
+++ kernel/trunk/exo.kernel.component.common/pom.xml 2012-03-19 10:18:22 UTC (rev 5873)
@@ -25,7 +25,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA-SNAPSHOT</version>
+ <version>2.3.7-GA</version>
</parent>
<artifactId>exo.kernel.component.common</artifactId>
Modified: kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v5/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v5/pom.xml 2012-03-16 14:08:29 UTC (rev 5872)
+++ kernel/trunk/exo.kernel.component.ext.cache.impl.infinispan.v5/pom.xml 2012-03-19 10:18:22 UTC (rev 5873)
@@ -9,7 +9,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA-SNAPSHOT</version>
+ <version>2.3.7-GA</version>
</parent>
<artifactId>exo.kernel.component.ext.cache.impl.infinispan.v5</artifactId>
<name>eXo Kernel :: Cache Extension :: Infinispan Implementation</name>
Modified: kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/pom.xml 2012-03-16 14:08:29 UTC (rev 5872)
+++ kernel/trunk/exo.kernel.component.ext.cache.impl.jboss.v3/pom.xml 2012-03-19 10:18:22 UTC (rev 5873)
@@ -23,7 +23,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA-SNAPSHOT</version>
+ <version>2.3.7-GA</version>
</parent>
<artifactId>exo.kernel.component.ext.cache.impl.jboss.v3</artifactId>
<name>eXo Kernel :: Cache Extension :: JBoss Cache Implementation</name>
Modified: kernel/trunk/exo.kernel.component.ext.rpc.impl.jgroups.v3/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.component.ext.rpc.impl.jgroups.v3/pom.xml 2012-03-16 14:08:29 UTC (rev 5872)
+++ kernel/trunk/exo.kernel.component.ext.rpc.impl.jgroups.v3/pom.xml 2012-03-19 10:18:22 UTC (rev 5873)
@@ -23,7 +23,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA-SNAPSHOT</version>
+ <version>2.3.7-GA</version>
</parent>
<artifactId>exo.kernel.component.ext.rpc.impl.jgroups.v3</artifactId>
<name>eXo Kernel :: RPC Service Extension :: JGroups 3 Implementation</name>
Modified: kernel/trunk/exo.kernel.container/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.container/pom.xml 2012-03-16 14:08:29 UTC (rev 5872)
+++ kernel/trunk/exo.kernel.container/pom.xml 2012-03-19 10:18:22 UTC (rev 5873)
@@ -12,7 +12,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA-SNAPSHOT</version>
+ <version>2.3.7-GA</version>
</parent>
<artifactId>exo.kernel.container</artifactId>
<name>eXo Kernel :: Container</name>
Modified: kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int/pom.xml 2012-03-16 14:08:29 UTC (rev 5872)
+++ kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int/pom.xml 2012-03-19 10:18:22 UTC (rev 5873)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>mc-integration-parent</artifactId>
- <version>2.3.7-GA-SNAPSHOT</version>
+ <version>2.3.7-GA</version>
</parent>
<artifactId>exo.kernel.mc-int</artifactId>
Modified: kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int-demo/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int-demo/pom.xml 2012-03-16 14:08:29 UTC (rev 5872)
+++ kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int-demo/pom.xml 2012-03-19 10:18:22 UTC (rev 5873)
@@ -5,7 +5,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>mc-integration-parent</artifactId>
- <version>2.3.7-GA-SNAPSHOT</version>
+ <version>2.3.7-GA</version>
</parent>
<artifactId>exo.kernel.mc-int-demo</artifactId>
Modified: kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int-tests/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int-tests/pom.xml 2012-03-16 14:08:29 UTC (rev 5872)
+++ kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-int-tests/pom.xml 2012-03-19 10:18:22 UTC (rev 5873)
@@ -5,7 +5,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>mc-integration-parent</artifactId>
- <version>2.3.7-GA-SNAPSHOT</version>
+ <version>2.3.7-GA</version>
</parent>
<artifactId>exo.kernel.mc-int-tests</artifactId>
Modified: kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-kernel-extras/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-kernel-extras/pom.xml 2012-03-16 14:08:29 UTC (rev 5872)
+++ kernel/trunk/exo.kernel.mc-integration/exo.kernel.mc-kernel-extras/pom.xml 2012-03-19 10:18:22 UTC (rev 5873)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>mc-integration-parent</artifactId>
- <version>2.3.7-GA-SNAPSHOT</version>
+ <version>2.3.7-GA</version>
</parent>
<artifactId>exo.kernel.mc-kernel-extras</artifactId>
Modified: kernel/trunk/exo.kernel.mc-integration/pom.xml
===================================================================
--- kernel/trunk/exo.kernel.mc-integration/pom.xml 2012-03-16 14:08:29 UTC (rev 5872)
+++ kernel/trunk/exo.kernel.mc-integration/pom.xml 2012-03-19 10:18:22 UTC (rev 5873)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA-SNAPSHOT</version>
+ <version>2.3.7-GA</version>
</parent>
<artifactId>mc-integration-parent</artifactId>
Modified: kernel/trunk/packaging/module/pom.xml
===================================================================
--- kernel/trunk/packaging/module/pom.xml 2012-03-16 14:08:29 UTC (rev 5872)
+++ kernel/trunk/packaging/module/pom.xml 2012-03-19 10:18:22 UTC (rev 5873)
@@ -2,7 +2,7 @@
<parent>
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA-SNAPSHOT</version>
+ <version>2.3.7-GA</version>
<relativePath>../../pom.xml</relativePath>
</parent>
Modified: kernel/trunk/pom.xml
===================================================================
--- kernel/trunk/pom.xml 2012-03-16 14:08:29 UTC (rev 5872)
+++ kernel/trunk/pom.xml 2012-03-19 10:18:22 UTC (rev 5873)
@@ -30,7 +30,7 @@
<groupId>org.exoplatform.kernel</groupId>
<artifactId>kernel-parent</artifactId>
- <version>2.3.7-GA-SNAPSHOT</version>
+ <version>2.3.7-GA</version>
<packaging>pom</packaging>
<name>eXo Kernel</name>
@@ -43,9 +43,9 @@
</properties>
<scm>
- <connection>scm:svn:http://anonsvn.jboss.org/repos/exo-jcr/kernel/trunk</connection>
- <developerConnection>scm:svn:https://svn.jboss.org/repos/exo-jcr/kernel/trunk</developerConnection>
- <url>http://fisheye.jboss.org/browse/exo-jcr/kernel/trunk</url>
+ <connection>scm:svn:http://anonsvn.jboss.org/repos/exo-jcr/kernel/tags/2.3.7-GA</connection>
+ <developerConnection>scm:svn:https://svn.jboss.org/repos/exo-jcr/kernel/tags/2.3.7-GA</developerConnection>
+ <url>http://fisheye.jboss.org/browse/exo-jcr/kernel/tags/2.3.7-GA</url>
</scm>
<modules>
14 years, 1 month
exo-jcr SVN: r5872 - in jcr/trunk: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io and 1 other directories.
by do-not-reply@jboss.org
Author: nfilotto
Date: 2012-03-16 10:08:29 -0400 (Fri, 16 Mar 2012)
New Revision: 5872
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/DeleteValues.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/ValueFileOperation.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/WriteValue.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleaner.java
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/jdbc-data-container-config.xml
Log:
EXOJCR-1763: Fixes needed to work properly on windows in case the streams are not properly closed which prevent the application to rename/delete/move files
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/DeleteValues.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/DeleteValues.java 2012-03-16 12:10:11 UTC (rev 5871)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/DeleteValues.java 2012-03-16 14:08:29 UTC (rev 5872)
@@ -19,7 +19,6 @@
package org.exoplatform.services.jcr.impl.storage.value.fs.operations;
import org.exoplatform.services.jcr.impl.storage.value.ValueDataResourceHolder;
-import org.exoplatform.services.jcr.impl.util.io.DirectoryHelper;
import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
import java.io.File;
@@ -102,7 +101,7 @@
if (file.exists())
{
bckFiles[i] = new File(file.getAbsolutePath() + "." + System.currentTimeMillis() + "_" + SEQUENCE.incrementAndGet());
- DirectoryHelper.renameFile(file, bckFiles[i]);
+ move(file, bckFiles[i]);
}
}
}
@@ -121,7 +120,13 @@
File f = bckFiles[i];
if (f != null)
{
- DirectoryHelper.renameFile(f, files[i]);
+ // As the files could be registered to the file cleaner
+ // to be removed in case of a move that failed
+ // or in case of a WriteValue.rollback() that could not
+ // remove the file, we need to unregister the files that
+ // will be restored thanks to the backup file
+ cleaner.removeFile(files[i]);
+ move(f, files[i]);
}
}
}
@@ -143,11 +148,9 @@
for (File f : bckFiles)
{
if (f != null && !f.delete())
- // Possible place of error: FileNotFoundException when we delete/update existing
- // Value and then add/update again.
- // After the time the Cleaner will delete the file which is mapped to the Value.
- // Don't use cleaner! Care about transaction-style files isolation per-user etc.
+ {
cleaner.addFile(f);
+ }
}
}
finally
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/ValueFileOperation.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/ValueFileOperation.java 2012-03-16 12:10:11 UTC (rev 5871)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/ValueFileOperation.java 2012-03-16 14:08:29 UTC (rev 5872)
@@ -26,6 +26,7 @@
import org.exoplatform.services.log.Log;
import java.io.File;
+import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.InetAddress;
@@ -297,4 +298,42 @@
twoPhaseCommit();
}
}
+
+ /**
+ * Moves a file from a location to another by using the method {{File.renameTo(File)}}
+ * if it fails it will do a copy and delete. If the source file cannot be deleted
+ * it will be given to the file cleaner
+ * @param srcFile the file to be moved
+ * @param destFile the destination file
+ * @throws IOException if error occurs
+ */
+ protected void move(File srcFile, File destFile) throws IOException
+ {
+ if (!srcFile.renameTo(destFile))
+ {
+ try
+ {
+ copyClose(new FileInputStream(srcFile), new FileOutputStream(destFile));
+ }
+ catch (IOException e)
+ {
+ throw new IOException("Could not move the file from " + srcFile.getAbsolutePath() + " to "
+ + destFile.getAbsolutePath(), e);
+ }
+ if (!srcFile.delete())
+ {
+ if (LOG.isDebugEnabled())
+ {
+ LOG.debug("The file '"
+ + srcFile.getAbsolutePath()
+ + "' could not be deleted which prevents the application"
+ + " to move it properly, it is probably due to a stream used to read this property "
+ + "that has not been closed as expected. The file will be given to the file cleaner for a later deletion.");
+ }
+ // The source could not be deleted so we add it to the
+ // file cleaner
+ cleaner.addFile(srcFile);
+ }
+ }
+ }
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/WriteValue.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/WriteValue.java 2012-03-16 12:10:11 UTC (rev 5871)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/WriteValue.java 2012-03-16 14:08:29 UTC (rev 5872)
@@ -86,6 +86,13 @@
{
// be sure the destination dir exists (case for Tree-style storage)
file.getParentFile().mkdirs();
+ if (file.exists())
+ {
+ // The file still exists so either it is a file that could not be removed
+ // or it is a multi update use case, in both cases we will need
+ // to prevent the file cleaner to remove it
+ cleaner.removeFile(file);
+ }
// write value to the file
writeValue(file, value);
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleaner.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleaner.java 2012-03-16 12:10:11 UTC (rev 5871)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleaner.java 2012-03-16 14:08:29 UTC (rev 5872)
@@ -129,7 +129,14 @@
}
}
- @Override
+ /**
+ * @param file
+ */
+ public void removeFile(File file)
+ {
+ files.remove(file);
+ }
+
public void halt()
{
try
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/jdbc-data-container-config.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/jdbc-data-container-config.xml 2012-03-16 12:10:11 UTC (rev 5871)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/jdbc-data-container-config.xml 2012-03-16 14:08:29 UTC (rev 5872)
@@ -7,244 +7,244 @@
<title>JDBC Data Container Config</title>
<para>eXo JCR persistent data container can work in two configuration
- modes:<itemizedlist>
- <listitem>
- <para><phrase>Multi-database</phrase>: One database for each
- workspace (used in standalone eXo JCR service mode)</para>
- </listitem>
+ modes:<itemizedlist>
+ <listitem>
+ <para><phrase>Multi-database</phrase>: One database for each workspace
+ (used in standalone eXo JCR service mode)</para>
+ </listitem>
- <listitem>
- <para><phrase>Single-database</phrase>: All workspaces persisted in
- one database (used in embedded eXo JCR service mode, e.g. in eXo
- portal)</para>
- </listitem>
- </itemizedlist></para>
+ <listitem>
+ <para><phrase>Single-database</phrase>: All workspaces persisted in
+ one database (used in embedded eXo JCR service mode, e.g. in eXo
+ portal)</para>
+ </listitem>
+ </itemizedlist></para>
- <para>The data container uses the JDBC driver to communicate with the
- actual database software, i.e. any JDBC-enabled data storage can be used
- with eXo JCR implementation.</para>
+ <para>The data container uses the JDBC driver to communicate with the actual
+ database software, i.e. any JDBC-enabled data storage can be used with eXo
+ JCR implementation.</para>
- <para>Currently the data container is tested with the following
- configurations:<itemizedlist>
- <listitem>
- <para>MySQL 5.0.18 MYSQL Connector/J 5.0.8</para>
- </listitem>
+ <para>Currently the data container is tested with the following
+ configurations:<itemizedlist>
+ <listitem>
+ <para>MySQL 5.0.18 MYSQL Connector/J 5.0.8</para>
+ </listitem>
- <listitem>
- <para>MySQL 5.1.36 MYSQL Connector/J 5.1.14</para>
- </listitem>
+ <listitem>
+ <para>MySQL 5.1.36 MYSQL Connector/J 5.1.14</para>
+ </listitem>
- <listitem>
- <para>PostgresSQL 8.2.4 JDBC4 Driver, Version 8.2-507</para>
- </listitem>
+ <listitem>
+ <para>PostgresSQL 8.2.4 JDBC4 Driver, Version 8.2-507</para>
+ </listitem>
- <listitem>
- <para>PostgresSQL 8.3.7 JDBC4 Driver, Version 8.3-606</para>
- </listitem>
+ <listitem>
+ <para>PostgresSQL 8.3.7 JDBC4 Driver, Version 8.3-606</para>
+ </listitem>
- <listitem>
- <para>Oracle DB 10g R2 (10.2.0.4), JDBC Driver Oracle 10g R2
- (10.2.0.4)</para>
- </listitem>
+ <listitem>
+ <para>Oracle DB 10g R2 (10.2.0.4), JDBC Driver Oracle 10g R2
+ (10.2.0.4)</para>
+ </listitem>
- <listitem>
- <para>Oracle DB 11g R1 (11.1.0.6.0), JDBC Driver Oracle 11g R1
- (11.1.0.6.0)</para>
- </listitem>
+ <listitem>
+ <para>Oracle DB 11g R1 (11.1.0.6.0), JDBC Driver Oracle 11g R1
+ (11.1.0.6.0)</para>
+ </listitem>
- <listitem>
- <para>Oracle DB 11g R2 (11.2.0.1.0), JDBC Driver Oracle 11g R2
- (11.2.0.1.0)</para>
- </listitem>
+ <listitem>
+ <para>Oracle DB 11g R2 (11.2.0.1.0), JDBC Driver Oracle 11g R2
+ (11.2.0.1.0)</para>
+ </listitem>
- <listitem>
- <para>DB2 9.7.4 IBM Data Server Driver for JDBC and SQLJ (JCC
- Driver) v.9.7</para>
- </listitem>
+ <listitem>
+ <para>DB2 9.7.4 IBM Data Server Driver for JDBC and SQLJ (JCC Driver)
+ v.9.7</para>
+ </listitem>
- <listitem>
- <para>MS SQL Server 2005 SP3 JDBC Driver 3.0</para>
- </listitem>
+ <listitem>
+ <para>MS SQL Server 2005 SP3 JDBC Driver 3.0</para>
+ </listitem>
- <listitem>
- <para>MS SQL Server 2008 JDBC Driver 3.0</para>
- </listitem>
+ <listitem>
+ <para>MS SQL Server 2008 JDBC Driver 3.0</para>
+ </listitem>
- <listitem>
- <para>Sybase 15.0.3 ASE Driver: Sybase jConnect JDBC driver v7
- (Build 26502)</para>
- </listitem>
+ <listitem>
+ <para>Sybase 15.0.3 ASE Driver: Sybase jConnect JDBC driver v7 (Build
+ 26502)</para>
+ </listitem>
- <listitem>
- <para>HSQLDB (2.0.0)</para>
- </listitem>
- </itemizedlist></para>
+ <listitem>
+ <para>HSQLDB (2.0.0)</para>
+ </listitem>
+ </itemizedlist></para>
- <para>Each database software supports ANSI SQL standards but also has its
- own specifics. So, each database has its own configuration in eXo JCR as a
- database dialect parameter. If you need a more detailed configuration of
- the database, it's possible to do that by editing the metadata SQL-script
- files.</para>
+ <para>Each database software supports ANSI SQL standards but also has its
+ own specifics. So, each database has its own configuration in eXo JCR as a
+ database dialect parameter. If you need a more detailed configuration of the
+ database, it's possible to do that by editing the metadata SQL-script
+ files.</para>
- <para>SQL-scripts you can obtain from jar-file
- exo.jcr.component.core-XXX.XXX.jar:conf/storage/. They also can be found
- at SVN <ulink
- url="https://anonsvn.jboss.org/repos/exo-jcr/jcr/trunk/exo.jcr.component.core/...">here.</ulink></para>
+ <para>SQL-scripts you can obtain from jar-file
+ exo.jcr.component.core-XXX.XXX.jar:conf/storage/. They also can be found at
+ SVN <ulink
+ url="https://anonsvn.jboss.org/repos/exo-jcr/jcr/trunk/exo.jcr.component.core/...">here.</ulink></para>
- <para>In the next two tables correspondence between the scripts and
- databases is shown.</para>
+ <para>In the next two tables correspondence between the scripts and
+ databases is shown.</para>
- <table border="1">
- <caption>Single-database</caption>
+ <table border="1">
+ <caption>Single-database</caption>
- <tr>
- <td>MySQL DB</td>
+ <tr>
+ <td>MySQL DB</td>
- <td>jcr-sjdbc.mysql.sql</td>
- </tr>
+ <td>jcr-sjdbc.mysql.sql</td>
+ </tr>
- <tr>
- <td>MySQL DB with utf-8</td>
+ <tr>
+ <td>MySQL DB with utf-8</td>
- <td>jcr-sjdbc.mysql-utf8.sql</td>
- </tr>
+ <td>jcr-sjdbc.mysql-utf8.sql</td>
+ </tr>
- <tr>
- <td>MySQL DB with MyISAM*</td>
+ <tr>
+ <td>MySQL DB with MyISAM*</td>
- <td>jcr-sjdbc.mysql-myisam.sql</td>
- </tr>
+ <td>jcr-sjdbc.mysql-myisam.sql</td>
+ </tr>
- <tr>
- <td>MySQL DB with MyISAM and utf-8*</td>
+ <tr>
+ <td>MySQL DB with MyISAM and utf-8*</td>
- <td>jcr-sjdbc.mysql-myisam-utf8.sql</td>
- </tr>
+ <td>jcr-sjdbc.mysql-myisam-utf8.sql</td>
+ </tr>
- <tr>
- <td>PostgresSQL</td>
+ <tr>
+ <td>PostgresSQL</td>
- <td>jcr-sjdbc.pqsql.sql</td>
- </tr>
+ <td>jcr-sjdbc.pqsql.sql</td>
+ </tr>
- <tr>
- <td>Oracle DB</td>
+ <tr>
+ <td>Oracle DB</td>
- <td>jcr-sjdbc.ora.sql</td>
- </tr>
+ <td>jcr-sjdbc.ora.sql</td>
+ </tr>
- <tr>
- <td>DB2</td>
+ <tr>
+ <td>DB2</td>
- <td>jcr-sjdbc.db2.sql</td>
- </tr>
+ <td>jcr-sjdbc.db2.sql</td>
+ </tr>
- <tr>
- <td>MS SQL Server</td>
+ <tr>
+ <td>MS SQL Server</td>
- <td>jcr-sjdbc.mssql.sql</td>
- </tr>
+ <td>jcr-sjdbc.mssql.sql</td>
+ </tr>
- <tr>
- <td>Sybase</td>
+ <tr>
+ <td>Sybase</td>
- <td>jcr-sjdbc.sybase.sql</td>
- </tr>
+ <td>jcr-sjdbc.sybase.sql</td>
+ </tr>
- <tr>
- <td>HSQLDB</td>
+ <tr>
+ <td>HSQLDB</td>
- <td>jcr-sjdbc.sql</td>
- </tr>
- </table>
+ <td>jcr-sjdbc.sql</td>
+ </tr>
+ </table>
- <table border="1">
- <caption>Multi-database</caption>
+ <table border="1">
+ <caption>Multi-database</caption>
- <tr>
- <td>MySQL DB</td>
+ <tr>
+ <td>MySQL DB</td>
- <td>jcr-mjdbc.mysql.sql</td>
- </tr>
+ <td>jcr-mjdbc.mysql.sql</td>
+ </tr>
- <tr>
- <td>MySQL DB with utf-8</td>
+ <tr>
+ <td>MySQL DB with utf-8</td>
- <td>jcr-mjdbc.mysql-utf8.sql</td>
- </tr>
+ <td>jcr-mjdbc.mysql-utf8.sql</td>
+ </tr>
- <tr>
- <td>MySQL DB with MyISAM*</td>
+ <tr>
+ <td>MySQL DB with MyISAM*</td>
- <td>jcr-mjdbc.mysql-myisam.sql</td>
- </tr>
+ <td>jcr-mjdbc.mysql-myisam.sql</td>
+ </tr>
- <tr>
- <td>MySQL DB with MyISAM and utf-8*</td>
+ <tr>
+ <td>MySQL DB with MyISAM and utf-8*</td>
- <td>jcr-mjdbc.mysql-myisam-utf8.sql</td>
- </tr>
+ <td>jcr-mjdbc.mysql-myisam-utf8.sql</td>
+ </tr>
- <tr>
- <td>PostgresSQL</td>
+ <tr>
+ <td>PostgresSQL</td>
- <td>jcr-mjdbc.pqsql.sql</td>
- </tr>
+ <td>jcr-mjdbc.pqsql.sql</td>
+ </tr>
- <tr>
- <td>Oracle DB</td>
+ <tr>
+ <td>Oracle DB</td>
- <td>jcr-mjdbc.ora.sql</td>
- </tr>
+ <td>jcr-mjdbc.ora.sql</td>
+ </tr>
- <tr>
- <td>DB2</td>
+ <tr>
+ <td>DB2</td>
- <td>jcr-mjdbc.db2.sql</td>
- </tr>
+ <td>jcr-mjdbc.db2.sql</td>
+ </tr>
- <tr>
- <td>MS SQL Server</td>
+ <tr>
+ <td>MS SQL Server</td>
- <td>jcr-mjdbc.mssql.sql</td>
- </tr>
+ <td>jcr-mjdbc.mssql.sql</td>
+ </tr>
- <tr>
- <td>Sybase</td>
+ <tr>
+ <td>Sybase</td>
- <td>jcr-mjdbc.sybase.sql</td>
- </tr>
+ <td>jcr-mjdbc.sybase.sql</td>
+ </tr>
- <tr>
- <td>HSQLDB</td>
+ <tr>
+ <td>HSQLDB</td>
- <td>jcr-mjdbc.sql</td>
- </tr>
- </table>
+ <td>jcr-mjdbc.sql</td>
+ </tr>
+ </table>
- <para>In case the non-ANSI node name is used, it's necessary to use a
- database with MultiLanguage support[TODO link to MultiLanguage]. Some JDBC
- drivers need additional parameters for establishing a Unicode friendly
- connection. E.g. under mysql it's necessary to add an additional parameter
- for the JDBC driver at the end of JDBC URL. For instance:
- <code>jdbc:mysql://exoua.dnsalias.net/portal?characterEncoding=utf8</code></para>
+ <para>In case the non-ANSI node name is used, it's necessary to use a
+ database with MultiLanguage support[TODO link to MultiLanguage]. Some JDBC
+ drivers need additional parameters for establishing a Unicode friendly
+ connection. E.g. under mysql it's necessary to add an additional parameter
+ for the JDBC driver at the end of JDBC URL. For instance:
+ <code>jdbc:mysql://exoua.dnsalias.net/portal?characterEncoding=utf8</code></para>
- <para>There are preconfigured configuration files for HSQLDB. Look for
- these files in /conf/portal and /conf/standalone folders of the jar-file
- <package>exo.jcr.component.core-XXX.XXX.jar</package> or
- source-distribution of eXo JCR implementation.</para>
+ <para>There are preconfigured configuration files for HSQLDB. Look for these
+ files in /conf/portal and /conf/standalone folders of the jar-file
+ <package>exo.jcr.component.core-XXX.XXX.jar</package> or source-distribution
+ of eXo JCR implementation.</para>
- <para>By default, the configuration files are located in service jars
- <filename>/conf/portal/configuration.xml</filename> (eXo services
- including JCR Repository Service) and
- <filename>exo-jcr-config.xml</filename> (repositories configuration). In
- eXo portal product, JCR is configured in portal web application
- <filename>portal/WEB-INF/conf/jcr/jcr-configuration.xml</filename> (JCR
- Repository Service and related serivces) and repository-configuration.xml
- (repositories configuration).</para>
+ <para>By default, the configuration files are located in service jars
+ <filename>/conf/portal/configuration.xml</filename> (eXo services including
+ JCR Repository Service) and <filename>exo-jcr-config.xml</filename>
+ (repositories configuration). In eXo portal product, JCR is configured in
+ portal web application
+ <filename>portal/WEB-INF/conf/jcr/jcr-configuration.xml</filename> (JCR
+ Repository Service and related serivces) and repository-configuration.xml
+ (repositories configuration).</para>
- <para>Read more about <link linkend="JCR.eXoJCRconfiguration">Repository
- configuration</link>.</para>
+ <para>Read more about <link linkend="JCR.eXoJCRconfiguration">Repository
+ configuration</link>.</para>
<section>
<title>General recommendations for database configuration</title>
@@ -292,11 +292,23 @@
<itemizedlist>
<listitem>
+ <para>To prevent any consistency issues please ensure that InnoDB is
+ configured as default MySQL engine (instead of MyISAM by default)
+ before launching your application for the very first time otherwise
+ when the application will create the tables MyISAM will be used as
+ MySQL engine which is a non transactional engine that doesn't not
+ support integrity constraints so even if later you swicth to InnoDB
+ using an alter table all the integrity constraints would be missing
+ as they would have been removed at table creation table by
+ MyISAM.</para>
+ </listitem>
+
+ <listitem>
<para>MyISAM is not supported due to its lack of transaction support
and integrity check, so use it only if you don't expect any support
and if performances in read accesses are more important than the
- consistency in your use-case. This dialect is only dedicated to the
- community.</para>
+ consistency in your use-case. Therefore the dialects mysql-myisam
+ and mysql-myisam-utf8 are only dedicated to the community.</para>
</listitem>
<listitem>
14 years, 1 month
exo-jcr SVN: r5871 - jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1713.
by do-not-reply@jboss.org
Author: nfilotto
Date: 2012-03-16 08:10:11 -0400 (Fri, 16 Mar 2012)
New Revision: 5871
Modified:
jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1713/JCR-1713.patch
Log:
JCR-1713: New patch proposed that is compatible with windows
Modified: jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1713/JCR-1713.patch
===================================================================
--- jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1713/JCR-1713.patch 2012-03-16 11:58:28 UTC (rev 5870)
+++ jcr/branches/1.12.x/patch/1.12.13-GA/JCR-1713/JCR-1713.patch 2012-03-16 12:10:11 UTC (rev 5871)
@@ -1,79 +1,6 @@
-Index: exo.jcr.component.webdav/src/test/java/org/exoplatform/services/jcr/webdav/ext/TestCaching.java
-===================================================================
---- exo.jcr.component.webdav/src/test/java/org/exoplatform/services/jcr/webdav/ext/TestCaching.java (revision 5842)
-+++ exo.jcr.component.webdav/src/test/java/org/exoplatform/services/jcr/webdav/ext/TestCaching.java (working copy)
-@@ -76,6 +76,8 @@
- ContainerResponse response = service(WebDAVMethods.GET, getPathWS() + path, "", headers, null);
-
- assertEquals(HTTPStatus.OK, response.getStatus());
-+
-+ ((InputStream)response.getEntity()).close();
- }
-
- public void testIfModifiedSince() throws Exception
-@@ -116,6 +118,8 @@
- String cacheControlHeader = response.getHttpHeaders().get(HttpHeaders.CACHE_CONTROL).toString();
- cacheControlHeader = cacheControlHeader.substring(1, cacheControlHeader.length() - 1);
- assertEquals(cacheControlHeader, cacheControlType.getCacheValue());
-+
-+ ((InputStream)response.getEntity()).close();
- }
- }
-
-Index: exo.jcr.component.webdav/src/test/java/org/exoplatform/services/jcr/webdav/command/TestGet.java
-===================================================================
---- exo.jcr.component.webdav/src/test/java/org/exoplatform/services/jcr/webdav/command/TestGet.java (revision 5842)
-+++ exo.jcr.component.webdav/src/test/java/org/exoplatform/services/jcr/webdav/command/TestGet.java (working copy)
-@@ -80,6 +80,8 @@
- }
- String str = sw.toString();
- assertEquals(fileContent, str);
-+
-+ content.close();
- }
-
- public void testNotFoundGet() throws Exception
-Index: exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/GetCommand.java
-===================================================================
---- exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/GetCommand.java (revision 5842)
-+++ exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/GetCommand.java (working copy)
-@@ -144,13 +144,16 @@
- // check before any other reads
- if (ifModifiedSince != null)
- {
-+ istream.close();
-+
- DateFormat dateFormat = new SimpleDateFormat(WebDavConst.DateFormat.MODIFICATION, Locale.US);
- Date lastModifiedDate = dateFormat.parse(lastModifiedProperty.getValue());
-
- dateFormat = new SimpleDateFormat(WebDavConst.DateFormat.IF_MODIFIED_SINCE_PATTERN, Locale.US);
- Date ifModifiedSinceDate = dateFormat.parse(ifModifiedSince);
-
-- if(ifModifiedSinceDate.getTime() >= lastModifiedDate.getTime()){
-+ if (ifModifiedSinceDate.getTime() >= lastModifiedDate.getTime())
-+ {
- return Response.notModified().entity("Not Modified").build();
- }
- }
-@@ -181,9 +184,13 @@
- {
- Range range = ranges.get(0);
- if (!validateRange(range, contentLength))
-- return Response.status(HTTPStatus.REQUESTED_RANGE_NOT_SATISFIABLE).header(
-- ExtHttpHeaders.CONTENTRANGE, "bytes */" + contentLength).build();
-+ {
-+ istream.close();
-
-+ return Response.status(HTTPStatus.REQUESTED_RANGE_NOT_SATISFIABLE)
-+ .header(ExtHttpHeaders.CONTENTRANGE, "bytes */" + contentLength).build();
-+ }
-+
- long start = range.getStart();
- long end = range.getEnd();
- long returnedContentLength = (end - start + 1);
Index: exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/query-handler-config.xml
===================================================================
---- exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/query-handler-config.xml (revision 5842)
+--- exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/query-handler-config.xml (revision 5838)
+++ exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/query-handler-config.xml (working copy)
@@ -177,14 +177,6 @@
<jgroupsConfig multiplexerStack="jcr.stack" />
@@ -92,7 +19,7 @@
<para>See more about template configurations <link
Index: exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml
===================================================================
---- exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml (revision 5842)
+--- exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml (revision 5838)
+++ exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/lock-manager-config.xml (working copy)
@@ -1,143 +1,160 @@
-<?xml version='1.0' encoding='UTF-8'?>
@@ -626,7 +553,7 @@
</tbody>
Index: exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml
===================================================================
---- exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml (revision 5842)
+--- exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml (revision 5838)
+++ exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml (working copy)
@@ -84,7 +84,7 @@
<programlisting><?xml version="1.0" encoding="UTF-8"?>
@@ -705,9 +632,42 @@
</jbosscache></programlisting>
<table>
+Index: exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/jdbc-data-container-config.xml
+===================================================================
+--- exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/jdbc-data-container-config.xml (revision 5838)
++++ exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/configuration/jdbc-data-container-config.xml (working copy)
+@@ -95,6 +95,28 @@
+ </section>
+
+ <section>
++ <title>General recommendations for database configuration</title>
++
++ <section>
++ <title>MySQL configuration</title>
++
++ <itemizedlist>
++ <listitem>
++ <para>To prevent any consistency issues please ensure that InnoDB is
++ configured as default MySQL engine (instead of MyISAM by default)
++ before launching your application for the very first time otherwise
++ when the application will create the tables MyISAM will be used as
++ MySQL engine which is a non transactional engine that doesn't not
++ support integrity constraints so even if later you swicth to InnoDB
++ using an alter table all the integrity constraints would be missing
++ as they would have been removed at table creation table by
++ MyISAM.</para>
++ </listitem>
++ </itemizedlist>
++ </section>
++ </section>
++
++ <section>
+ <title>Multi-database Configuration</title>
+
+ <para>You need to configure each workspace in a repository. You may have
Index: exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/TestJBossCacheWorkspaceStorageCacheInClusterMode.java
===================================================================
---- exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/TestJBossCacheWorkspaceStorageCacheInClusterMode.java (revision 5842)
+--- exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/TestJBossCacheWorkspaceStorageCacheInClusterMode.java (revision 5838)
+++ exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/TestJBossCacheWorkspaceStorageCacheInClusterMode.java (working copy)
@@ -759,6 +759,10 @@
public void rollback() throws IllegalStateException, RepositoryException
@@ -722,7 +682,7 @@
InvalidItemStateException, IllegalStateException
Index: exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestCacheableWorkspaceDataManager.java
===================================================================
---- exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestCacheableWorkspaceDataManager.java (revision 5842)
+--- exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestCacheableWorkspaceDataManager.java (revision 5838)
+++ exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/dataflow/persistent/TestCacheableWorkspaceDataManager.java (working copy)
@@ -412,6 +412,10 @@
public void commit() throws IllegalStateException, RepositoryException
@@ -743,862 +703,351 @@
public int getLastOrderNumber(NodeData parent) throws RepositoryException
{
return -1;
-Index: exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/fs/TestRandomValueIO.java
+Index: exo.jcr.component.core/src/test/resources/conf/standalone/cluster/test-jbosscache-lock.xml
===================================================================
---- exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/fs/TestRandomValueIO.java (revision 5842)
-+++ exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/fs/TestRandomValueIO.java (working copy)
-@@ -18,16 +18,13 @@
- */
- package org.exoplatform.services.jcr.impl.storage.fs;
-
--import org.exoplatform.services.jcr.JcrImplBaseTest;
--import org.exoplatform.services.jcr.core.value.EditableBinaryValue;
--import org.exoplatform.services.jcr.core.value.ReadableBinaryValue;
--
- import java.io.BufferedInputStream;
- import java.io.ByteArrayInputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
-+import java.io.InputStream;
- import java.util.Calendar;
- import java.util.Random;
-
-@@ -35,6 +32,10 @@
- import javax.jcr.Property;
- import javax.jcr.Session;
-
-+import org.exoplatform.services.jcr.JcrImplBaseTest;
-+import org.exoplatform.services.jcr.core.value.EditableBinaryValue;
-+import org.exoplatform.services.jcr.core.value.ReadableBinaryValue;
-+
- /**
- * Created by The eXo Platform SAS
- *
-@@ -476,7 +477,9 @@
- testRoot.save();
-
- byte[] buff = new byte[npos];
-- testRoot.getProperty(pname).getStream().read(buff);
-+ InputStream stream = testRoot.getProperty(pname).getStream();
-+ stream.read(buff);
-+ stream.close();
-
- assertEquals("Value content is wrong ", content.substring(0, npos), new String(buff));
-
-Index: exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/value/fs/TestFileIOChannel.java
+--- exo.jcr.component.core/src/test/resources/conf/standalone/cluster/test-jbosscache-lock.xml (revision 5838)
++++ exo.jcr.component.core/src/test/resources/conf/standalone/cluster/test-jbosscache-lock.xml (working copy)
+@@ -19,7 +19,7 @@
+ For another cache-loader class you should use another template with
+ cache-loader specific parameters
+ -->
+- <loader class="org.jboss.cache.loader.JDBCCacheLoader" async="false" fetchPersistentState="false"
++ <loader class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.JDBCCacheLoader" async="false" fetchPersistentState="false"
+ ignoreModifications="false" purgeOnStartup="false">
+ <properties>
+ cache.jdbc.table.name=${jbosscache-cl-cache.jdbc.table.name}
+Index: exo.jcr.component.core/src/test/resources/conf/standalone/test-jbosscache-lock.xml
===================================================================
---- exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/value/fs/TestFileIOChannel.java (revision 5842)
-+++ exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/value/fs/TestFileIOChannel.java (working copy)
-@@ -18,6 +18,13 @@
- */
- package org.exoplatform.services.jcr.impl.storage.value.fs;
-
-+import java.io.File;
-+import java.io.FileInputStream;
-+import java.io.FileOutputStream;
-+import java.io.InputStream;
-+import java.util.ArrayList;
-+import java.util.List;
+--- exo.jcr.component.core/src/test/resources/conf/standalone/test-jbosscache-lock.xml (revision 5838)
++++ exo.jcr.component.core/src/test/resources/conf/standalone/test-jbosscache-lock.xml (working copy)
+@@ -13,7 +13,7 @@
+ For another cache-loader class you should use another template with
+ cache-loader specific parameters
+ -->
+- <loader class="org.jboss.cache.loader.JDBCCacheLoader" async="false" fetchPersistentState="false"
++ <loader class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.JDBCCacheLoader" async="false" fetchPersistentState="false"
+ ignoreModifications="false" purgeOnStartup="false">
+ <properties>
+ cache.jdbc.table.name=${jbosscache-cl-cache.jdbc.table.name}
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/JDBCConnectionFactory.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/JDBCConnectionFactory.java (revision 0)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/JDBCConnectionFactory.java (revision 0)
+@@ -0,0 +1,244 @@
++/*
++ * Copyright (C) 2012 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.core.lock.jbosscache;
+
- import junit.framework.TestCase;
-
- import org.exoplatform.services.jcr.datamodel.ValueData;
-@@ -25,12 +32,6 @@
- import org.exoplatform.services.jcr.impl.storage.value.ValueDataResourceHolder;
- import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
-
--import java.io.File;
--import java.io.FileInputStream;
--import java.io.FileOutputStream;
--import java.util.ArrayList;
--import java.util.List;
--
- /**
- * Created by The eXo Platform SAS.
- *
-@@ -110,14 +111,20 @@
- assertEquals(0, v0.getOrderNumber());
- assertEquals(10, v0.getAsByteArray().length);
- assertTrue(v0.isByteArray());
-- assertNotNull(v0.getAsStream());
-
-+ InputStream in = v0.getAsStream();
-+ assertNotNull(in);
-+ in.close();
++import org.exoplatform.services.log.ExoLogger;
++import org.exoplatform.services.log.Log;
++import org.jboss.cache.loader.AdjListJDBCCacheLoaderConfig;
++import org.jboss.cache.loader.ConnectionFactory;
+
- ValueData v1 = channel.read("testReadFromIOChannel", 1, 11);
- assertEquals(20, v1.getLength());
- assertEquals(1, v1.getOrderNumber());
- assertFalse(v1.isByteArray());
-- assertNotNull(v1.getAsStream());
-
-+ in = v1.getAsStream();
-+ assertNotNull(in);
-+ in.close();
++import java.sql.Connection;
++import java.sql.SQLException;
+
- try
- {
- v1.getAsByteArray();
-Index: exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/value/fs/Probe.java
-===================================================================
---- exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/value/fs/Probe.java (revision 5842)
-+++ exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/value/fs/Probe.java (working copy)
-@@ -20,6 +20,7 @@
-
- import java.io.File;
- import java.io.FileInputStream;
-+import java.io.IOException;
-
- /**
- * Created by The eXo Platform SAS.
-@@ -47,21 +48,32 @@
-
- public void run()
- {
-- System.out.println("Thread started " + this.getName());
-+ FileInputStream is = null;
- try
- {
-- FileInputStream is = new FileInputStream(file);
-+ is = new FileInputStream(file);
- while (is.read() > 0)
- {
- len++;
- }
--
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
-- System.out.println("Thread finished " + this.getName() + " read: " + len);
++import javax.naming.InitialContext;
++import javax.naming.NamingException;
++import javax.sql.DataSource;
++
++/**
++ * @author <a href="mailto:nicolas.filotto@exoplatform.com">Nicolas Filotto</a>
++ * @version $Id$
++ */
++public class JDBCConnectionFactory implements ConnectionFactory
++{
++
++ /**
++ * Logger
++ */
++ private static final Log LOG = ExoLogger.getLogger("exo.jcr.component.core.NonManagedConnectionFactory");
++ private static final boolean trace = LOG.isTraceEnabled();
++
++ static final ThreadLocal<Connection> connection = new ThreadLocal<Connection>();
++
++ private DataSource dataSource;
++ private String datasourceName;
++
++ public void setConfig(AdjListJDBCCacheLoaderConfig config)
++ {
++ datasourceName = config.getDatasourceName();
++ }
++
++ public void start() throws Exception
++ {
++ // A datasource will be registered in JNDI in the start portion of
++ // its lifecycle, so now that we are in start() we can look it up
++ InitialContext ctx = null;
++ try
++ {
++ ctx = new InitialContext();
++ dataSource = (DataSource) ctx.lookup(datasourceName);
++ if (trace)
++ {
++ LOG.trace("Datasource lookup for " + datasourceName + " succeded: " + dataSource);
++ }
++ }
++ catch (NamingException e)
++ {
++ reportAndRethrowError("Failed to lookup datasource " + datasourceName, e);
++ }
+ finally
+ {
-+ if (is != null)
++ if (ctx != null)
+ {
+ try
+ {
-+ is.close();
++ ctx.close();
+ }
-+ catch (IOException e)
++ catch (NamingException e)
+ {
++ LOG.warn("Failed to close naming context.", e);
+ }
+ }
+ }
- }
-
- public int getLen()
-Index: exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/BaseStandaloneTest.java
-===================================================================
---- exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/BaseStandaloneTest.java (revision 5842)
-+++ exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/BaseStandaloneTest.java (working copy)
-@@ -298,65 +298,88 @@
- protected void compareStream(InputStream etalon, InputStream data, long etalonPos, long dataPos, long length)
- throws IOException, CompareStreamException
- {
-- int dindex = 0;
++ }
++
++ public void prepare(Object tx)
++ {
++ Connection con = getConnection();
+ try
+ {
-+ int dindex = 0;
-
-- skipStream(etalon, etalonPos);
-- skipStream(data, dataPos);
-+ skipStream(etalon, etalonPos);
-+ skipStream(data, dataPos);
-
-- byte[] ebuff = new byte[1024];
-- int eread = 0;
-+ byte[] ebuff = new byte[1024];
-+ int eread = 0;
-
-- while ((eread = etalon.read(ebuff)) > 0)
-- {
-- byte[] dbuff = new byte[eread];
-- int erindex = 0;
-- while (erindex < eread)
-+ while ((eread = etalon.read(ebuff)) > 0)
- {
-- int dread = -1;
-- try
-+ byte[] dbuff = new byte[eread];
-+ int erindex = 0;
-+ while (erindex < eread)
- {
-- dread = data.read(dbuff);
-- }
-- catch (IOException e)
-- {
-- throw new CompareStreamException("Streams is not equals by length or data stream is unreadable. Cause: "
-- + e.getMessage());
-- }
-+ int dread = -1;
-+ try
-+ {
-+ dread = data.read(dbuff);
-+ }
-+ catch (IOException e)
-+ {
-+ throw new CompareStreamException(
-+ "Streams is not equals by length or data stream is unreadable. Cause: " + e.getMessage());
-+ }
-
-- if (dread == -1)
-- {
-- throw new CompareStreamException(
-- "Streams is not equals by length. Data end-of-stream reached at position " + dindex);
-- }
--
-- for (int i = 0; i < dread; i++)
-- {
-- byte eb = ebuff[i];
-- byte db = dbuff[i];
-- if (eb != db)
-+ if (dread == -1)
- {
-- throw new CompareStreamException("Streams is not equals. Wrong byte stored at position " + dindex
-- + " of data stream. Expected 0x" + Integer.toHexString(eb) + " '" + new String(new byte[]{eb})
-- + "' but found 0x" + Integer.toHexString(db) + " '" + new String(new byte[]{db}) + "'");
-+ throw new CompareStreamException(
-+ "Streams is not equals by length. Data end-of-stream reached at position " + dindex);
- }
-
-- erindex++;
-- dindex++;
-- if (length > 0 && dindex >= length)
-+ for (int i = 0; i < dread; i++)
- {
-- return; // tested length reached
-+ byte eb = ebuff[i];
-+ byte db = dbuff[i];
-+ if (eb != db)
-+ {
-+ throw new CompareStreamException("Streams is not equals. Wrong byte stored at position " + dindex
-+ + " of data stream. Expected 0x" + Integer.toHexString(eb) + " '" + new String(new byte[]{eb})
-+ + "' but found 0x" + Integer.toHexString(db) + " '" + new String(new byte[]{db}) + "'");
-+ }
++ if (con.getAutoCommit())
++ {
++ con.setAutoCommit(false);
++ }
++ }
++ catch (Exception e)
++ {
++ reportAndRethrowError("Failed to set auto-commit", e);
++ }
+
-+ erindex++;
-+ dindex++;
-+ if (length > 0 && dindex >= length)
-+ {
-+ return; // tested length reached
-+ }
- }
++ /* Connection set in ThreadLocal, no reason to return. It was previously returned for legacy purpouses
++ and to trace log the connection opening in JDBCCacheLoader. */
++ connection.set(con);
+
-+ if (dread < eread)
-+ dbuff = new byte[eread - dread];
- }
++ if (trace)
++ {
++ LOG.trace("opened tx connection: tx=" + tx + ", con=" + con);
++ }
++
++ }
++
++ public Connection getConnection()
++ {
++ Connection con = connection.get();
++
++ if (con == null)
++ {
++ try
++ {
++ con = checkoutConnection();
++ // connection.set(con);
+ }
-
-- if (dread < eread)
-- dbuff = new byte[eread - dread];
-+ if (data.available() > 0)
++ catch (SQLException e)
+ {
-+ throw new CompareStreamException(
-+ "Streams is not equals by length. Data stream contains more data. Were read " + dindex);
- }
- }
++ reportAndRethrowError("Failed to get connection for datasource=" + datasourceName, e);
++ }
++ }
++
++ if (trace)
++ {
++ LOG.trace("using connection: " + con);
++ }
++
++ return con;
++ }
++
++ public Connection checkoutConnection() throws SQLException
++ {
++ return dataSource.getConnection();
++ }
++
++ public void commit(Object tx)
++ {
++ Connection con = connection.get();
++ if (con == null)
++ {
++ throw new IllegalStateException("Failed to commit: thread is not associated with the connection!");
++ }
++
++ try
++ {
++ con.commit();
++ if (trace)
++ {
++ LOG.trace("committed tx=" + tx + ", con=" + con);
++ }
++ }
++ catch (SQLException e)
++ {
++ reportAndRethrowError("Failed to commit", e);
++ }
+ finally
+ {
++ closeTxConnection(con);
++ }
++ }
++
++ public void rollback(Object tx)
++ {
++ Connection con = connection.get();
++
++ try
++ {
++ con.rollback();
++ if (trace)
++ {
++ LOG.trace("rolledback tx=" + tx + ", con=" + con);
++ }
++ }
++ catch (SQLException e)
++ {
++ reportAndRethrowError("Failed to rollback", e);
++ }
++ finally
++ {
++ closeTxConnection(con);
++ }
++ }
++
++ public void close(Connection con)
++ {
++ if (con != null && con != connection.get())
++ {
+ try
+ {
-+ data.close();
++ con.close();
++
++ if (trace)
++ {
++ LOG.trace("closed non tx connection: " + con);
++ }
+ }
-+ catch (IOException e)
++ catch (SQLException e)
+ {
-+ log.error(e.getMessage(), e);
++ LOG.warn("Failed to close connection " + con, e);
+ }
-
-- if (data.available() > 0)
-- {
-- throw new CompareStreamException("Streams is not equals by length. Data stream contains more data. Were read "
-- + dindex);
++ }
++ }
++
++ public void stop()
++ {
++ }
++
++ private void closeTxConnection(Connection con)
++ {
++ safeClose(con);
++ connection.set(null);
++ }
++
++ private void safeClose(Connection con)
++ {
++ if (con != null)
++ {
+ try
+ {
-+ etalon.close();
++ con.close();
+ }
-+ catch (IOException e)
++ catch (SQLException e)
+ {
-+ log.error(e.getMessage(), e);
++ LOG.warn("Failed to close connection", e);
+ }
- }
- }
-
-Index: exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/i18n/TestI18nValues.java
-===================================================================
---- exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/i18n/TestI18nValues.java (revision 5842)
-+++ exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/i18n/TestI18nValues.java (working copy)
-@@ -201,6 +201,7 @@
- int rec = is.read(buf);
- baos.write(buf, 0, rec);
- }
-+ is.close();
- byte[] valueBytes = baos.toByteArray();
- String content = new String(valueBytes, "UTF-8");
- assertTrue("Content must be identical. '" + source + "' = '" + content + "'", equalsBinary(valueBytes, source
-@@ -264,6 +265,7 @@
- int rec = is.read(buf);
- baos.write(buf, 0, rec);
- }
-+ is.close();
- byte[] valueBytes = baos.toByteArray();
- String content = new String(valueBytes, "UTF-8");
- assertTrue("Content must be identical. '" + source + "' = '" + content + "'", equalsBinary(valueBytes, source
-Index: exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/usecases/version/FileRestoreTest.java
-===================================================================
---- exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/usecases/version/FileRestoreTest.java (revision 5842)
-+++ exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/usecases/version/FileRestoreTest.java (working copy)
-@@ -18,16 +18,17 @@
- */
- package org.exoplatform.services.jcr.usecases.version;
-
--import org.exoplatform.services.jcr.usecases.BaseUsecasesTest;
--
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
-+import java.io.InputStream;
- import java.util.Calendar;
-
- import javax.jcr.Node;
- import javax.jcr.version.Version;
-
-+import org.exoplatform.services.jcr.usecases.BaseUsecasesTest;
++ }
++ }
+
- /**
- * Created by The eXo Platform SAS.
- *
-@@ -88,18 +89,18 @@
- file.getNode("jcr:content").setProperty("jcr:data", new FileInputStream(tempFile2));
- session.save();
-
-- log
-- .info("ADD VERSION #2 : file size = " + contentNode.getProperty("jcr:data").getStream().available() + " bytes");
-- compareStream(new FileInputStream(tempFile2), contentNode.getProperty("jcr:data").getStream());
-+ InputStream in = contentNode.getProperty("jcr:data").getStream();
-+ log.info("ADD VERSION #2 : file size = " + in.available() + " bytes");
-+ compareStream(new FileInputStream(tempFile2), in);
-
- file.checkin(); // v2
- file.checkout();
- file.getNode("jcr:content").setProperty("jcr:data", new FileInputStream(tempFile3));
- session.save();
-
-- log
-- .info("ADD VERSION #3 : file size = " + contentNode.getProperty("jcr:data").getStream().available() + " bytes");
-- compareStream(new FileInputStream(tempFile3), contentNode.getProperty("jcr:data").getStream());
-+ in = contentNode.getProperty("jcr:data").getStream();
-+ log.info("ADD VERSION #3 : file size = " + in.available() + " bytes");
-+ compareStream(new FileInputStream(tempFile3), in);
-
- // restore version v2
- Version v2 = file.getBaseVersion();
-Index: exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/usecases/common/TestExportImportAmongSessions.java
-===================================================================
---- exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/usecases/common/TestExportImportAmongSessions.java (revision 5842)
-+++ exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/usecases/common/TestExportImportAmongSessions.java (working copy)
-@@ -82,6 +82,7 @@
- InputStream storedData = ntFile.getProperty("jcr:content/jcr:data").getStream();
- assertTrue("AFTER EXPORT/IMPORT. Binary content must be same", checkBinaryEquals(new ByteArrayInputStream(
- TEST_BINARY_CONTENT), storedData));
-+ storedData.close();
- }
- catch (RepositoryException e)
- {
-@@ -112,6 +113,7 @@
- Node ntFile = testNode.getNode(TEST_NTFILE);
- InputStream storedData = ntFile.getProperty("jcr:content/jcr:data").getStream();
- assertTrue("BEFORE EXPORT/IMPORT. Binary content must be same", checkBinaryEquals(etalonData, storedData));
-+ storedData.close();
-
- File outputFile = File.createTempFile("jcr_bin_test", ".tmp");
- outputFile.deleteOnExit();
-@@ -130,6 +132,7 @@
- storedData = ntFile.getProperty("jcr:content/jcr:data").getStream();
- assertTrue("AFTER EXPORT/IMPORT. Binary content must be same", checkBinaryEquals(new ByteArrayInputStream(
- TEST_BINARY_CONTENT), storedData));
-+ storedData.close();
- }
- catch (RepositoryException e)
- {
-@@ -145,6 +148,7 @@
- storedData = ntFile.getProperty("jcr:content/jcr:data").getStream();
- assertTrue("AFTER EXPORT/IMPORT AFTER SAVE. Binary content must be same", checkBinaryEquals(
- new ByteArrayInputStream(TEST_BINARY_CONTENT), storedData));
-+ storedData.close();
- }
- catch (RepositoryException e)
- {
-Index: exo.jcr.component.core/src/test/resources/conf/standalone/cluster/test-jbosscache-lock.xml
-===================================================================
---- exo.jcr.component.core/src/test/resources/conf/standalone/cluster/test-jbosscache-lock.xml (revision 5842)
-+++ exo.jcr.component.core/src/test/resources/conf/standalone/cluster/test-jbosscache-lock.xml (working copy)
-@@ -19,7 +19,7 @@
- For another cache-loader class you should use another template with
- cache-loader specific parameters
- -->
-- <loader class="org.jboss.cache.loader.JDBCCacheLoader" async="false" fetchPersistentState="false"
-+ <loader class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.JDBCCacheLoader" async="false" fetchPersistentState="false"
- ignoreModifications="false" purgeOnStartup="false">
- <properties>
- cache.jdbc.table.name=${jbosscache-cl-cache.jdbc.table.name}
-Index: exo.jcr.component.core/src/test/resources/conf/standalone/test-jbosscache-lock.xml
-===================================================================
---- exo.jcr.component.core/src/test/resources/conf/standalone/test-jbosscache-lock.xml (revision 5842)
-+++ exo.jcr.component.core/src/test/resources/conf/standalone/test-jbosscache-lock.xml (working copy)
-@@ -13,7 +13,7 @@
- For another cache-loader class you should use another template with
- cache-loader specific parameters
- -->
-- <loader class="org.jboss.cache.loader.JDBCCacheLoader" async="false" fetchPersistentState="false"
-+ <loader class="org.exoplatform.services.jcr.impl.core.lock.jbosscache.JDBCCacheLoader" async="false" fetchPersistentState="false"
- ignoreModifications="false" purgeOnStartup="false">
- <properties>
- cache.jdbc.table.name=${jbosscache-cl-cache.jdbc.table.name}
-Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/JDBCConnectionFactory.java
-===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/JDBCConnectionFactory.java (revision 0)
-+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/JDBCConnectionFactory.java (revision 0)
-@@ -0,0 +1,244 @@
-+/*
-+ * Copyright (C) 2012 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.core.lock.jbosscache;
-+
-+import org.exoplatform.services.log.ExoLogger;
-+import org.exoplatform.services.log.Log;
-+import org.jboss.cache.loader.AdjListJDBCCacheLoaderConfig;
-+import org.jboss.cache.loader.ConnectionFactory;
-+
-+import java.sql.Connection;
-+import java.sql.SQLException;
-+
-+import javax.naming.InitialContext;
-+import javax.naming.NamingException;
-+import javax.sql.DataSource;
-+
-+/**
-+ * @author <a href="mailto:nicolas.filotto@exoplatform.com">Nicolas Filotto</a>
-+ * @version $Id$
-+ */
-+public class JDBCConnectionFactory implements ConnectionFactory
-+{
-+
-+ /**
-+ * Logger
-+ */
-+ private static final Log LOG = ExoLogger.getLogger("exo.jcr.component.core.NonManagedConnectionFactory");
-+ private static final boolean trace = LOG.isTraceEnabled();
-+
-+ static final ThreadLocal<Connection> connection = new ThreadLocal<Connection>();
-+
-+ private DataSource dataSource;
-+ private String datasourceName;
-+
-+ public void setConfig(AdjListJDBCCacheLoaderConfig config)
-+ {
-+ datasourceName = config.getDatasourceName();
-+ }
-+
-+ public void start() throws Exception
-+ {
-+ // A datasource will be registered in JNDI in the start portion of
-+ // its lifecycle, so now that we are in start() we can look it up
-+ InitialContext ctx = null;
-+ try
-+ {
-+ ctx = new InitialContext();
-+ dataSource = (DataSource) ctx.lookup(datasourceName);
-+ if (trace)
-+ {
-+ LOG.trace("Datasource lookup for " + datasourceName + " succeded: " + dataSource);
-+ }
-+ }
-+ catch (NamingException e)
-+ {
-+ reportAndRethrowError("Failed to lookup datasource " + datasourceName, e);
-+ }
-+ finally
-+ {
-+ if (ctx != null)
-+ {
-+ try
-+ {
-+ ctx.close();
-+ }
-+ catch (NamingException e)
-+ {
-+ LOG.warn("Failed to close naming context.", e);
-+ }
-+ }
-+ }
-+ }
-+
-+ public void prepare(Object tx)
-+ {
-+ Connection con = getConnection();
-+ try
-+ {
-+ if (con.getAutoCommit())
-+ {
-+ con.setAutoCommit(false);
-+ }
-+ }
-+ catch (Exception e)
-+ {
-+ reportAndRethrowError("Failed to set auto-commit", e);
-+ }
-+
-+ /* Connection set in ThreadLocal, no reason to return. It was previously returned for legacy purpouses
-+ and to trace log the connection opening in JDBCCacheLoader. */
-+ connection.set(con);
-+
-+ if (trace)
-+ {
-+ LOG.trace("opened tx connection: tx=" + tx + ", con=" + con);
-+ }
-+
-+ }
-+
-+ public Connection getConnection()
-+ {
-+ Connection con = connection.get();
-+
-+ if (con == null)
-+ {
-+ try
-+ {
-+ con = checkoutConnection();
-+ // connection.set(con);
-+ }
-+ catch (SQLException e)
-+ {
-+ reportAndRethrowError("Failed to get connection for datasource=" + datasourceName, e);
-+ }
-+ }
-+
-+ if (trace)
-+ {
-+ LOG.trace("using connection: " + con);
-+ }
-+
-+ return con;
-+ }
-+
-+ public Connection checkoutConnection() throws SQLException
-+ {
-+ return dataSource.getConnection();
-+ }
-+
-+ public void commit(Object tx)
-+ {
-+ Connection con = connection.get();
-+ if (con == null)
-+ {
-+ throw new IllegalStateException("Failed to commit: thread is not associated with the connection!");
-+ }
-+
-+ try
-+ {
-+ con.commit();
-+ if (trace)
-+ {
-+ LOG.trace("committed tx=" + tx + ", con=" + con);
-+ }
-+ }
-+ catch (SQLException e)
-+ {
-+ reportAndRethrowError("Failed to commit", e);
-+ }
-+ finally
-+ {
-+ closeTxConnection(con);
-+ }
-+ }
-+
-+ public void rollback(Object tx)
-+ {
-+ Connection con = connection.get();
-+
-+ try
-+ {
-+ con.rollback();
-+ if (trace)
-+ {
-+ LOG.trace("rolledback tx=" + tx + ", con=" + con);
-+ }
-+ }
-+ catch (SQLException e)
-+ {
-+ reportAndRethrowError("Failed to rollback", e);
-+ }
-+ finally
-+ {
-+ closeTxConnection(con);
-+ }
-+ }
-+
-+ public void close(Connection con)
-+ {
-+ if (con != null && con != connection.get())
-+ {
-+ try
-+ {
-+ con.close();
-+
-+ if (trace)
-+ {
-+ LOG.trace("closed non tx connection: " + con);
-+ }
-+ }
-+ catch (SQLException e)
-+ {
-+ LOG.warn("Failed to close connection " + con, e);
-+ }
-+ }
-+ }
-+
-+ public void stop()
-+ {
-+ }
-+
-+ private void closeTxConnection(Connection con)
-+ {
-+ safeClose(con);
-+ connection.set(null);
-+ }
-+
-+ private void safeClose(Connection con)
-+ {
-+ if (con != null)
-+ {
-+ try
-+ {
-+ con.close();
-+ }
-+ catch (SQLException e)
-+ {
-+ LOG.warn("Failed to close connection", e);
-+ }
-+ }
-+ }
-+
-+ private void reportAndRethrowError(String message, Exception cause) throws IllegalStateException
-+ {
-+ LOG.error(message, cause);
-+ throw new IllegalStateException(message, cause);
-+ }
-+}
++ private void reportAndRethrowError(String message, Exception cause) throws IllegalStateException
++ {
++ LOG.error(message, cause);
++ throw new IllegalStateException(message, cause);
++ }
++}
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/JDBCCacheLoader.java
===================================================================
--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/JDBCCacheLoader.java (revision 0)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/JDBCCacheLoader.java (revision 0)
@@ -0,0 +1,62 @@
-+/*
-+ * Copyright (C) 2012 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.core.lock.jbosscache;
-+
-+import org.jboss.cache.config.CacheLoaderConfig;
-+import org.jboss.cache.config.CacheLoaderConfig.IndividualCacheLoaderConfig;
-+import org.jboss.cache.loader.AdjListJDBCCacheLoaderConfig;
-+
-+/**
-+ * This class is used to override the method AdjListJDBCCacheLoader#setConfig in order
-+ * to be able to use a data source name even in case of non managed data sources.
-+ *
-+ * @author <a href="mailto:nicolas.filotto@exoplatform.com">Nicolas Filotto</a>
-+ * @version $Id$
-+ */
-+public class JDBCCacheLoader extends org.jboss.cache.loader.JDBCCacheLoader
-+{
-+
-+ @Override
-+ public void setConfig(IndividualCacheLoaderConfig base)
-+ {
-+ super.setConfig(base);
-+ AdjListJDBCCacheLoaderConfig config = processConfig(base);
-+
-+ if (config.getDatasourceName() == null)
-+ {
-+ return;
-+ }
-+ /* We create the JDBCConnectionFactory instance but the JNDI lookup is no done until
-+the start method is called, since that's when its registered in its lifecycle */
-+ cf = new JDBCConnectionFactory();
-+ /* We set the configuration */
-+ cf.setConfig(config);
-+ }
-+
-+ /**
-+ * {@inheritDoc}
-+ */
-+ @Override
-+ protected AdjListJDBCCacheLoaderConfig processConfig(CacheLoaderConfig.IndividualCacheLoaderConfig base)
-+ {
-+ AdjListJDBCCacheLoaderConfig config = super.processConfig(base);
-+ config.setClassName(getClass().getName());
-+ return config;
-+ }
-+}
-Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/value/BinaryValue.java
-===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/value/BinaryValue.java (revision 5842)
-+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/value/BinaryValue.java (working copy)
-@@ -196,9 +196,7 @@
- // edited BLOB file, make a copy
- try
- {
-- EditableValueData copy =
-- new EditableValueData(oldValue.getAsStream(), oldValue.getOrderNumber(), null, -1, null);
-- return copy;
-+ return new EditableValueData(oldValue.getAsStream(), oldValue.getOrderNumber(), null, -1, null);
- }
- catch (FileNotFoundException e)
- {
-Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/value/BaseValue.java
-===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/value/BaseValue.java (revision 5842)
-+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/value/BaseValue.java (working copy)
-@@ -252,14 +252,7 @@
- */
- public long getLength()
- {
-- try
-- {
-- return getLocalData(type == PropertyType.BINARY).getLength();
-- }
-- catch (IOException e)
-- {
-- throw new RuntimeException(e);
-- }
-+ return getInternalData().getLength();
- }
-
- /**
-Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/exporting/SystemViewContentExporter.java
-===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/exporting/SystemViewContentExporter.java (revision 5842)
-+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/exporting/SystemViewContentExporter.java (working copy)
-@@ -191,13 +191,20 @@
- else
- {
- InputStream is = data.getAsStream();
-- byte[] buffer = new byte[3 * 1024 * 3];
-- int len;
-- while ((len = is.read(buffer)) > 0)
-+ try
- {
-- char[] charbuf1 = Base64.encode(buffer, 0, len, 0, "").toCharArray();
-- contentHandler.characters(charbuf1, 0, charbuf1.length);
-+ byte[] buffer = new byte[3 * 1024 * 3];
-+ int len;
-+ while ((len = is.read(buffer)) > 0)
-+ {
-+ char[] charbuf1 = Base64.encode(buffer, 0, len, 0, "").toCharArray();
-+ contentHandler.characters(charbuf1, 0, charbuf1.length);
-+ }
- }
-+ finally
-+ {
-+ is.close();
-+ }
- }
- }
- }
-Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/exporting/SystemViewStreamExporter.java
-===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/exporting/SystemViewStreamExporter.java (revision 5842)
-+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/xml/exporting/SystemViewStreamExporter.java (working copy)
-@@ -190,13 +190,20 @@
- else
- {
- InputStream is = data.getAsStream();
-- byte[] buffer = new byte[BUFFER_SIZE];
-- int len;
-- while ((len = is.read(buffer)) > 0)
-+ try
- {
-- char[] charbuf1 = Base64.encode(buffer, 0, len, 0, "").toCharArray();
-- writer.writeCharacters(charbuf1, 0, charbuf1.length);
-+ byte[] buffer = new byte[BUFFER_SIZE];
-+ int len;
-+ while ((len = is.read(buffer)) > 0)
-+ {
-+ char[] charbuf1 = Base64.encode(buffer, 0, len, 0, "").toCharArray();
-+ writer.writeCharacters(charbuf1, 0, charbuf1.length);
-+ }
- }
-+ finally
-+ {
-+ is.close();
-+ }
- }
- }
- }
-Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/EditableValueData.java
-===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/EditableValueData.java (revision 5842)
-+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/EditableValueData.java (working copy)
-@@ -129,12 +129,10 @@
- {
- byte[] tmpBuff = new byte[2048];
- int read = 0;
-- int len = 0;
-
- while ((read = stream.read(tmpBuff)) >= 0)
- {
- sfout.write(tmpBuff, 0, read);
-- len += read;
- }
- }
- catch (final IOException e)
-@@ -156,6 +154,10 @@
- }
- };
- }
-+ finally
-+ {
-+ stream.close();
-+ }
-
- this.data = null;
-
++/*
++ * Copyright (C) 2012 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.core.lock.jbosscache;
++
++import org.jboss.cache.config.CacheLoaderConfig;
++import org.jboss.cache.config.CacheLoaderConfig.IndividualCacheLoaderConfig;
++import org.jboss.cache.loader.AdjListJDBCCacheLoaderConfig;
++
++/**
++ * This class is used to override the method AdjListJDBCCacheLoader#setConfig in order
++ * to be able to use a data source name even in case of non managed data sources.
++ *
++ * @author <a href="mailto:nicolas.filotto@exoplatform.com">Nicolas Filotto</a>
++ * @version $Id$
++ */
++public class JDBCCacheLoader extends org.jboss.cache.loader.JDBCCacheLoader
++{
++
++ @Override
++ public void setConfig(IndividualCacheLoaderConfig base)
++ {
++ super.setConfig(base);
++ AdjListJDBCCacheLoaderConfig config = processConfig(base);
++
++ if (config.getDatasourceName() == null)
++ {
++ return;
++ }
++ /* We create the JDBCConnectionFactory instance but the JNDI lookup is no done until
++the start method is called, since that's when its registered in its lifecycle */
++ cf = new JDBCConnectionFactory();
++ /* We set the configuration */
++ cf.setConfig(config);
++ }
++
++ /**
++ * {@inheritDoc}
++ */
++ @Override
++ protected AdjListJDBCCacheLoaderConfig processConfig(CacheLoaderConfig.IndividualCacheLoaderConfig base)
++ {
++ AdjListJDBCCacheLoaderConfig config = super.processConfig(base);
++ config.setClassName(getClass().getName());
++ return config;
++ }
++}
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/WorkspacePersistentDataManager.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/WorkspacePersistentDataManager.java (revision 5842)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/WorkspacePersistentDataManager.java (revision 5838)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/WorkspacePersistentDataManager.java (working copy)
@@ -58,6 +58,9 @@
@@ -1811,92 +1260,9 @@
public int getLastOrderNumber(final NodeData nodeData) throws RepositoryException
{
final WorkspaceStorageConnection con = dataContainer.openConnection();
-Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/FilePersistedValueData.java
-===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/FilePersistedValueData.java (revision 5842)
-+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/FilePersistedValueData.java (working copy)
-@@ -57,8 +57,6 @@
-
- protected File file;
-
-- protected FileChannel channel;
--
- /**
- * Empty constructor to serialization.
- */
-@@ -112,37 +110,46 @@
- */
- public long read(OutputStream stream, long length, long position) throws IOException
- {
-- if (channel == null)
-- {
-- channel = new FileInputStream(file).getChannel();
-- }
-+ FileInputStream in = new FileInputStream(file);
-
-- // validation
-- if (position >= channel.size() && position > 0)
-+ try
- {
-- throw new IOException("Position " + position + " out of value size " + channel.size());
-- }
-+ FileChannel channel = in.getChannel();
-
-- if (position + length >= channel.size())
-- {
-- length = channel.size() - position;
-- }
-+ // validation
-+ if (position >= channel.size() && position > 0)
-+ {
-+ throw new IOException("Position " + position + " out of value size " + channel.size());
-+ }
-
-- MappedByteBuffer bb = channel.map(FileChannel.MapMode.READ_ONLY, position, length);
-+ if (position + length >= channel.size())
-+ {
-+ length = channel.size() - position;
-+ }
-
-- WritableByteChannel ch;
-- if (stream instanceof FileOutputStream)
-- {
-- ch = ((FileOutputStream)stream).getChannel();
-+ WritableByteChannel ch;
-+ if (stream instanceof FileOutputStream)
-+ {
-+ ch = ((FileOutputStream)stream).getChannel();
-+ }
-+ else
-+ {
-+ ch = Channels.newChannel(stream);
-+ }
-+
-+ long size = 0;
-+ do
-+ {
-+ size += channel.transferTo(position, length, ch);
-+ }
-+ while (size != length);
-+
-+ return size;
- }
-- else
-+ finally
- {
-- ch = Channels.newChannel(stream);
-+ in.close();
- }
-- ch.write(bb);
-- ch.close();
--
-- return length;
- }
-
- /**
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java (revision 5842)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java (revision 5838)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java (working copy)
@@ -43,7 +43,6 @@
import java.util.concurrent.CountDownLatch;
@@ -1955,7 +1321,7 @@
/**
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/inmemory/InmemoryStorageConnection.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/inmemory/InmemoryStorageConnection.java (revision 5842)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/inmemory/InmemoryStorageConnection.java (revision 5838)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/inmemory/InmemoryStorageConnection.java (working copy)
@@ -235,6 +235,10 @@
public void rollback() throws IllegalStateException, RepositoryException
@@ -1970,7 +1336,7 @@
{
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java (revision 5842)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java (revision 5838)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCStorageConnection.java (working copy)
@@ -336,18 +336,40 @@
{
@@ -2131,7 +1497,7 @@
/**
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/statistics/StatisticsJDBCStorageConnection.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/statistics/StatisticsJDBCStorageConnection.java (revision 5842)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/statistics/StatisticsJDBCStorageConnection.java (revision 5838)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/statistics/StatisticsJDBCStorageConnection.java (working copy)
@@ -63,6 +63,12 @@
* <code>rollback()</code>
@@ -2181,7 +1547,7 @@
Statistics s = ALL_STATISTICS.get(ROLLBACK_DESCR);
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/FileIOChannel.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/FileIOChannel.java (revision 5842)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/FileIOChannel.java (revision 5838)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/FileIOChannel.java (working copy)
@@ -121,6 +121,15 @@
/**
@@ -2224,7 +1590,7 @@
* {@inheritDoc}
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/CASableWriteValue.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/CASableWriteValue.java (revision 5842)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/CASableWriteValue.java (revision 5838)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/CASableWriteValue.java (working copy)
@@ -148,61 +148,67 @@
* {@inheritDoc}
@@ -2332,7 +1698,7 @@
if (fileLock != null)
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/DeleteValues.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/DeleteValues.java (revision 5842)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/DeleteValues.java (revision 5838)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/DeleteValues.java (working copy)
@@ -23,6 +23,7 @@
@@ -2357,12 +1723,12 @@
+ * The backup files
+ */
+ protected File[] bckFiles;
-+
++
+ /**
* DeleteValues constructor.
*
* @param files
-@@ -83,24 +90,61 @@
+@@ -83,36 +90,73 @@
/**
* {@inheritDoc}
*/
@@ -2377,10 +1743,7 @@
+ if (file.exists())
+ {
+ bckFiles[i] = new File(file.getAbsolutePath() + "." + System.currentTimeMillis() + "_" + SEQUENCE.incrementAndGet());
-+ if (!file.renameTo(bckFiles[i]))
-+ {
-+ throw new IOException("Could not rename the file " + file.getAbsolutePath() + " to " + bckFiles[i].getAbsolutePath());
-+ }
++ move(file, bckFiles[i]);
+ }
+ }
+ }
@@ -2401,7 +1764,13 @@
+ File f = bckFiles[i];
+ if (f != null)
+ {
-+ f.renameTo(files[i]);
++ // As the files could be registered to the file cleaner
++ // to be removed in case of a move that failed
++ // or in case of a WriteValue.rollback() that could not
++ // remove the file, we need to unregister the files that
++ // will be restored thanks to the backup file
++ cleaner.removeFile(files[i]);
++ move(f, files[i]);
+ }
+ }
+ }
@@ -2425,11 +1794,15 @@
+ for (File f : bckFiles)
{
- if (!f.delete())
+- // TODO possible place of error: FileNotFoundException when we delete/update existing
+- // Value and then add/update again.
+- // After the time the Cleaner will delete the file which is mapped to the Value.
+- // Don't use cleaner! Care about transaction-style files isolation per-user etc.
+ if (f != null && !f.delete())
- // TODO possible place of error: FileNotFoundException when we delete/update existing
- // Value and then add/update again.
- // After the time the Cleaner will delete the file which is mapped to the Value.
-@@ -110,9 +154,8 @@
++ {
+ cleaner.addFile(f);
++ }
+ }
}
finally
{
@@ -2443,9 +1816,9 @@
}
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/WriteValue.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/WriteValue.java (revision 5842)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/WriteValue.java (revision 5838)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/WriteValue.java (working copy)
-@@ -79,34 +79,47 @@
+@@ -79,34 +79,54 @@
fileLock = new ValueFileLock(file);
fileLock.lock();
}
@@ -2462,6 +1835,13 @@
+ {
+ // be sure the destination dir exists (case for Tree-style storage)
+ file.getParentFile().mkdirs();
++ if (file.exists())
++ {
++ // The file still exists so either it is a file that could not be removed
++ // or it is a multi update use case, in both cases we will need
++ // to prevent the file cleaner to remove it
++ cleaner.removeFile(file);
++ }
+ // write value to the file
+ writeValue(file, value);
+ }
@@ -2507,7 +1887,7 @@
}
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/CASableDeleteValues.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/CASableDeleteValues.java (revision 5842)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/CASableDeleteValues.java (revision 5838)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/CASableDeleteValues.java (working copy)
@@ -81,11 +81,11 @@
* {@inheritDoc}
@@ -2525,10 +1905,18 @@
{
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/ValueFileOperation.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/ValueFileOperation.java (revision 5842)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/ValueFileOperation.java (revision 5838)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/operations/ValueFileOperation.java (working copy)
-@@ -276,4 +276,19 @@
+@@ -26,6 +26,7 @@
+ import org.exoplatform.services.log.Log;
+ import java.io.File;
++import java.io.FileInputStream;
+ import java.io.FileOutputStream;
+ import java.io.IOException;
+ import java.net.InetAddress;
+@@ -276,4 +277,57 @@
+
performed = true;
}
+
@@ -2546,10 +1934,48 @@
+ twoPhaseCommit();
+ }
+ }
++
++ /**
++ * Moves a file from a location to another by using the method {{File.renameTo(File)}}
++ * if it fails it will do a copy and delete. If the source file cannot be deleted
++ * it will be given to the file cleaner
++ * @param srcFile the file to be moved
++ * @param destFile the destination file
++ * @throws IOException if error occurs
++ */
++ protected void move(File srcFile, File destFile) throws IOException
++ {
++ if (!srcFile.renameTo(destFile))
++ {
++ try
++ {
++ copyClose(new FileInputStream(srcFile), new FileOutputStream(destFile));
++ }
++ catch (IOException e)
++ {
++ throw new IOException("Could not move the file from " + srcFile.getAbsolutePath() + " to "
++ + destFile.getAbsolutePath(), e);
++ }
++ if (!srcFile.delete())
++ {
++ if (LOG.isDebugEnabled())
++ {
++ LOG.debug("The file '"
++ + srcFile.getAbsolutePath()
++ + "' could not be deleted which prevents the application"
++ + " to move it properly, it is probably due to a stream used to read this property "
++ + "that has not been closed as expected. The file will be given to the file cleaner for a later deletion.");
++ }
++ // The source could not be deleted so we add it to the
++ // file cleaner
++ cleaner.addFile(srcFile);
++ }
++ }
++ }
}
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/ValueOperation.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/ValueOperation.java (revision 5842)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/ValueOperation.java (revision 5838)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/ValueOperation.java (working copy)
@@ -49,11 +49,26 @@
void rollback() throws IOException;
@@ -2579,9 +2005,28 @@
+ */
+ void twoPhaseCommit() throws IOException;
}
+Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleaner.java
+===================================================================
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleaner.java (revision 5838)
++++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleaner.java (working copy)
+@@ -86,6 +86,14 @@
+ }
+ }
+
++ /**
++ * @param file
++ */
++ public void removeFile(File file)
++ {
++ files.remove(file);
++ }
++
+ public void halt()
+ {
+ try
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/WorkspaceStorageConnection.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/WorkspaceStorageConnection.java (revision 5842)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/WorkspaceStorageConnection.java (revision 5838)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/WorkspaceStorageConnection.java (working copy)
@@ -38,7 +38,7 @@
* should have "opened" state. The connection becomes "closed" (invalid for using) after calling
@@ -2805,7 +2250,7 @@
Index: exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/value/ValueIOChannel.java
===================================================================
---- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/value/ValueIOChannel.java (revision 5842)
+--- exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/value/ValueIOChannel.java (revision 5838)
+++ exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/storage/value/ValueIOChannel.java (working copy)
@@ -78,12 +78,28 @@
String getStorageId();
@@ -2839,7 +2284,7 @@
* Rollback channel changes.
Index: exo.jcr.component.core/src/main/resources/conf/portal/cluster/jbosscache-lock.xml
===================================================================
---- exo.jcr.component.core/src/main/resources/conf/portal/cluster/jbosscache-lock.xml (revision 5842)
+--- exo.jcr.component.core/src/main/resources/conf/portal/cluster/jbosscache-lock.xml (revision 5838)
+++ exo.jcr.component.core/src/main/resources/conf/portal/cluster/jbosscache-lock.xml (working copy)
@@ -18,7 +18,7 @@
For another cache-loader class you should use another template with
@@ -2850,4067 +2295,3 @@
ignoreModifications="false" purgeOnStartup="false">
<properties>
cache.jdbc.table.name=${jbosscache-cl-cache.jdbc.table.name}
-Index: exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/BaseStandaloneTest.java
-===================================================================
---- exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/BaseStandaloneTest.java (revision 5842)
-+++ exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/BaseStandaloneTest.java (working copy)
-@@ -295,60 +295,67 @@
- protected void compareStream(InputStream etalon, InputStream data, long etalonPos, long dataPos, long length)
- throws IOException, CompareStreamException
- {
-+ try
-+ {
-+ int dindex = 0;
-
-- int dindex = 0;
-+ skipStream(etalon, etalonPos);
-+ skipStream(data, dataPos);
-
-- skipStream(etalon, etalonPos);
-- skipStream(data, dataPos);
-+ byte[] ebuff = new byte[1024];
-+ int eread = 0;
-
-- byte[] ebuff = new byte[1024];
-- int eread = 0;
-+ while ((eread = etalon.read(ebuff)) > 0)
-+ {
-
-- while ((eread = etalon.read(ebuff)) > 0)
-- {
--
-- byte[] dbuff = new byte[eread];
-- int erindex = 0;
-- while (erindex < eread)
-- {
-- int dread = -1;
-- try
-+ byte[] dbuff = new byte[eread];
-+ int erindex = 0;
-+ while (erindex < eread)
- {
-- dread = data.read(dbuff);
-- }
-- catch (IOException e)
-- {
-- throw new CompareStreamException("Streams is not equals by length or data stream is unreadable. Cause: "
-- + e.getMessage());
-- }
-+ int dread = -1;
-+ try
-+ {
-+ dread = data.read(dbuff);
-+ }
-+ catch (IOException e)
-+ {
-+ throw new CompareStreamException(
-+ "Streams is not equals by length or data stream is unreadable. Cause: " + e.getMessage());
-+ }
-
-- if (dread == -1)
-- throw new CompareStreamException(
-- "Streams is not equals by length. Data end-of-stream reached at position " + dindex);
-+ if (dread == -1)
-+ throw new CompareStreamException(
-+ "Streams is not equals by length. Data end-of-stream reached at position " + dindex);
-
-- for (int i = 0; i < dread; i++)
-- {
-- byte eb = ebuff[i];
-- byte db = dbuff[i];
-- if (eb != db)
-- throw new CompareStreamException("Streams is not equals. Wrong byte stored at position " + dindex
-- + " of data stream. Expected 0x" + Integer.toHexString(eb) + " '" + new String(new byte[]{eb})
-- + "' but found 0x" + Integer.toHexString(db) + " '" + new String(new byte[]{db}) + "'");
-+ for (int i = 0; i < dread; i++)
-+ {
-+ byte eb = ebuff[i];
-+ byte db = dbuff[i];
-+ if (eb != db)
-+ throw new CompareStreamException("Streams is not equals. Wrong byte stored at position " + dindex
-+ + " of data stream. Expected 0x" + Integer.toHexString(eb) + " '" + new String(new byte[]{eb})
-+ + "' but found 0x" + Integer.toHexString(db) + " '" + new String(new byte[]{db}) + "'");
-
-- erindex++;
-- dindex++;
-- if (length > 0 && dindex >= length)
-- return; // tested length reached
-+ erindex++;
-+ dindex++;
-+ if (length > 0 && dindex >= length)
-+ return; // tested length reached
-+ }
-+
-+ if (dread < eread)
-+ dbuff = new byte[eread - dread];
- }
-+ }
-
-- if (dread < eread)
-- dbuff = new byte[eread - dread];
-- }
-+ if (data.available() > 0)
-+ throw new CompareStreamException(
-+ "Streams is not equals by length. Data stream contains more data. Were read " + dindex);
- }
--
-- if (data.available() > 0)
-- throw new CompareStreamException("Streams is not equals by length. Data stream contains more data. Were read "
-- + dindex);
-+ finally
-+ {
-+ etalon.close();
-+ data.close();
-+ }
- }
-
- protected void skipStream(InputStream stream, long pos) throws IOException
-Index: exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/AbstractBackupUseCasesTest.java
-===================================================================
---- exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/AbstractBackupUseCasesTest.java (revision 5842)
-+++ exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/AbstractBackupUseCasesTest.java (working copy)
-@@ -16,26 +16,29 @@
- */
- package org.exoplatform.services.jcr.ext.backup;
-
-+import java.io.File;
-+import java.io.FileInputStream;
-+import java.io.FileOutputStream;
-+import java.io.IOException;
-+import java.io.InputStream;
-+import java.io.OutputStream;
-+import java.util.List;
-+import java.util.Map;
-+
-+import javax.jcr.Node;
-+
- import org.apache.commons.collections.map.HashedMap;
- import org.exoplatform.services.jcr.config.RepositoryEntry;
-+import org.exoplatform.services.jcr.config.SimpleParameterEntry;
- import org.exoplatform.services.jcr.config.WorkspaceEntry;
- import org.exoplatform.services.jcr.core.ManageableRepository;
- import org.exoplatform.services.jcr.ext.backup.impl.JobRepositoryRestore;
- import org.exoplatform.services.jcr.ext.backup.impl.JobWorkspaceRestore;
--import org.exoplatform.services.jcr.impl.core.RepositoryImpl;
-+import org.exoplatform.services.jcr.impl.Constants;
- import org.exoplatform.services.jcr.impl.core.SessionImpl;
-+import org.exoplatform.services.jcr.util.IdGenerator;
-+import org.exoplatform.services.jcr.util.TesterConfigurationHelper;
-
--import java.io.ByteArrayInputStream;
--import java.io.File;
--import java.io.FileInputStream;
--import java.util.Map;
--
--import javax.jcr.Node;
--import javax.jcr.RepositoryException;
--import javax.jcr.Session;
--import javax.jcr.Value;
--import javax.jcr.lock.Lock;
--
- /**
- * Created by The eXo Platform SAS.
- *
-@@ -44,613 +47,246 @@
- * @author <a href="mailto:alex.reshetnyak@exoplatform.com.ua">Alex Reshetnyak</a>
- * @version $Id: AbstractBackupUseCasesTest.java 3709 2010-12-22 11:56:25Z tolusha $
- */
--public abstract class AbstractBackupUseCasesTest
-- extends AbstractBackupTestCase
-+public abstract class AbstractBackupUseCasesTest extends AbstractBackupTestCase
- {
-
-- private static volatile long uuIndex;
-+ protected TesterConfigurationHelper helper = TesterConfigurationHelper.getInstance();
-
-- protected static synchronized long getUUIndex()
-+ File blob;
-+
-+ public void setUp() throws Exception
- {
-- return uuIndex++;
-+ super.setUp();
-+ blob = createBLOBTempFile(300);
- }
-
- public void testFullBackupRestore() throws Exception
- {
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
-+ helper.addWorkspace(repository, wsEntry);
-+ addConent(repository, wsEntry.getName());
-+
- // backup
-- File backDir = new File("target/backup/" + workspaceNameToBackup + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
-+ config.setWorkspace(wsEntry.getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
-+ BackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-+ backup.stopBackup(bch);
-
-- BackupChain bch = backup.findBackup(repositoryNameToBackup, workspaceNameToBackup);
--
-- // wait till full backup will be stopped
-- while (bch.getFullBackupState() != BackupJob.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // stop fullBackup
--
-- if (bch != null)
-- backup.stopBackup(bch);
-- else
-- fail("Can't get fullBackup chain");
--
- // restore
-- RepositoryEntry re =
-- (RepositoryEntry) ws1Session.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
-- WorkspaceEntry ws1back = makeWorkspaceEntry(workspaceNameToRestore, dataSourceToWorkspaceRestore);
-+ WorkspaceEntry newWS = helper.createWorkspaceEntry(true, null);
-
-- // BackupChainLog bchLog = new BackupChainLog(backDir, rconfig);
- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- BackupChainLog bchLog = new BackupChainLog(backLog);
-+ assertTrue(backLog.exists());
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ BackupChainLog bchLog = new BackupChainLog(backLog);
-
-- backup.restore(bchLog, re.getName(), ws1back, false);
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- // check
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) getReposityToBackup().login(credentials, workspaceNameToRestore);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ backup.restore(bchLog, config.getRepository(), newWS, false);
-+ checkConent(repository, newWS.getName());
- }
-
- public void testIncrementalBackupRestore() throws Exception
- {
-- // full backup & incremental
-- File backDir = new File("target/backup/" + workspaceNameToBackup + getUUIndex());
-- backDir.mkdirs();
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
-+ helper.addWorkspace(repository, wsEntry);
-+ addConent(repository, wsEntry.getName());
-
-- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-- config.setBackupType(BackupManager.FULL_AND_INCREMENTAL);
--
-- config.setBackupDir(backDir);
--
-- backup.startBackup(config);
--
-- BackupChain bch = backup.findBackup(repositoryNameToBackup, workspaceNameToBackup);
--
-- // wait till full backup will be stopped
-- while (bch.getFullBackupState() != BackupJob.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // add some changes which will be logged in incremental log
-- ws1TestRoot.getNode("node_3").remove();
-- ws1TestRoot.getNode("node_4").remove();
-- ws1TestRoot.getNode("node_5").remove();
-- ws1TestRoot.addNode("node #3").setProperty("exo:data", "property #3");
-- ws1TestRoot.addNode("node #5").setProperty("exo:extraData", "property #5");
--
-- ws1TestRoot.addNode("binary_data").setProperty("data", new FileInputStream(createBLOBTempFile(500)));
--
-- ws1TestRoot.save(); // log here via listener
--
-- // stop all
-- if (bch != null)
-- backup.stopBackup(bch);
-- else
-- fail("Can't get fullBackup chain");
--
-- // restore
-- RepositoryEntry re =
-- (RepositoryEntry) ws1Session.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
-- WorkspaceEntry ws1back = makeWorkspaceEntry(workspaceNameToRestore, dataSourceToWorkspaceRestore);
--
-- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- BackupChainLog bchLog = new BackupChainLog(backLog);
--
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
--
-- backup.restore(bchLog, repositoryNameToBackup, ws1back, false);
--
-- // check
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) getReposityToBackup().login(credentials, workspaceNameToRestore);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertFalse("Node should be removed", ws1backTestRoot.hasNode("node_3"));
-- assertFalse("Node should be removed", ws1backTestRoot.hasNode("node_4"));
-- assertFalse("Node should be removed", ws1backTestRoot.hasNode("node_5"));
--
-- assertEquals("Restored content should be same", "property #3", ws1backTestRoot.getNode("node #3")
-- .getProperty("exo:data").getString());
-- assertEquals("Restored content should be same", "property #5", ws1backTestRoot.getNode("node #5")
-- .getProperty("exo:extraData").getString());
--
-- assertFalse("Proeprty should be removed", ws1backTestRoot.getNode("node #5").hasProperty("exo:data"));
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-- }
--
-- public void testIncrementalBackupRestore2() throws Exception
-- {
-- // full backup with BLOBs & incremental with BLOBs
--
-- // BLOBs for full
-- File tempf = createBLOBTempFile("testIncrementalBackupRestore2-", 5 * 1024); // 5M
-- tempf.deleteOnExit();
-- ws1TestRoot.addNode("node_101").setProperty("exo:data", new FileInputStream(tempf));
-- ws1TestRoot.addNode("node_102").setProperty("exo:extraData", new FileInputStream(tempf));
--
-- File backDir = new File("target/backup/" + workspaceNameToBackup + getUUIndex());
-+ // backup
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
-+ config.setWorkspace(wsEntry.getName());
- config.setBackupType(BackupManager.FULL_AND_INCREMENTAL);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
-+ BackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-
-- BackupChain bch = backup.findBackup(repositoryNameToBackup, workspaceNameToBackup);
-+ addIncrementalConent(repository, wsEntry.getName());
-
-- // wait till full backup will be stopped
-- while (bch.getFullBackupState() != BackupJob.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
-+ backup.stopBackup(bch);
-
-- // add some changes which will be logged in incremental log
-- ws1TestRoot.addNode("node #53").setProperty("exo:extraData", "property #53");
-- ws1TestRoot.save(); // log here via listener
--
-- // BLOBs for incr
-- ws1TestRoot.getNode("node_1").setProperty("exo:extraData", new FileInputStream(tempf));
-- ws1TestRoot.getNode("node_5").setProperty("exo:data", new FileInputStream(tempf));
--
-- ws1TestRoot.addNode("node_101").setProperty("exo:data", new FileInputStream(tempf));
-- ws1TestRoot.addNode("node_102").setProperty("exo:data", new FileInputStream(tempf));
-- ws1TestRoot.save(); // log here via listener
--
-- ws1TestRoot.getNode("node_2").setProperty("exo:data", (Value) null); // remove property
-- ws1TestRoot.getNode("node_3").setProperty("exo:data", new ByteArrayInputStream("aaa".getBytes())); // set
-- // aaa
-- // bytes
-- ws1TestRoot.getNode("node_4").remove(); // (*)
-- ws1TestRoot.save(); // log here via listener
--
-- ws1TestRoot.getNode("node_5").addMixin("mix:lockable");
-- ws1TestRoot.save(); // log here via listener
-- Lock n107lock = ws1TestRoot.getNode("node_5").lock(true, false);
-- ws1TestRoot.getSession().move(ws1TestRoot.getNode("node #53").getPath(),
-- ws1TestRoot.getNode("node_5").getPath() + "/node #53");
-- ws1TestRoot.save(); // log here via listener
--
-- ws1TestRoot.getNode("node_6").addMixin("mix:referenceable");
-- String id6 = ws1TestRoot.getNode("node_6").getUUID();
-- ws1TestRoot.save(); // log here via listener
--
-- // before(*), log here via listener
-- ws1TestRoot.getSession().getWorkspace().move(ws1TestRoot.getNode("node_6").getPath(),
-- ws1TestRoot.getPath() + "/node_4"); // in place of
-- // 4 removed
--
-- // stop all
-- if (bch != null)
-- backup.stopBackup(bch);
-- else
-- fail("Can't get fullBackup chain");
--
- // restore
-- RepositoryEntry re =
-- (RepositoryEntry) ws1Session.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
-- WorkspaceEntry ws1back = makeWorkspaceEntry(workspaceNameToRestore, dataSourceToWorkspaceRestore);
-+ WorkspaceEntry newWS = helper.createWorkspaceEntry(true, null);
-
- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- BackupChainLog bchLog = new BackupChainLog(backLog);
-+ assertTrue(backLog.exists());
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ BackupChainLog bchLog = new BackupChainLog(backLog);
-
-- backup.restore(bchLog, repositoryNameToBackup, ws1back, false);
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- // check
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) getReposityToBackup().login(credentials, workspaceNameToRestore);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
--
-- assertTrue("Node should exists", ws1backTestRoot.getNode("node_5").hasNode("node #53"));
-- assertTrue("Property should exists", ws1backTestRoot.getNode("node_5")
-- .hasProperty("node #53/exo:extraData"));
--
-- assertTrue("Node should exists", ws1backTestRoot.hasNode("node_7"));
-- assertTrue("Property should exists", ws1backTestRoot.hasProperty("node_5/exo:data"));
-- assertTrue("Property should exists", ws1backTestRoot.hasProperty("node_1/exo:extraData"));
-- assertTrue("Node should exists", ws1backTestRoot.hasNode("node_102"));
--
-- compareStream(new FileInputStream(tempf), ws1backTestRoot.getNode("node_5").getProperty("exo:data")
-- .getStream());
-- compareStream(new FileInputStream(tempf), ws1backTestRoot.getNode("node_1").getProperty("exo:extraData")
-- .getStream());
--
-- assertFalse("Property should be removed", ws1backTestRoot.getNode("node_2").hasProperty("exo:data"));
--
-- compareStream(new ByteArrayInputStream("aaa".getBytes()), ws1backTestRoot.getNode("node_3").getProperty(
-- "exo:data").getStream());
--
-- assertTrue("Node should be mix:lockable ", ws1backTestRoot.getNode("node_5").isNodeType("mix:lockable"));
-- assertFalse("Node should be not locked ", ws1backTestRoot.getNode("node_5").isLocked());
--
-- assertEquals("Node should be mix:referenceable and UUID should be " + id6, id6, ws1backTestRoot.getNode(
-- "node_4").getUUID());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ backup.restore(bchLog, config.getRepository(), newWS, false);
-+ checkConent(repository, newWS.getName());
-+ checkIncrementalConent(repository, newWS.getName());
- }
-
- public void testFullBackupRestoreAsync() throws Exception
- {
-- SessionImpl sessionWS1 = (SessionImpl) getReposityToBackup().login(credentials, workspaceNameToBackup);
-- sessionWS1.getRootNode().getNode("backupTest").getNode("node_5").setProperty("exo:data",
-- "Restored content should be same");
-- sessionWS1.save();
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
-+ helper.addWorkspace(repository, wsEntry);
-+ addConent(repository, wsEntry.getName());
-
- // backup
-- File backDir = new File("target/backup/" + workspaceNameToBackup + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
-+ config.setWorkspace(wsEntry.getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
-+ BackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-+ backup.stopBackup(bch);
-
-- BackupChain bch = backup.findBackup(repositoryNameToBackup, workspaceNameToBackup);
--
-- // wait till full backup will be stopped
-- while (bch.getFullBackupState() != BackupJob.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // stop fullBackup
--
-- if (bch != null)
-- backup.stopBackup(bch);
-- else
-- fail("Can't get fullBackup chain");
--
- // restore
-- WorkspaceEntry ws1back = makeWorkspaceEntry(workspaceNameToRestore, dataSourceToWorkspaceRestore);
-+ WorkspaceEntry newWS = helper.createWorkspaceEntry(true, null);
-
- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- BackupChainLog bchLog = new BackupChainLog(backLog);
-+ assertTrue(backLog.exists());
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ BackupChainLog bchLog = new BackupChainLog(backLog);
-
-- backup.restore(bchLog, repositoryNameToBackup, ws1back, true);
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- while (backup.getLastRestore(repositoryNameToBackup, workspaceNameToRestore).getStateRestore() != JobWorkspaceRestore.RESTORE_SUCCESSFUL
-- && backup.getLastRestore(repositoryNameToBackup, workspaceNameToRestore).getStateRestore() != JobWorkspaceRestore.RESTORE_FAIL)
-- {
-- Thread.sleep(50);
-- }
-+ backup.restore(bchLog, config.getRepository(), newWS, true);
-+ waitEndOfRestore(config.getRepository(), newWS.getName());
-
-- if (backup.getLastRestore(repositoryNameToBackup, workspaceNameToRestore).getStateRestore() == JobWorkspaceRestore.RESTORE_FAIL)
-- throw (Exception) backup.getLastRestore(repositoryNameToBackup, workspaceNameToRestore)
-- .getRestoreException();
--
-- // check
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) getReposityToBackup().login(credentials, workspaceNameToRestore);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "Restored content should be same", ws1backTestRoot.getNode(
-- "node_5").getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ assertEquals(backup.getLastRestore(config.getRepository(), newWS.getName()).getStateRestore(),
-+ JobWorkspaceRestore.RESTORE_SUCCESSFUL);
-+ checkConent(repository, newWS.getName());
- }
-
- public void testAutoStopBackupFull() throws Exception
- {
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
-+ helper.addWorkspace(repository, wsEntry);
-+
- // backup
-- File backDir = new File("target/backup/" + workspaceNameToBackup + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
-+ config.setWorkspace(wsEntry.getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
- BackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-
-- while (!bch.isFinished())
-+ Thread.sleep(30000);
-+ try
- {
-- Thread.yield();
-- Thread.sleep(50);
-+ assertEquals(backup.getCurrentBackups().size(), 0);
- }
--
-- Thread.sleep(5000);
--
-- for (BackupChain chain : backup.getCurrentBackups())
-- if (bch.getBackupId().equals(chain.getBackupId()))
-- fail("The backup with id '" + chain.getBackupId() + "' should not be active");
-+ finally
-+ {
-+ backup.stopBackup(bch);
-+ }
- }
-
- public void testAutoStopBackupIncr() throws Exception
- {
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
-+ helper.addWorkspace(repository, wsEntry);
-+
- // backup
-- File backDir = new File("target/backup/" + workspaceNameToBackup + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
-+ config.setWorkspace(wsEntry.getName());
- config.setBackupType(BackupManager.FULL_AND_INCREMENTAL);
-- config.setBackupDir(backDir);
- config.setIncrementalJobPeriod(3);
- config.setIncrementalJobNumber(0);
-+ config.setBackupDir(backDir);
-
- BackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-
-- while (bch.getFullBackupState() != BackupJob.FINISHED)
-+ Thread.sleep(10000);
-+ try
- {
-- Thread.yield();
-- Thread.sleep(50);
-+ assertEquals(backup.getCurrentBackups().size(), 1);
- }
--
-- boolean isFail = true;
--
-- for (BackupChain chain : backup.getCurrentBackups())
-- if (bch.getBackupId().equals(chain.getBackupId()))
-- isFail = false;
--
-- if (isFail)
-- fail("The backup with id '" + bch.getBackupId() + "' should be active");
--
-- backup.stopBackup(bch);
-+ finally
-+ {
-+ backup.stopBackup(bch);
-+ }
- }
-
-- public void testAutoStopBackupIncrRepetion() throws Exception
-+ public void _testAutoStopBackupIncrRepetion() throws Exception
- {
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
-+ helper.addWorkspace(repository, wsEntry);
-+
- // backup
-- File backDir = new File("target/backup/" + workspaceNameToBackup + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
-+ config.setWorkspace(wsEntry.getName());
- config.setBackupType(BackupManager.FULL_AND_INCREMENTAL);
-- config.setBackupDir(backDir);
- config.setIncrementalJobPeriod(4);
- config.setIncrementalJobNumber(2);
-+ config.setBackupDir(backDir);
-
-- final BackupChain bch = backup.startBackup(config);
-+ BackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-
-- while (!bch.isFinished())
-+ Thread.sleep(60000);
-+ try
- {
-- Thread.yield();
-- Thread.sleep(50);
-+ assertEquals(backup.getCurrentBackups().size(), 0);
- }
--
-- Thread.sleep(5000);
--
-- for (BackupChain chain : backup.getCurrentBackups())
-- if (bch.getBackupId().equals(chain.getBackupId()))
-- fail("The backup with id '" + chain.getBackupId() + "' should not be active");
-- }
--
-- public void testTwoRestores() throws Exception
-- {
-+ finally
- {
-- SessionImpl sessionWS1 = (SessionImpl) getReposityToBackup().login(credentials, workspaceNameToBackup);
--
-- sessionWS1.getRootNode().addNode("asdasdasda", "nt:unstructured").setProperty("data",
-- new FileInputStream(createBLOBTempFile(1024)));
-- sessionWS1.save();
--
-- // 1-st backup
-- File backDir = new File("target/backup/" + workspaceNameToBackup + getUUIndex());
-- backDir.mkdirs();
--
-- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-- config.setBackupDir(backDir);
--
-- BackupChain bch = backup.startBackup(config);
--
-- // wait till full backup will be stopped
-- while (!bch.isFinished())
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // 1-st restore
-- WorkspaceEntry ws1_restore_1 = makeWorkspaceEntry(workspaceNameToRestore, dataSourceToWorkspaceRestore);
--
-- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- BackupChainLog bchLog = new BackupChainLog(backLog);
--
-- backup.restore(bchLog, repositoryNameToBackup, ws1_restore_1, false);
--
-- // check
-- SessionImpl back1 = (SessionImpl) getReposityToBackup().login(credentials, workspaceNameToRestore);
-- assertNotNull(back1.getRootNode().getNode("asdasdasda").getProperty("data"));
--
-- // add date to restored workspace
-- back1.getRootNode().addNode("gdfgrghfhf", "nt:unstructured").setProperty("data",
-- new FileInputStream(createBLOBTempFile(1024)));
-- back1.save();
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ backup.stopBackup(bch);
- }
--
-- {
-- // 2-st backup
-- File backDir = new File("target/backup/" + workspaceNameToBackup + getUUIndex());
-- backDir.mkdirs();
--
-- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToRestore);
-- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-- config.setBackupDir(backDir);
--
-- BackupChain bch = backup.startBackup(config);
--
-- // wait till full backup will be stopped
-- while (!bch.isFinished())
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- removeWorkspaceFully(repositoryNameToBackup, workspaceNameToRestore);
--
-- // 2-st restore
-- WorkspaceEntry ws1_restore_2 = makeWorkspaceEntry(workspaceNameToRestore, dataSourceToWorkspaceRestore);
--
-- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- BackupChainLog bchLog = new BackupChainLog(backLog);
--
-- backup.restore(bchLog, repositoryNameToBackup, ws1_restore_2, false);
--
-- // check
-- SessionImpl back2 = (SessionImpl) getReposityToBackup().login(credentials, workspaceNameToRestore);
-- assertNotNull(back2.getRootNode().getNode("gdfgrghfhf").getProperty("data"));
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-- }
- }
-
-- public void testStartFullBackupWIthJobPeriod() throws Exception
-- {
-- // backup
-- File backDir = new File("target/backup" + workspaceNameToBackup + getUUIndex());
-- backDir.mkdirs();
--
-- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-- config.setBackupDir(backDir);
-- config.setIncrementalJobPeriod(3600);
--
-- backup.startBackup(config);
--
-- BackupChain bch = backup.findBackup(repositoryNameToBackup, workspaceNameToBackup);
--
-- // wait till full backup will be stopped
-- while (bch.getFullBackupState() != BackupJob.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
-- }
--
- public void testNegativeIncremetalJobPeriod() throws Exception
- {
- // backup
-- File backDir = new File("target/backup/ws1_negative_period" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-+ config.setRepository("fake");
-+ config.setWorkspace("fake");
- config.setBackupType(BackupManager.FULL_AND_INCREMENTAL);
- config.setIncrementalJobPeriod(-1000);
--
- config.setBackupDir(backDir);
-
- try
-@@ -660,22 +296,20 @@
- }
- catch (BackupConfigurationException e)
- {
-- //ok
- }
- }
-
- public void testNegativeIncremetalJobNumber() throws Exception
- {
- // backup
-- File backDir = new File("target/backup/ws1_negative_job_number" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-+ config.setRepository("fake");
-+ config.setWorkspace("fake");
- config.setBackupType(BackupManager.FULL_AND_INCREMENTAL);
- config.setIncrementalJobNumber(-5);
--
- config.setBackupDir(backDir);
-
- try
-@@ -685,2051 +319,1233 @@
- }
- catch (BackupConfigurationException e)
- {
-- //ok
- }
- }
-
-- public void testRestoreAfterFAilureRestore() throws Exception
-+ public void testRestoreAfterFailureRestore() throws Exception
- {
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
-+ helper.addWorkspace(repository, wsEntry);
-+ addConent(repository, wsEntry.getName());
-+
- // backup
-- File backDir = new File("target/backup/" + workspaceNameToBackup + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
-+ config.setWorkspace(wsEntry.getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
-+ BackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-+ backup.stopBackup(bch);
-
-- BackupChain bch = backup.findBackup(repositoryNameToBackup, workspaceNameToBackup);
--
-- // wait till full backup will be stopped
-- while (bch.getFullBackupState() != BackupJob.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // stop fullBackup
--
-- if (bch != null)
-- backup.stopBackup(bch);
-- else
-- fail("Can't get fullBackup chain");
--
- // restore
-- RepositoryEntry re =
-- (RepositoryEntry) ws1Session.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
-- WorkspaceEntry ws1back = makeWorkspaceEntry(workspaceNameToRestore, dataSourceToWorkspaceRestore + "NOT_EXIST");
-+ WorkspaceEntry newWS = helper.createWorkspaceEntry(true, "NOT_EXISTED_DS");
-
- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- BackupChainLog bchLog = new BackupChainLog(backLog);
-+ assertTrue(backLog.exists());
-
-- try
-- {
-- backup.restore(bchLog, repositoryNameToBackup, ws1back, false);
-- fail("The backup can not be restored.");
-- }
-- catch (Exception e)
-- {
-- //ok
-+ BackupChainLog bchLog = new BackupChainLog(backLog);
-
-- WorkspaceEntry ws1backTwo = makeWorkspaceEntry(workspaceNameToRestore, dataSourceToWorkspaceRestore);
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- backup.restore(bchLog, repositoryNameToBackup, ws1backTwo, false);
-- }
--
-- // check
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) getReposityToBackup().login(credentials, workspaceNameToRestore);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-+ try
-+ {
-+ backup.restore(bchLog, config.getRepository(), newWS, false);
-+ fail("Exception should be thrown");
- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ catch (Exception e)
-+ {
-+ }
-+
-+ newWS = helper.createWorkspaceEntry(true, null);
-+ backup.restore(bchLog, config.getRepository(), newWS, false);
-+
-+ checkConent(repository, newWS.getName());
- }
-
- public void testRepositoryFullBackupRestore() throws Exception
- {
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
-+
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- RepositoryBackupConfig config = new RepositoryBackupConfig();
-- config.setRepository(repositoryNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
--
-- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
--
-- // wait till full backup will be stopped
-- while (bch.getState() != RepositoryBackupChain.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // stop fullBackup
--
-+ RepositoryBackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
- backup.stopBackup(bch);
-
- // restore
-- RepositoryEntry newRepositoryEntry =
-- makeRepositoryEntry(repositoryNameToRestore, getReposityToBackup().getConfiguration(),
-- dataSourceToRepositoryRestore, null);
-+ RepositoryEntry newRE =
-+ helper.createRepositoryEntry(true, repository.getConfiguration().getSystemWorkspaceName(), null);
-
- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-+ assertTrue(backLog.exists());
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-
-- backup.restore(bchLog, newRepositoryEntry, false);
-- assertEquals(JobWorkspaceRestore.RESTORE_SUCCESSFUL, backup.getLastRepositoryRestore(
-- newRepositoryEntry.getName()).getStateRestore());
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- // check
-- ManageableRepository restoredRepository = repositoryService.getRepository(repositoryNameToRestore);
--
-- for (String wsName : restoredRepository.getWorkspaceNames())
-- {
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) restoredRepository.login(credentials, wsName);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ backup.restore(bchLog, newRE, false);
-+ checkConent(repositoryService.getRepository(newRE.getName()), newRE.getSystemWorkspaceName());
- }
-
- public void testRepositoryFullAndIncrementalBackupRestore() throws Exception
- {
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
-+
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- RepositoryBackupConfig config = new RepositoryBackupConfig();
-- config.setRepository(repositoryNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
- config.setBackupType(BackupManager.FULL_AND_INCREMENTAL);
-- config.setIncrementalJobPeriod(1000);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
-+ RepositoryBackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-
-- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
-+ addIncrementalConent(repository, repository.getConfiguration().getSystemWorkspaceName());
-
-- // wait till full backup will be stopped
-- while (bch.getState() != RepositoryBackupChain.FULL_BACKUP_FINISHED_INCREMENTAL_BACKUP_WORKING)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- //will be saved in incremental backup
-- Session wsSession = getReposityToBackup().login(credentials, "ws");
-- wsSession.getRootNode().getNode("backupTest").addNode("binary_data")
-- .setProperty("data",
-- new FileInputStream(createBLOBTempFile(500)));
-- wsSession.save();
--
-- // stop fullBackup
--
- backup.stopBackup(bch);
-
- // restore
-- RepositoryEntry newRepositoryEntry =
-- makeRepositoryEntry(repositoryNameToRestore, getReposityToBackup().getConfiguration(),
-- dataSourceToRepositoryRestore, null);
-+ RepositoryEntry newRE =
-+ helper.createRepositoryEntry(true, repository.getConfiguration().getSystemWorkspaceName(), null);
-
- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-+ assertTrue(backLog.exists());
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-
-- backup.restore(bchLog, newRepositoryEntry, false);
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- // check
-- ManageableRepository restoredRepository = repositoryService.getRepository(repositoryNameToRestore);
--
-- for (String wsName : restoredRepository.getWorkspaceNames())
-- {
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) restoredRepository.login(credentials, wsName);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
--
-- if (wsName.equals("ws"))
-- {
-- assertNotNull(ws1backTestRoot.getNode("binary_data"));
-- assertNotNull(ws1backTestRoot.getNode("binary_data").getProperty("data"));
-- }
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ backup.restore(bchLog, newRE, false);
-+ checkConent(repositoryService.getRepository(newRE.getName()), newRE.getSystemWorkspaceName());
-+ checkIncrementalConent(repositoryService.getRepository(newRE.getName()), newRE.getSystemWorkspaceName());
- }
-
- public void testRepositoryFullBackupAsynchronusRestore() throws Exception
- {
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
-+
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- RepositoryBackupConfig config = new RepositoryBackupConfig();
-- config.setRepository(repositoryNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
--
-- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
--
-- // wait till full backup will be stopped
-- while (bch.getState() != RepositoryBackupChain.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // stop fullBackup
--
-+ RepositoryBackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
- backup.stopBackup(bch);
-
- // restore
-- RepositoryEntry newRepositoryEntry =
-- makeRepositoryEntry(repositoryNameToRestore, getReposityToBackup().getConfiguration(),
-- dataSourceToRepositoryRestore, null);
-+ RepositoryEntry newRE =
-+ helper.createRepositoryEntry(true, repository.getConfiguration().getSystemWorkspaceName(), null);
-
- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-+ assertTrue(backLog.exists());
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-
-- backup.restore(bchLog, newRepositoryEntry, true);
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- JobRepositoryRestore job = backup.getLastRepositoryRestore(repositoryNameToRestore);
-+ backup.restore(bchLog, newRE, true);
-+ waitEndOfRestore(newRE.getName());
-
-- while (job.getStateRestore() != JobRepositoryRestore.REPOSITORY_RESTORE_SUCCESSFUL
-- || job.getStateRestore() == JobRepositoryRestore.REPOSITORY_RESTORE_FAIL)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // check
-- ManageableRepository restoredRepository = repositoryService.getRepository(repositoryNameToRestore);
--
-- for (String wsName : restoredRepository.getWorkspaceNames())
-- {
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) restoredRepository.login(credentials, wsName);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ checkConent(repositoryService.getRepository(newRE.getName()), newRE.getSystemWorkspaceName());
- }
-
- public void testRepositoryFullBackupAsynchronusRestoreWorkspaceMapping() throws Exception
- {
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
-+
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- RepositoryBackupConfig config = new RepositoryBackupConfig();
-- config.setRepository(repositoryNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
--
-- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
--
-- // wait till full backup will be stopped
-- while (bch.getState() != RepositoryBackupChain.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // stop fullBackup
--
-+ RepositoryBackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
- backup.stopBackup(bch);
-
- // restore
-- RepositoryEntry newRepositoryEntry =
-- makeRepositoryEntry(repositoryNameToRestore, getReposityToBackup().getConfiguration(),
-- dataSourceToRepositoryRestore, null);
-+ RepositoryEntry newRE = helper.createRepositoryEntry(true, null, null);
-
- // create workspace mappingS
- Map<String, String> workspaceMapping = new HashedMap();
-- for (WorkspaceEntry we : newRepositoryEntry.getWorkspaceEntries())
-- {
-- workspaceMapping.put(we.getName(), we.getName() + "_mapped");
-- }
-+ workspaceMapping.put(repository.getConfiguration().getSystemWorkspaceName(), newRE.getSystemWorkspaceName());
-
-- // Change workspaeNames
-- for (WorkspaceEntry we : newRepositoryEntry.getWorkspaceEntries())
-- {
-- if (newRepositoryEntry.getSystemWorkspaceName().equals(we.getName()))
-- {
-- newRepositoryEntry.setSystemWorkspaceName(workspaceMapping.get(we.getName()));
-- newRepositoryEntry.setDefaultWorkspaceName(workspaceMapping.get(we.getName()));
-- }
--
-- we.setName(workspaceMapping.get(we.getName()));
-- we.setUniqueName(we.getUniqueName() + workspaceMapping.get(we.getName()));
-- }
--
- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-+ assertTrue(backLog.exists());
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-
-- backup.restore(bchLog, newRepositoryEntry, workspaceMapping, true);
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- JobRepositoryRestore job = backup.getLastRepositoryRestore(repositoryNameToRestore);
-+ backup.restore(bchLog, newRE, workspaceMapping, true);
-+ waitEndOfRestore(newRE.getName());
-
-- while (job.getStateRestore() != JobRepositoryRestore.REPOSITORY_RESTORE_SUCCESSFUL
-- || job.getStateRestore() == JobRepositoryRestore.REPOSITORY_RESTORE_FAIL)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // check
-- ManageableRepository restoredRepository = repositoryService.getRepository(repositoryNameToRestore);
--
-- for (String wsName : restoredRepository.getWorkspaceNames())
-- {
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) restoredRepository.login(credentials, workspaceMapping.get(wsName));
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ checkConent(repositoryService.getRepository(newRE.getName()), newRE.getSystemWorkspaceName());
- }
-
-- public void testAutoStopRepositoryBackupIncrRepetion() throws Exception
-+ public void _testAutoStopRepositoryBackupIncrRepetion() throws Exception
- {
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
-+
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- RepositoryBackupConfig config = new RepositoryBackupConfig();
-- config.setRepository(repositoryNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
- config.setBackupType(BackupManager.FULL_AND_INCREMENTAL);
-- config.setBackupDir(backDir);
- config.setIncrementalJobPeriod(4);
- config.setIncrementalJobNumber(2);
-+ config.setBackupDir(backDir);
-
-- final RepositoryBackupChain bch = backup.startBackup(config);
-+ RepositoryBackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-+ backup.stopBackup(bch);
-
-- while (!bch.isFinished())
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
-+ // restore
-+ RepositoryEntry newRE = helper.createRepositoryEntry(true, null, null);
-
-- Thread.sleep(5000);
-+ // create workspace mappingS
-+ Map<String, String> workspaceMapping = new HashedMap();
-+ workspaceMapping.put(repository.getConfiguration().getSystemWorkspaceName(), newRE.getSystemWorkspaceName());
-
-- for (RepositoryBackupChain chain : backup.getCurrentRepositoryBackups())
-- if (bch.getBackupId().equals(chain.getBackupId()))
-- fail("The backup with id '" + chain.getBackupId() + "' should not be active");
-+ File backLog = new File(bch.getLogFilePath());
-+ assertTrue(backLog.exists());
-+
-+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-+
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-+
-+ backup.restore(bchLog, newRE, workspaceMapping, true);
-+ waitEndOfRestore(newRE.getName());
-+
-+ Thread.sleep(60000);
-+ assertEquals(backup.getCurrentRepositoryBackups().size(), 0);
- }
-
- public void testRepositoryRestoreFail() throws Exception
- {
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
-+
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- RepositoryBackupConfig config = new RepositoryBackupConfig();
-- config.setRepository(repositoryNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
--
-- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
--
-- // wait till full backup will be stopped
-- while (bch.getState() != RepositoryBackupChain.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // stop fullBackup
-+ RepositoryBackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
- backup.stopBackup(bch);
-
-- Thread.sleep(5000);
--
-- String repoName = repositoryNameToRestore + System.currentTimeMillis();
--
- // restore
-- RepositoryEntry newRepositoryEntry =
-- makeRepositoryEntry(repoName, getReposityToBackup().getConfiguration(), dataSourceToRepositoryRestore,
-- null);
-+ RepositoryEntry newRE = helper.createRepositoryEntry(true, null, null);
-+ newRE.getWorkspaceEntries().get(0).getQueryHandler().setType("gg");
-
-- //create broken system workspaceEntry
-- newRepositoryEntry.getWorkspaceEntries().get(0).getQueryHandler().setType("gg");
-+ // create workspace mappingS
-+ Map<String, String> workspaceMapping = new HashedMap();
-+ workspaceMapping.put(repository.getConfiguration().getSystemWorkspaceName(), newRE.getSystemWorkspaceName());
-
-- File backLog = new File(backup.getRepositoryBackupsLogs()[0].getLogFilePath());
-+ File backLog = new File(bch.getLogFilePath());
-+ assertTrue(backLog.exists());
-
- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-+
- try
- {
-- backup.restore(bchLog, newRepositoryEntry, false);
-- fail("The backup " + backLog.getAbsolutePath() + "shoulde not restored.");
-+ backup.restore(bchLog, newRE, workspaceMapping, false);
-+ fail("Exception should be thrown");
- }
- catch (RepositoryRestoreExeption e)
- {
-- // ok.
- }
--
-- // check
-- try
-- {
-- ManageableRepository restoredRepository = repositoryService.getRepository(repoName);
-- fail("The repository " + repositoryNameToRestore + "shoulde not exists.");
-- }
-- catch (RepositoryException e)
-- {
-- // ok.
-- }
- }
-
-- public void testIncrementalBackupRestoreEXOJCR_737() throws Exception
-+ public void testExistedWorkspaceRestoreMultiDB() throws Exception
- {
-- // full backup with BLOBs & incremental with BLOBs
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
-+ helper.addWorkspace(repository, wsEntry);
-+ addConent(repository, wsEntry.getName());
-
-- // BLOBs for full
-- File tempf = createBLOBTempFile("testIncrementalBackupRestore737-", 5 * 1024); // 5M
-- tempf.deleteOnExit();
--
-- File backDir = new File("target/backup/" + getUUIndex());
-+ // backup
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-- config.setBackupType(BackupManager.FULL_AND_INCREMENTAL);
--
-+ config.setRepository(repository.getConfiguration().getName());
-+ config.setWorkspace(wsEntry.getName());
-+ config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
-+ BackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-+ backup.stopBackup(bch);
-
-- BackupChain bch = backup.findBackup(repositoryNameToBackup, workspaceNameToBackup);
-+ // restore
-+ File backLog = new File(bch.getLogFilePath());
-+ assertTrue(backLog.exists());
-
-- // wait till full backup will be stopped
-- while (bch.getFullBackupState() != BackupJob.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
-+ BackupChainLog bchLog = new BackupChainLog(backLog);
-
-- // add data
-- ws1Session.getRootNode().addNode("node_101").setProperty("exo:data", new FileInputStream(tempf));
-- ws1Session.getRootNode().addNode("node_102").setProperty("exo:extraData", new FileInputStream(tempf));
-- ws1Session.getRootNode().save(); // log here via listener
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- // stop backup
-- if (bch != null)
-- backup.stopBackup(bch);
-- else
-- fail("Can't get fullBackup chain");
-+ backup.restoreExistingWorkspace(bchLog, repository.getConfiguration().getName(), repository.getConfiguration()
-+ .getWorkspaceEntries().get(1), false);
-+ checkConent(repository, repository.getConfiguration().getWorkspaceEntries().get(1).getName());
-+ }
-
-- //remove data
-- ws1Session.getRootNode().getNode("node_101").remove();
-- ws1Session.getRootNode().getNode("node_102").remove();
-- ws1Session.getRootNode().save();
-+ public void testExistedWorkspaceRestoreSingleDB() throws Exception
-+ {
-+ // prepare
-+ String dsName = helper.createDatasource();
-
-- // restore
-- WorkspaceEntry ws1back = makeWorkspaceEntry(workspaceNameToRestore, dataSourceToWorkspaceRestore);
-+ ManageableRepository repository = helper.createRepository(container, false, dsName);
-+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(false, dsName);
-+ helper.addWorkspace(repository, wsEntry);
-+ addConent(repository, wsEntry.getName());
-
-- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- BackupChainLog bchLog = new BackupChainLog(backLog);
-+ // backup
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
-+ backDir.mkdirs();
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ BackupConfig config = new BackupConfig();
-+ config.setRepository(repository.getConfiguration().getName());
-+ config.setWorkspace(wsEntry.getName());
-+ config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-+ config.setBackupDir(backDir);
-
-- backup.restore(bchLog, repositoryNameToBackup, ws1back, false);
-+ BackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-+ backup.stopBackup(bch);
-
-- // check
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) getReposityToBackup().login(credentials, workspaceNameToRestore);
-+ // restore
-+ File backLog = new File(bch.getLogFilePath());
-+ assertTrue(backLog.exists());
-
-- Node node_101 = back1.getRootNode().getNode("node_101");
-- assertNotNull(node_101);
-- assertEquals(tempf.length(), node_101.getProperty("exo:data").getStream().available());
-- compareStream(new FileInputStream(tempf), node_101.getProperty("exo:data").getStream());
-+ BackupChainLog bchLog = new BackupChainLog(backLog);
-
-- Node node_102 = back1.getRootNode().getNode("node_102");
-- assertNotNull(node_102);
-- assertEquals(tempf.length(), node_102.getProperty("exo:extraData").getStream().available());
-- compareStream(new FileInputStream(tempf), node_102.getProperty("exo:extraData").getStream());
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ backup.restoreExistingWorkspace(bchLog, repository.getConfiguration().getName(), repository.getConfiguration()
-+ .getWorkspaceEntries().get(1), false);
-+ checkConent(repository, repository.getConfiguration().getWorkspaceEntries().get(1).getName());
- }
-
-- public void testExistedWorkspaceRestoreMultiDB() throws Exception
-+ public void testExistedWorkspaceRestoreAsync() throws Exception
- {
-- String repositoryNameToBackup = "db8";
-- SessionImpl ws1Session =
-- (SessionImpl)repositoryService.getRepository(repositoryNameToBackup).login(credentials, "ws1");
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
-+ helper.addWorkspace(repository, wsEntry);
-+ addConent(repository, wsEntry.getName());
-
-- ws1Session.getRootNode().addNode("TESTNODE");
-- ws1Session.save();
--
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
-+ config.setWorkspace(wsEntry.getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
-+ BackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-+ backup.stopBackup(bch);
-
-- BackupChain bch = backup.findBackup(repositoryNameToBackup, workspaceNameToBackup);
--
-- // wait till full backup will be stopped
-- while (bch.getFullBackupState() != BackupJob.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // stop fullBackup
--
-- if (bch != null)
-- backup.stopBackup(bch);
-- else
-- fail("Can't get fullBackup chain");
--
- // restore
-- RepositoryEntry re =
-- (RepositoryEntry) ws1Session.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
-- WorkspaceEntry ws1 = null;
-- for (WorkspaceEntry we : re.getWorkspaceEntries())
-- {
-- if (ws1Session.getWorkspace().getName().equals(we.getName()))
-- {
-- ws1 = we;
-- break;
-- }
-- }
--
- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- BackupChainLog bchLog = new BackupChainLog(backLog);
-+ assertTrue(backLog.exists());
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ BackupChainLog bchLog = new BackupChainLog(backLog);
-
-- backup.restoreExistingWorkspace(bchLog, repositoryNameToBackup, ws1, false);
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- // check
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl)repositoryService.getRepository("db8").login(credentials, "ws1");
-- Node ws1backTestRoot = back1.getRootNode().getNode("TESTNODE");
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-+ backup.restoreExistingWorkspace(bchLog, repository.getConfiguration().getName(), repository.getConfiguration()
-+ .getWorkspaceEntries().get(1), true);
-+ waitEndOfRestore(repository.getConfiguration().getName(), repository.getConfiguration().getWorkspaceEntries()
-+ .get(1).getName());
-
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ assertEquals(
-+ backup.getLastRestore(repository.getConfiguration().getName(),
-+ repository.getConfiguration().getWorkspaceEntries().get(1).getName()).getStateRestore(),
-+ JobWorkspaceRestore.RESTORE_SUCCESSFUL);
-+
-+ checkConent(repository, repository.getConfiguration().getWorkspaceEntries().get(1).getName());
- }
-
-- public void testExistedWorkspaceRestore() throws Exception
-+ public void testExistedRepositoryRestoreMultiDB() throws Exception
- {
-- SessionImpl ws1Session = (SessionImpl) repositoryService.getRepository("db7").login(credentials, "ws1");
-+ // prepare
-+ String dsName = helper.createDatasource();
-+ ManageableRepository repository = helper.createRepository(container, true, dsName);
-+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
-
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
-- BackupConfig config = new BackupConfig();
-- config.setRepository("db7");
-- config.setWorkspace(workspaceNameToBackup);
-+ RepositoryBackupConfig config = new RepositoryBackupConfig();
-+ config.setRepository(repository.getConfiguration().getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
-+ RepositoryBackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-+ backup.stopBackup(bch);
-
-- BackupChain bch = backup.findBackup("db7", workspaceNameToBackup);
-
-- // wait till full backup will be stopped
-- while (bch.getFullBackupState() != BackupJob.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
-+ File backLog = new File(bch.getLogFilePath());
-+ assertTrue(backLog.exists());
-
-- // stop fullBackup
-+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-
-- if (bch != null)
-- backup.stopBackup(bch);
-- else
-- fail("Can't get fullBackup chain");
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
- // restore
-- RepositoryEntry re =
-- (RepositoryEntry) ws1Session.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
-- WorkspaceEntry ws1 = null;
-- for (WorkspaceEntry we : re.getWorkspaceEntries())
-- {
-- if (ws1Session.getWorkspace().getName().equals(we.getName()))
-- {
-- ws1 = we;
-- break;
-- }
-- }
-+ RepositoryEntry newRE =
-+ helper.createRepositoryEntry(true, repository.getConfiguration().getSystemWorkspaceName(), dsName);
-+ newRE.setName(repository.getConfiguration().getName());
-
-+ backup.restoreExistingRepository(bchLog, newRE, false);
-+ checkConent(repositoryService.getRepository(newRE.getName()), newRE.getSystemWorkspaceName());
-+ }
-+
-+ public void testExistedRepositoryRestoreSingelDB() throws Exception
-+ {
-+ // prepare
-+ String dsName = helper.createDatasource();
-+ ManageableRepository repository = helper.createRepository(container, false, dsName);
-+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
-+
-+ // backup
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
-+ backDir.mkdirs();
-+
-+ RepositoryBackupConfig config = new RepositoryBackupConfig();
-+ config.setRepository(repository.getConfiguration().getName());
-+ config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-+ config.setBackupDir(backDir);
-+
-+ RepositoryBackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-+ backup.stopBackup(bch);
-+
-+
- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- BackupChainLog bchLog = new BackupChainLog(backLog);
-+ assertTrue(backLog.exists());
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-
-- backup.restoreExistingWorkspace(bchLog, "db7", ws1, false);
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- // check
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) repositoryService.getRepository("db7").login(credentials, "ws1");
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ // restore
-+ RepositoryEntry newRE =
-+ helper.createRepositoryEntry(false, repository.getConfiguration().getSystemWorkspaceName(), dsName);
-+ newRE.setName(repository.getConfiguration().getName());
-+
-+ backup.restoreExistingRepository(bchLog, newRE, false);
-+ checkConent(repositoryService.getRepository(newRE.getName()), newRE.getSystemWorkspaceName());
- }
-
-- public void testExistedWorkspaceRestoreAsync() throws Exception
-+ public void testExistedRepositoryRestoreAsync() throws Exception
- {
-+ // prepare
-+ String dsName = helper.createDatasource();
-+ ManageableRepository repository = helper.createRepository(container, false, dsName);
-+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
-+
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
-- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-+ RepositoryBackupConfig config = new RepositoryBackupConfig();
-+ config.setRepository(repository.getConfiguration().getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
-+ RepositoryBackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-+ backup.stopBackup(bch);
-
-- BackupChain bch = backup.findBackup(repositoryNameToBackup, workspaceNameToBackup);
-+ File backLog = new File(bch.getLogFilePath());
-+ assertTrue(backLog.exists());
-
-- // wait till full backup will be stopped
-- while (bch.getFullBackupState() != BackupJob.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
-+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-
-- // stop fullBackup
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- if (bch != null)
-- backup.stopBackup(bch);
-- else
-- fail("Can't get fullBackup chain");
--
- // restore
-- RepositoryEntry re =
-- (RepositoryEntry) ws1Session.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
-- WorkspaceEntry ws1 = null;
-- for (WorkspaceEntry we : re.getWorkspaceEntries())
-- {
-- if (ws1Session.getWorkspace().getName().equals(we.getName()))
-- {
-- ws1 = we;
-- break;
-- }
-- }
-+ RepositoryEntry newRE =
-+ helper.createRepositoryEntry(false, repository.getConfiguration().getSystemWorkspaceName(), dsName);
-+ newRE.setName(repository.getConfiguration().getName());
-
-- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- BackupChainLog bchLog = new BackupChainLog(backLog);
-+ backup.restoreExistingRepository(bchLog, newRE, true);
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ waitEndOfRestore(repository.getConfiguration().getName());
-
-- backup.restoreExistingWorkspace(bchLog, repositoryNameToBackup, ws1, true);
-+ assertEquals(JobRepositoryRestore.REPOSITORY_RESTORE_SUCCESSFUL,
-+ backup.getLastRepositoryRestore(repository.getConfiguration().getName()).getStateRestore());
-
-- while (backup.getLastRestore(repositoryNameToBackup, ws1.getName()).getStateRestore() != JobWorkspaceRestore.RESTORE_SUCCESSFUL
-- && backup.getLastRestore(repositoryNameToBackup, ws1.getName()).getStateRestore() != JobWorkspaceRestore.RESTORE_FAIL)
-- {
-- Thread.sleep(50);
-- }
--
-- // check
-- SessionImpl back1 = null;
-- try
-- {
-- back1 =
-- (SessionImpl) repositoryService.getRepository(repositoryNameToBackup).login(credentials,
-- workspaceNameToBackup);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ checkConent(repositoryService.getRepository(newRE.getName()), newRE.getSystemWorkspaceName());
- }
-
-- public void testExistedWorkspaceRestoreAsync2() throws Exception
-+
-+ public void testExistedWorkspaceRestoreWithConfig() throws Exception
- {
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
-+ helper.addWorkspace(repository, wsEntry);
-+ addConent(repository, wsEntry.getName());
-
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
-+ config.setWorkspace(wsEntry.getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
-+ BackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-+ backup.stopBackup(bch);
-
-- BackupChain bch = backup.findBackup(repositoryNameToBackup, workspaceNameToBackup);
--
-- // wait till full backup will be stopped
-- while (bch.getFullBackupState() != BackupJob.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // stop fullBackup
--
-- if (bch != null)
-- backup.stopBackup(bch);
-- else
-- fail("Can't get fullBackup chain");
--
- // restore
-- RepositoryEntry re =
-- (RepositoryEntry) ws1Session.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
-- WorkspaceEntry ws1 = null;
-- for (WorkspaceEntry we : re.getWorkspaceEntries())
-- {
-- if (ws1Session.getWorkspace().getName().equals(we.getName()))
-- {
-- ws1 = we;
-- break;
-- }
-- }
--
- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- BackupChainLog bchLog = new BackupChainLog(backLog);
-+ assertTrue(backLog.exists());
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ BackupChainLog bchLog = new BackupChainLog(backLog);
-
-- backup.restoreExistingWorkspace(bchLog.getBackupId(), repositoryNameToBackup, ws1, true);
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- while (backup.getLastRestore(repositoryNameToBackup, ws1.getName()).getStateRestore() != JobWorkspaceRestore.RESTORE_SUCCESSFUL
-- && backup.getLastRestore(repositoryNameToBackup, ws1.getName()).getStateRestore() != JobWorkspaceRestore.RESTORE_FAIL)
-- {
-- Thread.sleep(50);
-- }
--
-- // check
-- SessionImpl back1 = null;
-- try
-- {
-- back1 =
-- (SessionImpl) repositoryService.getRepository(repositoryNameToBackup).login(credentials,
-- workspaceNameToBackup);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ backup.restoreExistingWorkspace(bchLog.getBackupId(), false);
-+ checkConent(repository, repository.getConfiguration().getWorkspaceEntries().get(1).getName());
- }
-
-- public void testExistedRepositoryRestore() throws Exception
-+ public void testExistedRepositoryRestoreWithConfig() throws Exception
- {
-+ // prepare
-+ String dsName = helper.createDatasource();
-+ ManageableRepository repository = helper.createRepository(container, true, dsName);
-+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
-+
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- RepositoryBackupConfig config = new RepositoryBackupConfig();
-- config.setRepository(repositoryNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
--
-- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
--
-- // wait till full backup will be stopped
-- while (bch.getState() != RepositoryBackupChain.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // stop fullBackup
--
-+ RepositoryBackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
- backup.stopBackup(bch);
-
-- // restore
-- RepositoryEntry re =
-- makeRepositoryEntry(repositoryNameToBackup, getReposityToBackup().getConfiguration(), null, null);
--
- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-+ assertTrue(backLog.exists());
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-
-- backup.restoreExistingRepository(bchLog, re, false);
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- assertEquals(JobWorkspaceRestore.RESTORE_SUCCESSFUL, backup.getLastRepositoryRestore(repositoryNameToBackup)
-- .getStateRestore());
-+ // restore
-+ RepositoryEntry newRE =
-+ helper.createRepositoryEntry(true, repository.getConfiguration().getSystemWorkspaceName(), dsName);
-+ newRE.setName(repository.getConfiguration().getName());
-
-- // check
-- ManageableRepository restoredRepository = repositoryService.getRepository(repositoryNameToBackup);
--
-- for (String wsName : restoredRepository.getWorkspaceNames())
-- {
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) restoredRepository.login(credentials, wsName);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ backup.restoreExistingRepository(bchLog.getBackupId(), false);
-+ checkConent(repositoryService.getRepository(newRE.getName()), newRE.getSystemWorkspaceName());
- }
-
-- public void testExistedRepositoryRestoreSingelDB() throws Exception
-+ public void testWorkspaceRestoreWithConfig() throws Exception
- {
-- RepositoryImpl repositoryDB7 = (RepositoryImpl) repositoryService.getRepository(repositoryNameToBackupSingleDB);
-- SessionImpl sessionWS = (SessionImpl) repositoryDB7.login(credentials, workspaceNameToBackup);
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
-+ helper.addWorkspace(repository, wsEntry);
-+ addConent(repository, wsEntry.getName());
-
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
-- RepositoryBackupConfig config = new RepositoryBackupConfig();
-- config.setRepository(repositoryNameToBackupSingleDB);
-+ BackupConfig config = new BackupConfig();
-+ config.setRepository(repository.getConfiguration().getName());
-+ config.setWorkspace(wsEntry.getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
--
-- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackupSingleDB);
--
-- // wait till full backup will be stopped
-- while (bch.getState() != RepositoryBackupChain.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // stop fullBackup
--
-+ BackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
- backup.stopBackup(bch);
-
-- // restore
-- RepositoryEntry baseRE =
-- (RepositoryEntry) sessionWS.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
-- RepositoryEntry re = makeRepositoryEntry(baseRE.getName(), baseRE, null, null);
-+ removeWorkspaceFully(repository.getConfiguration().getName(), wsEntry.getName());
-
-+ // restore
- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-+ assertTrue(backLog.exists());
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ BackupChainLog bchLog = new BackupChainLog(backLog);
-
-- backup.restoreExistingRepository(bchLog, re, false);
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- assertEquals(JobWorkspaceRestore.RESTORE_SUCCESSFUL, backup.getLastRepositoryRestore(re.getName())
-- .getStateRestore());
--
-- // check
-- ManageableRepository restoredRepository = repositoryService.getRepository(repositoryNameToBackupSingleDB);
--
-- for (String wsName : restoredRepository.getWorkspaceNames())
-- {
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) restoredRepository.login(credentials, wsName);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ backup.restoreWorkspace(bchLog.getBackupId(), false);
-+ checkConent(repository, repository.getConfiguration().getWorkspaceEntries().get(1).getName());
- }
-
-- public void testExistedRepositoryRestoreAsync() throws Exception
-+ public void testRepositoryRestoreWithConfig() throws Exception
- {
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
-+
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- RepositoryBackupConfig config = new RepositoryBackupConfig();
-- config.setRepository(repositoryNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
--
-- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
--
-- // wait till full backup will be stopped
-- while (bch.getState() != RepositoryBackupChain.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // stop fullBackup
--
-+ RepositoryBackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
- backup.stopBackup(bch);
-
- // restore
-- RepositoryEntry re =
-- makeRepositoryEntry(repositoryNameToBackup, getReposityToBackup().getConfiguration(), null, null);
-+ removeRepositoryFully(repository.getConfiguration().getName());
-
- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-+ assertTrue(backLog.exists());
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-
-- backup.restoreExistingRepository(bchLog, re, true);
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- JobRepositoryRestore job = backup.getLastRepositoryRestore(repositoryNameToBackup);
-+ backup.restoreRepository(bchLog.getBackupId(), false);
-
-- while (job.getStateRestore() != JobRepositoryRestore.REPOSITORY_RESTORE_SUCCESSFUL
-- && job.getStateRestore() != JobRepositoryRestore.REPOSITORY_RESTORE_FAIL)
-- {
-- Thread.sleep(50);
-- }
--
-- assertEquals(JobRepositoryRestore.REPOSITORY_RESTORE_SUCCESSFUL, backup.getLastRepositoryRestore(
-- repositoryNameToBackup).getStateRestore());
--
-- // check
-- ManageableRepository restoredRepository = repositoryService.getRepository(repositoryNameToBackup);
--
-- for (String wsName : restoredRepository.getWorkspaceNames())
-- {
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) restoredRepository.login(credentials, wsName);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ checkConent(repositoryService.getRepository(config.getRepository()),
-+ repositoryService.getRepository(config.getRepository()).getConfiguration().getSystemWorkspaceName());
- }
-
-- public void testExistedRepositoryRestoreAsync2() throws Exception
-+ public void testRepositoryRestoreWithNullConfig() throws Exception
- {
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
-+
- // backup
-- File backDir = new File("target/backup");
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- RepositoryBackupConfig config = new RepositoryBackupConfig();
-- config.setRepository(repositoryNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
--
-- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
--
-- // wait till full backup will be stopped
-- while (bch.getState() != RepositoryBackupChain.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // stop fullBackup
--
-+ RepositoryBackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
- backup.stopBackup(bch);
-
- // restore
-- RepositoryEntry re =
-- makeRepositoryEntry(repositoryNameToBackup, getReposityToBackup().getConfiguration(), null, null);
-+ removeRepositoryFully(repository.getConfiguration().getName());
-
- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-+ assertTrue(backLog.exists());
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-
-- backup.restoreExistingRepository(bchLog.getBackupId(), re, true);
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- JobRepositoryRestore job = backup.getLastRepositoryRestore(repositoryNameToBackup);
--
-- while (job.getStateRestore() != JobRepositoryRestore.REPOSITORY_RESTORE_SUCCESSFUL
-- && job.getStateRestore() != JobRepositoryRestore.REPOSITORY_RESTORE_FAIL)
-- {
-- Thread.sleep(50);
-- }
--
-- assertEquals(JobWorkspaceRestore.RESTORE_SUCCESSFUL, backup.getLastRepositoryRestore(repositoryNameToBackup)
-- .getStateRestore());
--
-- // check
-- ManageableRepository restoredRepository = repositoryService.getRepository(repositoryNameToBackup);
--
-- for (String wsName : restoredRepository.getWorkspaceNames())
-- {
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) restoredRepository.login(credentials, wsName);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ backup.restore(bchLog, null, false);
-+ checkConent(repositoryService.getRepository(config.getRepository()),
-+ repositoryService.getRepository(config.getRepository()).getConfiguration().getSystemWorkspaceName());
- }
-
-- public void testExistedWorkspaceRestoreSingelDB() throws Exception
-+ public void testWorkspaceRestoreWithNullConfig() throws Exception
- {
-- RepositoryImpl repositoryDB7 = (RepositoryImpl) repositoryService.getRepository(repositoryNameToBackupSingleDB);
-- SessionImpl sessionWS = (SessionImpl) repositoryDB7.login(credentials, workspaceNameToBackup);
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
-+ helper.addWorkspace(repository, wsEntry);
-+ addConent(repository, wsEntry.getName());
-
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackupSingleDB);
-- config.setWorkspace(workspaceNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
-+ config.setWorkspace(wsEntry.getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
-+ BackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-+ backup.stopBackup(bch);
-
-- BackupChain bch = backup.findBackup(repositoryNameToBackupSingleDB, workspaceNameToBackup);
-+ removeWorkspaceFully(repository.getConfiguration().getName(), wsEntry.getName());
-
-- // wait till full backup will be stopped
-- while (bch.getFullBackupState() != BackupJob.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
-+ // restore
-+ File backLog = new File(bch.getLogFilePath());
-+ assertTrue(backLog.exists());
-
-- // stop fullBackup
-+ BackupChainLog bchLog = new BackupChainLog(backLog);
-
-- if (bch != null)
-- backup.stopBackup(bch);
-- else
-- fail("Can't get fullBackup chain");
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- // restore
-- RepositoryEntry re = (RepositoryEntry) sessionWS.getContainer().getComponentInstanceOfType(RepositoryEntry.class);
-- WorkspaceEntry ws1 = null;
-- for (WorkspaceEntry we : re.getWorkspaceEntries())
-+ try
- {
-- if (sessionWS.getWorkspace().getName().equals(we.getName()))
-- {
-- ws1 = we;
-- break;
-- }
-+ backup.restore(bchLog, repository.getConfiguration().getName() + "not_exists", null, false);
-+ fail("Exception should be thrown");
- }
--
-- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-+ catch (Exception e)
- {
-- BackupChainLog bchLog = new BackupChainLog(backLog);
--
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
--
-- backup.restoreExistingWorkspace(bchLog, repositoryNameToBackupSingleDB, ws1, false);
--
-- // check
-- SessionImpl back1 = null;
-- try
-- {
-- repositoryDB7 = (RepositoryImpl) repositoryService.getRepository(repositoryNameToBackupSingleDB);
-- back1 = (SessionImpl) repositoryDB7.login(credentials, workspaceNameToBackup);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+
-+ backup.restore(bchLog, repository.getConfiguration().getName(), null, false);
-+ checkConent(repository, repository.getConfiguration().getWorkspaceEntries().get(1).getName());
- }
-
-- public void testExistedWorkspaceRestoreWithConfig() throws Exception
-+ public void testExistedWorkspaceRestoreWithConfigBackupSetDir() throws Exception
- {
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
-+ helper.addWorkspace(repository, wsEntry);
-+ addConent(repository, wsEntry.getName());
-+
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
-+ config.setWorkspace(wsEntry.getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
-+ BackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-+ backup.stopBackup(bch);
-
-- BackupChain bch = backup.findBackup(repositoryNameToBackup, workspaceNameToBackup);
--
-- // wait till full backup will be stopped
-- while (bch.getFullBackupState() != BackupJob.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // stop fullBackup
-- if (bch != null)
-- backup.stopBackup(bch);
-- else
-- fail("Can't get fullBackup chain");
--
-- super.tearDown();
--
-+ // restore
- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- BackupChainLog bchLog = new BackupChainLog(backLog);
-+ assertTrue(backLog.exists());
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ BackupChainLog bchLog = new BackupChainLog(backLog);
-
-- backup.restoreExistingWorkspace(bchLog.getBackupId(), false);
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- // check
-- SessionImpl back1 = null;
-- try
-- {
-- back1 =
-- (SessionImpl) repositoryService.getRepository(repositoryNameToBackup).login(credentials,
-- workspaceNameToBackup);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ backup.restoreExistingWorkspace(bchLog.getBackupConfig().getBackupDir(), false);
-+ checkConent(repository, repository.getConfiguration().getWorkspaceEntries().get(1).getName());
- }
-
-- public void testExistedRepositoryRestoreWithConfig() throws Exception
-+ public void testExistedRepositoryRestoreWithConfigBackupSetDir() throws Exception
- {
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
-+
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- RepositoryBackupConfig config = new RepositoryBackupConfig();
-- config.setRepository(repositoryNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
--
-- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
--
-- // wait till full backup will be stopped
-- while (bch.getState() != RepositoryBackupChain.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // stop fullBackup
-+ RepositoryBackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
- backup.stopBackup(bch);
-
-- // check
-- super.tearDown();
--
-- // restore
- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-+ assertTrue(backLog.exists());
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-
-- backup.restoreExistingRepository(bchLog.getBackupId(), false);
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- assertEquals(JobWorkspaceRestore.RESTORE_SUCCESSFUL, backup.getLastRepositoryRestore(repositoryNameToBackup)
-- .getStateRestore());
--
-- // check
-- ManageableRepository restoredRepository = repositoryService.getRepository(repositoryNameToBackup);
--
-- for (String wsName : restoredRepository.getWorkspaceNames())
-- {
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) restoredRepository.login(credentials, wsName);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ backup.restoreExistingRepository(bchLog.getBackupConfig().getBackupDir(), false);
-+ checkConent(repositoryService.getRepository(config.getRepository()),
-+ repositoryService.getRepository(config.getRepository()).getConfiguration().getSystemWorkspaceName());
- }
-
-- public void testWorkspaceRestoreWithConfig() throws Exception
-+ public void testWorkspaceRestoreWithConfigBackupSetDir() throws Exception
- {
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ WorkspaceEntry wsEntry = helper.createWorkspaceEntry(true, null);
-+ helper.addWorkspace(repository, wsEntry);
-+ addConent(repository, wsEntry.getName());
-+
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
-+ config.setWorkspace(wsEntry.getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
-+ BackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-+ backup.stopBackup(bch);
-
-- BackupChain bch = backup.findBackup(repositoryNameToBackup, workspaceNameToBackup);
-+ removeWorkspaceFully(repository.getConfiguration().getName(), wsEntry.getName());
-
-- // wait till full backup will be stopped
-- while (bch.getFullBackupState() != BackupJob.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // stop fullBackup
--
-- if (bch != null)
-- backup.stopBackup(bch);
-- else
-- fail("Can't get fullBackup chain");
--
-- //TODO
-- // super.tearDown();
-- removeWorkspaceFullySingleDB(repositoryNameToBackup, workspaceNameToBackup);
--
-+ // restore
- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- BackupChainLog bchLog = new BackupChainLog(backLog);
-+ assertTrue(backLog.exists());
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ BackupChainLog bchLog = new BackupChainLog(backLog);
-
-- backup.restoreWorkspace(bchLog.getBackupId(), false);
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- // check
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) repositoryService.getRepository(repositoryNameToBackup).login(credentials, "ws1");
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ backup.restoreWorkspace(bchLog.getBackupConfig().getBackupDir(), false);
-+ checkConent(repository, repository.getConfiguration().getWorkspaceEntries().get(1).getName());
- }
-
-- public void testRepositoryRestoreWithConfig() throws Exception
-+ public void testRepositoryRestoreWithConfigBackupSetDir() throws Exception
- {
-+ // prepare
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
-+
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- RepositoryBackupConfig config = new RepositoryBackupConfig();
-- config.setRepository(repositoryNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
--
-- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
--
-- // wait till full backup will be stopped
-- while (bch.getState() != RepositoryBackupChain.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
--
-- // stop fullBackup
--
-+ RepositoryBackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
- backup.stopBackup(bch);
-
-- //TODO
-- super.tearDown();
-- removeRepositoryFully(repositoryNameToBackup);
-+ // restore
-+ removeRepositoryFully(repository.getConfiguration().getName());
-
-- // restore
- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-+ assertTrue(backLog.exists());
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-
-- backup.restoreRepository(bchLog.getBackupId(), false);
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- assertEquals(JobWorkspaceRestore.RESTORE_SUCCESSFUL, backup.getLastRepositoryRestore(repositoryNameToBackup)
-- .getStateRestore());
--
-- // check
-- ManageableRepository restoredRepository = repositoryService.getRepository(repositoryNameToBackup);
--
-- for (String wsName : restoredRepository.getWorkspaceNames())
-- {
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) restoredRepository.login(credentials, wsName);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ backup.restoreRepository(bchLog.getBackupConfig().getBackupDir(), false);
-+ checkConent(repositoryService.getRepository(config.getRepository()),
-+ repositoryService.getRepository(config.getRepository()).getConfiguration().getSystemWorkspaceName());
- }
-
-- public void testRepositoryRestoreWithNullConfig() throws Exception
-+ public void testRelativeBackupDir() throws Exception
- {
-+ // prepare stage #1
-+ ManageableRepository repository = helper.createRepository(container, true, null);
-+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
-+
- // backup
-- File backDir = new File((File.createTempFile("12123", "123")).getParent() + File.separator + getUUIndex());
-- backDir.mkdirs();
-+ File backDir = new File("target");
-
- RepositoryBackupConfig config = new RepositoryBackupConfig();
-- config.setRepository(repositoryNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
-+ RepositoryBackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-+ backup.stopBackup(bch);
-
-- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
-+ // prepare stage #2
-+ String repositoryBackupChainLogPath = bch.getLogFilePath();
-
-- // wait till full backup will be stopped
-- while (bch.getState() != RepositoryBackupChain.FINISHED)
-+ String relativePrefixBackupDir = backDir.getCanonicalFile().getParent() + File.separator;
-+
-+ String newBackupDir =
-+ bch.getBackupConfig().getBackupDir().getCanonicalPath().replace(relativePrefixBackupDir, "");
-+ String newBackupDirForWrite = newBackupDir;
-+ if (File.separator.equals("\\"))
- {
-- Thread.yield();
-- Thread.sleep(50);
-+ newBackupDirForWrite = newBackupDir.replaceAll("\\\\", "\\\\\\\\");
- }
-
-- // stop fullBackup
-+ File dest = new File(repositoryBackupChainLogPath + ".xml");
-+ dest.createNewFile();
-
-- backup.stopBackup(bch);
-+ RepositoryBackupChainLog newRepositoryBackupChainLog = null;
-
-- //TODO
-- super.tearDown();
-- removeRepositoryFully(repositoryNameToBackup);
-+ String sConfig =
-+ setNewBackupDirInRepositoryBackupChainLog(new File(repositoryBackupChainLogPath), dest, newBackupDirForWrite);
-
-- // restore
-- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-+ assertTrue(sConfig.contains(newBackupDir));
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ // check
-+ newRepositoryBackupChainLog = new RepositoryBackupChainLog(dest);
-
-- backup.restore(bchLog, null, false);
-+ assertEquals(bch.getBackupConfig().getBackupDir().getCanonicalPath(), newRepositoryBackupChainLog
-+ .getBackupConfig().getBackupDir().getCanonicalPath());
-+ }
-
-- assertEquals(JobWorkspaceRestore.RESTORE_SUCCESSFUL, backup.getLastRepositoryRestore(repositoryNameToBackup)
-- .getStateRestore());
-+ /**
-+ * Use JobExistingWorkspaceSameConfigRestore to restore.
-+ */
-
-- // check
-- ManageableRepository restoredRepository = repositoryService.getRepository(repositoryNameToBackup);
-+ public void testExistedWorkspaceRestoreSingleDBTwoWS() throws Exception
-+ {
-+ // prepare
-+ String dsName1 = helper.createDatasource();
-+ String dsName2 = helper.createDatasource();
-
-- for (String wsName : restoredRepository.getWorkspaceNames())
-- {
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) restoredRepository.login(credentials, wsName);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-- }
-+ ManageableRepository repository = helper.createRepository(container, false, dsName1);
-+ WorkspaceEntry wsEntry1 = helper.createWorkspaceEntry(false, dsName1);
-+ helper.addWorkspace(repository, wsEntry1);
-+ addConent(repository, wsEntry1.getName());
-
-- public void testWorkspaceRestoreWithNullConfig() throws Exception
-- {
-+ WorkspaceEntry wsEntry2 = helper.createWorkspaceEntry(false, dsName2);
-+ helper.addWorkspace(repository, wsEntry2);
-+ addConent(repository, wsEntry2.getName());
-+
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
-+ config.setWorkspace(wsEntry1.getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
-+ BackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-+ backup.stopBackup(bch);
-
-- BackupChain bch = backup.findBackup(repositoryNameToBackup, workspaceNameToBackup);
-+ // restore
-+ File backLog = new File(bch.getLogFilePath());
-+ assertTrue(backLog.exists());
-
-- // wait till full backup will be stopped
-- while (bch.getFullBackupState() != BackupJob.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
-+ BackupChainLog bchLog = new BackupChainLog(backLog);
-
-- // stop fullBackup
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- if (bch != null)
-- backup.stopBackup(bch);
-- else
-- fail("Can't get fullBackup chain");
-+ backup.restoreExistingWorkspace(bchLog, repository.getConfiguration().getName(), repository.getConfiguration()
-+ .getWorkspaceEntries().get(1), false);
-+ checkConent(repository, repository.getConfiguration().getWorkspaceEntries().get(1).getName());
-+ checkConent(repository, repository.getConfiguration().getWorkspaceEntries().get(2).getName());
-+ }
-
-- //TODO
-- removeWorkspaceFullySingleDB(repositoryNameToBackup, workspaceNameToBackup);
-+ /**
-+ * Use JobExistingWorkspaceRestore to restore.
-+ */
-
-- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- BackupChainLog bchLog = new BackupChainLog(backLog);
-+ public void testExistedWorkspaceRestoreSingleDBTwoWSWithDiffConfig() throws Exception
-+ {
-+ // prepare
-+ String dsName1 = helper.createDatasource();
-+ String dsName2 = helper.createDatasource();
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ ManageableRepository repository = helper.createRepository(container, false, dsName1);
-+ WorkspaceEntry wsEntry1 = helper.createWorkspaceEntry(false, dsName1);
-+ helper.addWorkspace(repository, wsEntry1);
-+ addConent(repository, wsEntry1.getName());
-
-- try
-- {
-- backup.restore(bchLog, repositoryNameToBackup + "not_exists", null, false);
-- fail("Should be throw exception WorkspaceRestoreException");
-- }
-- catch (WorkspaceRestoreException e)
-- {
-- //ok
-- }
-+ WorkspaceEntry wsEntry2 = helper.createWorkspaceEntry(false, dsName2);
-+ helper.addWorkspace(repository, wsEntry2);
-+ addConent(repository, wsEntry2.getName());
-
-- backup.restore(bchLog, repositoryNameToBackup, null, false);
--
-- // check
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) getReposityToBackup().login(credentials, workspaceNameToBackup);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-- }
--
-- public void testExistedWorkspaceRestoreWithConfigBackupSetDir() throws Exception
-- {
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
-+ config.setWorkspace(wsEntry1.getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
-+ BackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-+ backup.stopBackup(bch);
-
-- BackupChain bch = backup.findBackup(repositoryNameToBackup, workspaceNameToBackup);
-+ // restore
-+ File backLog = new File(bch.getLogFilePath());
-+ assertTrue(backLog.exists());
-
-- // wait till full backup will be stopped
-- while (bch.getFullBackupState() != BackupJob.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
-+ BackupChainLog bchLog = new BackupChainLog(backLog);
-
-- // stop fullBackup
-- if (bch != null)
-- backup.stopBackup(bch);
-- else
-- fail("Can't get fullBackup chain");
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- super.tearDown();
-+ // change cofig
-+ WorkspaceEntry wsEntry = helper.copyWorkspaceEntry(repository.getConfiguration().getWorkspaceEntries().get(1));
-
-- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- BackupChainLog bchLog = new BackupChainLog(backLog);
-+ List<SimpleParameterEntry> params = wsEntry.getContainer().getParameters();
-+ params.set(2, new SimpleParameterEntry("max-buffer-size", "307200"));
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ wsEntry.getContainer().setParameters(params);
-
-- backup.restoreExistingWorkspace(bchLog.getBackupConfig().getBackupDir(), false);
--
-- // check
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) getReposityToBackup().login(credentials, workspaceNameToBackup);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ backup.restoreExistingWorkspace(bchLog, repository.getConfiguration().getName(), wsEntry, false);
-+ checkConent(repository, repository.getConfiguration().getWorkspaceEntries().get(1).getName());
-+ checkConent(repository, repository.getConfiguration().getWorkspaceEntries().get(2).getName());
- }
-
-- public void testExistedRepositoryRestoreWithConfigBackupSetDir() throws Exception
-+ public void testExistedRepositoryRestoreSingelDBSameConfig() throws Exception
- {
-+ // prepare
-+ String dsName = helper.createDatasource();
-+ ManageableRepository repository = helper.createRepository(container, false, dsName);
-+ addConent(repository, repository.getConfiguration().getSystemWorkspaceName());
-+
-+ WorkspaceEntry wsEntry1 = helper.createWorkspaceEntry(false, dsName);
-+ helper.addWorkspace(repository, wsEntry1);
-+ addConent(repository, wsEntry1.getName());
-+
- // backup
-- File backDir = new File("target/backup/" + getUUIndex());
-+ File backDir = new File("target/backup/" + IdGenerator.generate());
- backDir.mkdirs();
-
- RepositoryBackupConfig config = new RepositoryBackupConfig();
-- config.setRepository(repositoryNameToBackup);
-+ config.setRepository(repository.getConfiguration().getName());
- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
- config.setBackupDir(backDir);
-
-- backup.startBackup(config);
-+ RepositoryBackupChain bch = backup.startBackup(config);
-+ waitEndOfBackup(bch);
-+ backup.stopBackup(bch);
-
-- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
-+ File backLog = new File(bch.getLogFilePath());
-+ assertTrue(backLog.exists());
-
-- // wait till full backup will be stopped
-- while (bch.getState() != RepositoryBackupChain.FINISHED)
-- {
-- Thread.yield();
-- Thread.sleep(50);
-- }
-+ RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-
-- // stop fullBackup
-- backup.stopBackup(bch);
-+ assertNotNull(bchLog.getStartedTime());
-+ assertNotNull(bchLog.getFinishedTime());
-
-- // check
-- super.tearDown();
-+ // restore
-+ long timeOfRestore = System.currentTimeMillis();
-+ backup.restoreExistingRepository(bchLog, helper.copyRepositoryEntry(repository.getConfiguration()), false);
-+ checkConent(repositoryService.getRepository(repository.getConfiguration().getName()), repository
-+ .getConfiguration().getSystemWorkspaceName());
-+ }
-
-- // restore
-- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-- {
-- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-+ /**
-+ * Set new backup directory in RepositoryBackupChainLog
-+ *
-+ * @param src
-+ * source file of RepositoryBackupChainLog
-+ * @param dest
-+ * destination file of RepositoryBackupChainLog
-+ * @param newBackupDir
-+ * @return String
-+ * the content of file destination
-+ * @throws IOException
-+ */
-+ protected String setNewBackupDirInRepositoryBackupChainLog(File src, File dest, String newBackupDir)
-+ throws IOException
-+ {
-+ InputStream in = new FileInputStream(src);
-+ OutputStream out = new FileOutputStream(dest);
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ byte[] buf = new byte[(int)(src.length())];
-+ in.read(buf);
-
-- backup.restoreExistingRepository(bchLog.getBackupConfig().getBackupDir(), false);
-+ String sConfig = new String(buf, Constants.DEFAULT_ENCODING);
-+ sConfig = sConfig.replaceAll("<backup-dir>.+</backup-dir>", "<backup-dir>" + newBackupDir + "</backup-dir>");
-
-- assertEquals(JobWorkspaceRestore.RESTORE_SUCCESSFUL, backup.getLastRepositoryRestore(repositoryNameToBackup)
-- .getStateRestore());
-+ out.write(sConfig.getBytes(Constants.DEFAULT_ENCODING));
-
-- // check
-- ManageableRepository restoredRepository = repositoryService.getRepository(repositoryNameToBackup);
-+ in.close();
-+ out.close();
-
-- for (String wsName : restoredRepository.getWorkspaceNames())
-+ return sConfig;
-+ }
-+
-+ protected void deleteFolder(File f)
-+ {
-+ if (f.isDirectory())
-+ {
-+ for (File file : f.listFiles())
- {
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) restoredRepository.login(credentials, wsName);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-+ deleteFolder(file);
- }
-+
-+ f.delete();
- }
- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ {
-+ f.delete();
-+ }
- }
-
-- public void testWorkspaceRestoreWithConfigBackupSetDir() throws Exception
-+ public void addConent(ManageableRepository repository, String wsName) throws Exception
- {
-- // backup
-- File backDir = new File((File.createTempFile("12123", "123")).getParent() + File.separator + getUUIndex());
-- backDir.mkdirs();
-+ SessionImpl session = (SessionImpl)repository.login(credentials, wsName);
-+ Node rootNode = session.getRootNode().addNode("test");
-
-- BackupConfig config = new BackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setWorkspace(workspaceNameToBackup);
-- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
-+ // add some changes which will be logged in incremental log
-+ rootNode.addNode("node1").setProperty("prop1", "value1");
-+ rootNode.addNode("node2").setProperty("prop2", new FileInputStream(blob));
-+ rootNode.addNode("node3").addMixin("mix:lockable");
-+ session.save();
-+ }
-
-- config.setBackupDir(backDir);
--
-- backup.startBackup(config);
--
-- BackupChain bch = backup.findBackup(repositoryNameToBackup, workspaceNameToBackup);
--
-- // wait till full backup will be stopped
-- while (bch.getFullBackupState() != BackupJob.FINISHED)
-+ public void waitEndOfBackup(BackupChain bch) throws Exception
-+ {
-+ while (bch.getFullBackupState() != BackupChain.FINISHED)
- {
- Thread.yield();
- Thread.sleep(50);
- }
-+ }
-
-- // stop fullBackup
--
-- if (bch != null)
-- backup.stopBackup(bch);
-- else
-- fail("Can't get fullBackup chain");
--
-- //TODO
-- removeWorkspaceFullySingleDB(repositoryNameToBackup, workspaceNameToBackup);
--
-- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-+ public void waitEndOfBackup(RepositoryBackupChain bch) throws Exception
-+ {
-+ while (bch.getState() != RepositoryBackupChain.FINISHED
-+ && bch.getState() != RepositoryBackupChain.FULL_BACKUP_FINISHED_INCREMENTAL_BACKUP_WORKING)
- {
-- BackupChainLog bchLog = new BackupChainLog(backLog);
--
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
--
-- backup.restoreWorkspace(bchLog.getBackupConfig().getBackupDir(), false);
--
-- // check
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) getReposityToBackup().login(credentials, "ws1");
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-+ Thread.yield();
-+ Thread.sleep(50);
- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
- }
-
-- public void testRepositoryRestoreWithConfigBackupSetDir() throws Exception
-+ public void waitEndOfRestore(String repositoryName) throws Exception
- {
-- // backup
-- File backDir = new File((File.createTempFile("12123", "123")).getParent() + File.separator + getUUIndex());
-- backDir.mkdirs();
-+ while (backup.getLastRepositoryRestore(repositoryName).getStateRestore() != JobRepositoryRestore.REPOSITORY_RESTORE_SUCCESSFUL
-+ && backup.getLastRepositoryRestore(repositoryName).getStateRestore() != JobRepositoryRestore.REPOSITORY_RESTORE_FAIL)
-+ {
-+ Thread.sleep(50);
-+ }
-+ }
-
-- RepositoryBackupConfig config = new RepositoryBackupConfig();
-- config.setRepository(repositoryNameToBackup);
-- config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
--
-- config.setBackupDir(backDir);
--
-- backup.startBackup(config);
--
-- RepositoryBackupChain bch = backup.findRepositoryBackup(repositoryNameToBackup);
--
-- // wait till full backup will be stopped
-- while (bch.getState() != RepositoryBackupChain.FINISHED)
-+ public void waitEndOfRestore(String repositoryName, String workspaceName) throws Exception
-+ {
-+ while (backup.getLastRestore(repositoryName, workspaceName).getStateRestore() != JobWorkspaceRestore.RESTORE_SUCCESSFUL
-+ && backup.getLastRestore(repositoryName, workspaceName).getStateRestore() != JobWorkspaceRestore.RESTORE_FAIL)
- {
-- Thread.yield();
- Thread.sleep(50);
- }
-+ }
-
-- // stop fullBackup
-+ public void checkConent(ManageableRepository repository, String wsName) throws Exception
-+ {
-+ SessionImpl session = (SessionImpl)repository.login(credentials, wsName);
-
-- backup.stopBackup(bch);
-+ Node rootNode = session.getRootNode().getNode("test");
-+ assertEquals(rootNode.getNode("node1").getProperty("prop1").getString(), "value1");
-
-- //TODO
-- super.tearDown();
-- removeRepositoryFully(repositoryNameToBackup);
--
-- // restore
-- File backLog = new File(bch.getLogFilePath());
-- if (backLog.exists())
-+ InputStream in = rootNode.getNode("node2").getProperty("prop2").getStream();
-+ try
- {
-- RepositoryBackupChainLog bchLog = new RepositoryBackupChainLog(backLog);
-+ compareStream(new FileInputStream(blob), in);
-+ }
-+ finally
-+ {
-+ in.close();
-+ }
-+ }
-
-- assertNotNull(bchLog.getStartedTime());
-- assertNotNull(bchLog.getFinishedTime());
-+ public void checkIncrementalConent(ManageableRepository repository, String wsName) throws Exception
-+ {
-+ SessionImpl session = (SessionImpl)repository.login(credentials, wsName);
-
-- backup.restoreRepository(bchLog.getBackupConfig().getBackupDir(), false);
-+ Node rootNode = session.getRootNode().getNode("testIncremental");
-+ assertEquals(rootNode.getNode("node1").getProperty("prop1").getString(), "value1");
-
-- assertEquals(JobWorkspaceRestore.RESTORE_SUCCESSFUL, backup.getLastRepositoryRestore(repositoryNameToBackup)
-- .getStateRestore());
-+ InputStream in = rootNode.getNode("node2").getProperty("prop2").getStream();
-+ try
-+ {
-+ compareStream(new FileInputStream(blob), in);
-+ }
-+ finally
-+ {
-+ in.close();
-+ }
-+ }
-
-- // check
-- ManageableRepository restoredRepository = repositoryService.getRepository(repositoryNameToBackup);
-+ public void addIncrementalConent(ManageableRepository repository, String wsName) throws Exception
-+ {
-+ SessionImpl session = (SessionImpl)repository.login(credentials, wsName);
-+ Node rootNode = session.getRootNode().addNode("testIncremental");
-
-- for (String wsName : restoredRepository.getWorkspaceNames())
-- {
-- SessionImpl back1 = null;
-- try
-- {
-- back1 = (SessionImpl) restoredRepository.login(credentials, wsName);
-- Node ws1backTestRoot = back1.getRootNode().getNode("backupTest");
-- assertEquals("Restored content should be same", "property-5", ws1backTestRoot.getNode("node_5")
-- .getProperty("exo:data").getString());
-- }
-- catch (Exception e)
-- {
-- e.printStackTrace();
-- fail(e.getMessage());
-- }
-- finally
-- {
-- if (back1 != null)
-- back1.logout();
-- }
-- }
-- }
-- else
-- fail("There are no backup files in " + backDir.getAbsolutePath());
-+ // add some changes which will be logged in incremental log
-+ rootNode.addNode("node1").setProperty("prop1", "value1");
-+ rootNode.addNode("node2").setProperty("prop2", new FileInputStream(blob));
-+ rootNode.addNode("node3").addMixin("mix:lockable");
-+ session.save();
- }
-+
- }
-Index: exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/util/TesterConfigurationHelper.java
-===================================================================
---- exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/util/TesterConfigurationHelper.java (revision 0)
-+++ exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/util/TesterConfigurationHelper.java (revision 0)
-@@ -0,0 +1,354 @@
-+/*
-+ * 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.util;
-+
-+import java.util.ArrayList;
-+import java.util.List;
-+import java.util.Properties;
-+
-+import javax.jcr.RepositoryException;
-+import javax.naming.Context;
-+import javax.naming.InitialContext;
-+import javax.sql.DataSource;
-+
-+import org.apache.commons.dbcp.BasicDataSourceFactory;
-+import org.exoplatform.container.ExoContainer;
-+import org.exoplatform.services.jcr.RepositoryService;
-+import org.exoplatform.services.jcr.config.CacheEntry;
-+import org.exoplatform.services.jcr.config.ContainerEntry;
-+import org.exoplatform.services.jcr.config.QueryHandlerEntry;
-+import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
-+import org.exoplatform.services.jcr.config.RepositoryEntry;
-+import org.exoplatform.services.jcr.config.SimpleParameterEntry;
-+import org.exoplatform.services.jcr.config.ValueStorageEntry;
-+import org.exoplatform.services.jcr.config.ValueStorageFilterEntry;
-+import org.exoplatform.services.jcr.config.WorkspaceEntry;
-+import org.exoplatform.services.jcr.core.ManageableRepository;
-+import org.exoplatform.services.log.ExoLogger;
-+import org.exoplatform.services.log.Log;
-+
-+/**
-+ * Created by The eXo Platform SAS
-+ *
-+ * @author <a href="mailto:Sergey.Kabashnyuk@gmail.com">Sergey Kabashnyuk</a>
-+ * @version $Id: ConfigurationHelper.java 11907 2008-03-13 15:36:21Z ksm $
-+ */
-+public class TesterConfigurationHelper
-+{
-+ private static Log log = ExoLogger.getLogger("exo.jcr.component.core.ConfigurationHelper");
-+
-+ private static TesterConfigurationHelper instance;
-+
-+ private TesterConfigurationHelper()
-+ {
-+ System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.exoplatform.services.naming.SimpleContextFactory");
-+ }
-+
-+ /**
-+ * Add new workspace to repository.
-+ */
-+ public void addWorkspace(ManageableRepository repository, WorkspaceEntry workspaceEntry)
-+ throws RepositoryConfigurationException, RepositoryException
-+ {
-+ repository.configWorkspace(workspaceEntry);
-+ repository.createWorkspace(workspaceEntry.getName());
-+ }
-+
-+ /**
-+ * Create new datasource.
-+ *
-+ * @return datasource name
-+ */
-+ public String createDatasource() throws Exception
-+ {
-+ String dsName = IdGenerator.generate();
-+
-+ Properties properties = new Properties();
-+ properties.setProperty("driverClassName", "org.hsqldb.jdbcDriver");
-+ properties.setProperty("url", "jdbc:hsqldb:file:target/temp/data/" + dsName);
-+ properties.setProperty("username", "sa");
-+ properties.setProperty("password", "");
-+
-+ DataSource ds = BasicDataSourceFactory.createDataSource(properties);
-+
-+ new InitialContext().bind(dsName, ds);
-+
-+ return dsName;
-+
-+ }
-+
-+ public ManageableRepository createRepository(ExoContainer container, boolean isMultiDb, String dsName)
-+ throws Exception
-+ {
-+ RepositoryService service = (RepositoryService)container.getComponentInstanceOfType(RepositoryService.class);
-+ RepositoryEntry repoEntry = createRepositoryEntry(isMultiDb, null, dsName);
-+ service.createRepository(repoEntry);
-+
-+ return service.getRepository(repoEntry.getName());
-+ }
-+
-+ /**
-+ * Create workspace entry.
-+ */
-+ public RepositoryEntry createRepositoryEntry(boolean isMultiDb, String systemWSName, String dsName) throws Exception
-+ {
-+ // create system workspace entry
-+ List<String> ids = new ArrayList<String>();
-+ ids.add("id");
-+ WorkspaceEntry wsEntry = createWorkspaceEntry(isMultiDb, dsName, ids);
-+
-+ if (systemWSName != null)
-+ {
-+ wsEntry.setName(systemWSName);
-+ }
-+
-+ RepositoryEntry repository = new RepositoryEntry();
-+ repository.setSystemWorkspaceName(wsEntry.getName());
-+ repository.setDefaultWorkspaceName(wsEntry.getName());
-+ repository.setName("repo-" + IdGenerator.generate());
-+ repository.setSessionTimeOut(3600000);
-+ repository.setAuthenticationPolicy("org.exoplatform.services.jcr.impl.core.access.JAASAuthenticator");
-+ repository.setSecurityDomain("exo-domain");
-+ repository.addWorkspace(wsEntry);
-+
-+ return repository;
-+ }
-+
-+ /**
-+ * Create copy of workspace entry.
-+ */
-+ public WorkspaceEntry copyWorkspaceEntry(WorkspaceEntry baseWorkspaceEntry) throws Exception
-+ {
-+ // container entry
-+ ArrayList<SimpleParameterEntry> params = new ArrayList<SimpleParameterEntry>();
-+ params.addAll(copyList(baseWorkspaceEntry.getContainer().getParameters()));
-+ ContainerEntry containerEntry = new ContainerEntry(baseWorkspaceEntry.getContainer().getType(), params);
-+ containerEntry.setParameters(params);
-+
-+ // value storage
-+ ArrayList<ValueStorageEntry> list = new ArrayList<ValueStorageEntry>();
-+
-+ for (ValueStorageEntry baseValueStorageEntry : baseWorkspaceEntry.getContainer().getValueStorages())
-+ {
-+ ArrayList<ValueStorageFilterEntry> vsparams = new ArrayList<ValueStorageFilterEntry>();
-+
-+ for (ValueStorageFilterEntry baseValueStorageFilterEntry : baseValueStorageEntry.getFilters())
-+ {
-+ ValueStorageFilterEntry filterEntry = new ValueStorageFilterEntry();
-+ filterEntry.setPropertyType(baseValueStorageFilterEntry.getPropertyType());
-+ filterEntry.setPropertyName(baseValueStorageFilterEntry.getPropertyName());
-+ filterEntry.setAncestorPath(baseValueStorageFilterEntry.getAncestorPath());
-+ filterEntry.setMinValueSize(baseValueStorageFilterEntry.getMinValueSize());
-+
-+ vsparams.add(filterEntry);
-+ }
-+
-+ ValueStorageEntry valueStorageEntry = new ValueStorageEntry(baseValueStorageEntry.getType(), vsparams);
-+ ArrayList<SimpleParameterEntry> spe = new ArrayList<SimpleParameterEntry>();
-+ spe.addAll(copyList(baseValueStorageEntry.getParameters()));
-+ valueStorageEntry.setId(baseValueStorageEntry.getId());
-+ valueStorageEntry.setParameters(spe);
-+ valueStorageEntry.setFilters(vsparams);
-+
-+ // containerEntry.setValueStorages();
-+ list.add(valueStorageEntry);
-+ }
-+
-+ containerEntry.setValueStorages(list);
-+
-+ // Indexer
-+ params = new ArrayList<SimpleParameterEntry>();
-+ params.addAll(copyList(baseWorkspaceEntry.getQueryHandler().getParameters()));
-+ QueryHandlerEntry qEntry = new QueryHandlerEntry(baseWorkspaceEntry.getQueryHandler().getType(), params);
-+
-+ // Cache
-+ params = new ArrayList<SimpleParameterEntry>();
-+ params.addAll(copyList(baseWorkspaceEntry.getCache().getParameters()));
-+ CacheEntry cacheEntry = new CacheEntry(params);
-+ cacheEntry.setType(baseWorkspaceEntry.getCache().getType());
-+
-+ WorkspaceEntry workspaceEntry = new WorkspaceEntry();
-+ workspaceEntry.setContainer(containerEntry);
-+ workspaceEntry.setCache(cacheEntry);
-+ workspaceEntry.setQueryHandler(qEntry);
-+ workspaceEntry.setName(baseWorkspaceEntry.getName());
-+ workspaceEntry.setUniqueName(baseWorkspaceEntry.getUniqueName());
-+
-+ return workspaceEntry;
-+
-+ }
-+
-+ /**
-+ * Create copy of repository entry.
-+ */
-+ public RepositoryEntry copyRepositoryEntry(RepositoryEntry baseRepositoryEntry) throws Exception
-+ {
-+ ArrayList<WorkspaceEntry> wsEntries = new ArrayList<WorkspaceEntry>();
-+
-+ for (WorkspaceEntry wsEntry : baseRepositoryEntry.getWorkspaceEntries())
-+ {
-+ WorkspaceEntry newWSEntry = copyWorkspaceEntry(wsEntry);
-+
-+ wsEntries.add(newWSEntry);
-+ }
-+
-+ RepositoryEntry newRepositoryEntry = new RepositoryEntry();
-+
-+ newRepositoryEntry.setSystemWorkspaceName(baseRepositoryEntry.getSystemWorkspaceName());
-+ newRepositoryEntry.setAccessControl(baseRepositoryEntry.getAccessControl());
-+ newRepositoryEntry.setAuthenticationPolicy(baseRepositoryEntry.getAuthenticationPolicy());
-+ newRepositoryEntry.setDefaultWorkspaceName(baseRepositoryEntry.getDefaultWorkspaceName());
-+ newRepositoryEntry.setName(baseRepositoryEntry.getName());
-+ newRepositoryEntry.setSecurityDomain(baseRepositoryEntry.getSecurityDomain());
-+ newRepositoryEntry.setSessionTimeOut(baseRepositoryEntry.getSessionTimeOut());
-+
-+ newRepositoryEntry.setWorkspaceEntries(wsEntries);
-+ return newRepositoryEntry;
-+
-+ }
-+
-+ /**
-+ * Create copy of list with SimpleParameterEntry-s
-+ */
-+ private List<SimpleParameterEntry> copyList(List<SimpleParameterEntry> baseArrayList)
-+ {
-+ ArrayList<SimpleParameterEntry> arrayList = new ArrayList<SimpleParameterEntry>();
-+
-+ for (SimpleParameterEntry baseParameter : baseArrayList)
-+ {
-+ arrayList.add(new SimpleParameterEntry(baseParameter.getName(), baseParameter.getValue()));
-+ }
-+
-+ return arrayList;
-+ }
-+
-+ /**
-+ * Create workspace entry.
-+ */
-+ public WorkspaceEntry createWorkspaceEntry(boolean isMultiDb, String dsName) throws Exception
-+ {
-+ List<String> ids = new ArrayList<String>();
-+ ids.add("id");
-+
-+ return createWorkspaceEntry(isMultiDb, dsName, ids);
-+ }
-+
-+ /**
-+ * Create workspace entry.
-+ */
-+ public WorkspaceEntry createWorkspaceEntry(boolean isMultiDb, String dsName, List<String> valueStorageIds)
-+ throws Exception
-+ {
-+ if (dsName == null)
-+ {
-+ dsName = createDatasource();
-+ }
-+
-+ String id = IdGenerator.generate();
-+ String wsName = "ws-" + id;
-+
-+ // container entry
-+ List params = new ArrayList();
-+ params.add(new SimpleParameterEntry("source-name", dsName));
-+ params.add(new SimpleParameterEntry("multi-db", isMultiDb ? "true" : "false"));
-+ params.add(new SimpleParameterEntry("max-buffer-size", "204800"));
-+ params.add(new SimpleParameterEntry("dialect", "auto"));
-+ params.add(new SimpleParameterEntry("swap-directory", "target/temp/swap/" + wsName));
-+
-+ ContainerEntry containerEntry =
-+ new ContainerEntry("org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer",
-+ (ArrayList)params);
-+ containerEntry.setParameters(params);
-+
-+ // value storage
-+ ArrayList list = new ArrayList();
-+ if (valueStorageIds != null)
-+ {
-+ for (String vsId : valueStorageIds)
-+ {
-+ ArrayList<ValueStorageFilterEntry> vsparams = new ArrayList<ValueStorageFilterEntry>();
-+ ValueStorageFilterEntry filterEntry = new ValueStorageFilterEntry();
-+ filterEntry.setPropertyType("Binary");
-+ vsparams.add(filterEntry);
-+
-+ ValueStorageEntry valueStorageEntry =
-+ new ValueStorageEntry("org.exoplatform.services.jcr.impl.storage.value.fs.SimpleFileValueStorage",
-+ vsparams);
-+ ArrayList<SimpleParameterEntry> spe = new ArrayList<SimpleParameterEntry>();
-+ spe.add(new SimpleParameterEntry("path", "target/temp/values/" + wsName + "-" + vsId));
-+ valueStorageEntry.setId(vsId);
-+ valueStorageEntry.setParameters(spe);
-+ valueStorageEntry.setFilters(vsparams);
-+
-+ // containerEntry.setValueStorages();
-+ containerEntry.setParameters(params);
-+ list.add(valueStorageEntry);
-+ }
-+ }
-+
-+ containerEntry.setValueStorages(list);
-+
-+ // Indexer
-+ params = new ArrayList();
-+ params.add(new SimpleParameterEntry("index-dir", "target/temp/index/" + wsName));
-+ QueryHandlerEntry qEntry =
-+ new QueryHandlerEntry("org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex", params);
-+
-+ // Cache
-+ ArrayList cacheParams = new ArrayList();
-+ cacheParams.add(new SimpleParameterEntry("maxSize", "2000"));
-+ cacheParams.add(new SimpleParameterEntry("liveTime", "20m"));
-+ CacheEntry cacheEntry = new CacheEntry(cacheParams);
-+ cacheEntry.setType("org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl");
-+
-+ WorkspaceEntry workspaceEntry = new WorkspaceEntry();
-+ workspaceEntry.setContainer(containerEntry);
-+ workspaceEntry.setCache(cacheEntry);
-+ workspaceEntry.setQueryHandler(qEntry);
-+ workspaceEntry.setName(wsName);
-+ workspaceEntry.setUniqueName(wsName);
-+
-+ return workspaceEntry;
-+ }
-+
-+ public List<String> getValueStorageIds(ArrayList<ValueStorageEntry> entries)
-+ {
-+ List<String> ids = new ArrayList<String>();
-+ if (entries != null)
-+ {
-+ for (ValueStorageEntry entry : entries)
-+ {
-+ ids.add(entry.getId());
-+ }
-+ }
-+
-+ return ids;
-+ }
-+
-+ public static TesterConfigurationHelper getInstance()
-+ {
-+ if (instance == null)
-+ {
-+ instance = new TesterConfigurationHelper();
-+ }
-+
-+ return instance;
-+ }
-+
-+}
14 years, 1 month
exo-jcr SVN: r5870 - in jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules: jcr and 1 other directory.
by do-not-reply@jboss.org
Author: nfilotto
Date: 2012-03-16 07:58:28 -0400 (Fri, 16 Mar 2012)
New Revision: 5870
Modified:
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/faq/jcr-faq.xml
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml
Log:
EXOJCR-1763: Doc updates
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/faq/jcr-faq.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/faq/jcr-faq.xml 2012-03-15 12:32:14 UTC (rev 5869)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/faq/jcr-faq.xml 2012-03-16 11:58:28 UTC (rev 5870)
@@ -322,14 +322,18 @@
<listitem>
<para>"jgroups-configuration" is path to JGroups configuration
- that is multiplexer stack is used (default). This file is also
+ that should not be anymore jgroups' stack definitions but a
+ normal jgroups configuration format with the shared transport
+ configured by simply setting the jgroups property
+ singleton_name to a unique name (it must remain unique from
+ one portal container to another). This file is also
pre-bundled with templates and is recommended for use;</para>
</listitem>
<listitem>
- <para>"jgroups-multiplexer-stack" set to "false" with the
- jgroups configuration with the shared transport enabled in
- order to use the shared transport.</para>
+ <para>"jgroups-multiplexer-stack" set to "false" in order to
+ disable the multiplexer stack as now it is recommended to use
+ the JGroups' shared transport instead.</para>
</listitem>
<listitem>
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml 2012-03-15 12:32:14 UTC (rev 5869)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/jbosscache-configuration-templates.xml 2012-03-16 11:58:28 UTC (rev 5870)
@@ -6,8 +6,9 @@
<title>JBoss Cache configuration</title>
- <para>This chapter will show you how to use and configure Jboss Cache in the clustered environment.
- Also, you will know how to use a template-based configuration offered by eXo JCR for JBoss Cache instances.</para>
+ <para>This chapter will show you how to use and configure Jboss Cache in the
+ clustered environment. Also, you will know how to use a template-based
+ configuration offered by eXo JCR for JBoss Cache instances.</para>
<section id="JCR.JBossCacheConfigurationTemplates.JBoss_Cache_Config_for_Indexer">
<title>JBoss cache configuration for indexer, lock manager and data
@@ -65,7 +66,7 @@
channel for set of clusters. This feature reduces network overheads and
increase performance and stability of application. To enable multiplexer
stack, you should define appropriate configuration file (upd-mux.xml is
- pre-shipped one with eXo JCR) and set "jgroups-multiplexer-stack" into
+ pre-shipped one with eXo JCR) and set "jgroups-multiplexer-stack" to
"true".</para>
<programlisting language="xml"><property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" />
@@ -73,9 +74,14 @@
<para>I<emphasis>t is now highly recommended to use the shared transport
instead of the multiplexer</emphasis>, to do so simply disable the
- multiplexer stack in the configuration of each component then set the
- property <emphasis>singleton_name</emphasis> of your JGroups configuration
- to a unique name.</para>
+ multiplexer stack in the configuration of each component by setting the
+ property <emphasis>jgroups-multiplexer-stack</emphasis> to
+ <emphasis>false</emphasis> then you will need to ensure that the format of
+ your jgroups configuration is not anymore a jgroups stack definitions but
+ a normal configuration and finally you will need to set the property
+ <emphasis>singleton_name</emphasis> of your JGroups configuration to a
+ unique name (this name must not be the same from one portal container to
+ another).</para>
<programlisting language="xml"><property name="jgroups-configuration" value="jar:/conf/portal/udp-mux.xml" />
<property name="jgroups-multiplexer-stack" value="false" /></programlisting>
14 years, 1 month