exo-jcr SVN: r3310 - in jcr/trunk/exo.jcr.component.core/src: main/java/org/exoplatform/services/jcr/impl/core and 5 other directories.
by do-not-reply@jboss.org
Author: sergiykarpenko
Date: 2010-10-21 08:19:25 -0400 (Thu, 21 Oct 2010)
New Revision: 3310
Added:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleanerHolder.java
Removed:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/WorkspaceFileCleanerHolder.java
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/value/ValueFactoryImpl.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/StandaloneStoragePluginProvider.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/BaseStandaloneTest.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCWDCTest.java
Log:
EXOJCR-999: WorkspaceFileCleanerHolder renamed to FileCleanerHolder
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java 2010-10-21 09:40:08 UTC (rev 3309)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java 2010-10-21 12:19:25 UTC (rev 3310)
@@ -58,7 +58,7 @@
import org.exoplatform.services.jcr.impl.dataflow.persistent.LocalWorkspaceDataManagerStub;
import org.exoplatform.services.jcr.impl.storage.SystemDataContainerHolder;
import org.exoplatform.services.jcr.impl.storage.value.StandaloneStoragePluginProvider;
-import org.exoplatform.services.jcr.impl.util.io.WorkspaceFileCleanerHolder;
+import org.exoplatform.services.jcr.impl.util.io.FileCleanerHolder;
import org.exoplatform.services.jcr.storage.WorkspaceDataContainer;
import org.exoplatform.services.jcr.util.IdGenerator;
import org.exoplatform.services.log.ExoLogger;
@@ -515,7 +515,7 @@
registerComponentInstance(config);
// WorkspaceFileCleanerHolder - is a common holder for all workspaces.
// It is used to initialize FileValueStorage
- registerComponentImplementation(WorkspaceFileCleanerHolder.class);
+ registerComponentImplementation(FileCleanerHolder.class);
registerWorkspacesComponents();
registerRepositoryComponents();
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionImpl.java 2010-10-21 09:40:08 UTC (rev 3309)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SessionImpl.java 2010-10-21 12:19:25 UTC (rev 3310)
@@ -43,7 +43,7 @@
import org.exoplatform.services.jcr.impl.dataflow.persistent.LocalWorkspaceDataManagerStub;
import org.exoplatform.services.jcr.impl.ext.action.SessionActionCatalog;
import org.exoplatform.services.jcr.impl.ext.action.SessionActionInterceptor;
-import org.exoplatform.services.jcr.impl.util.io.WorkspaceFileCleanerHolder;
+import org.exoplatform.services.jcr.impl.util.io.FileCleanerHolder;
import org.exoplatform.services.jcr.impl.xml.ExportImportFactory;
import org.exoplatform.services.jcr.impl.xml.ItemDataKeeperAdapter;
import org.exoplatform.services.jcr.impl.xml.XmlMapping;
@@ -170,8 +170,8 @@
this.lazyReadThreshold =
wsConfig.getLazyReadThreshold() > 0 ? wsConfig.getLazyReadThreshold() : DEFAULT_LAZY_READ_THRESHOLD;
- WorkspaceFileCleanerHolder cleanerHolder =
- (WorkspaceFileCleanerHolder)container.getComponentInstanceOfType(WorkspaceFileCleanerHolder.class);
+ FileCleanerHolder cleanerHolder =
+ (FileCleanerHolder)container.getComponentInstanceOfType(FileCleanerHolder.class);
this.locationFactory = new LocationFactory(this);
this.valueFactory = new ValueFactoryImpl(locationFactory, wsConfig, cleanerHolder);
@@ -253,8 +253,8 @@
WorkspaceEntry wsConfig = (WorkspaceEntry)container.getComponentInstanceOfType(WorkspaceEntry.class);
- WorkspaceFileCleanerHolder cleanerHolder =
- (WorkspaceFileCleanerHolder)container.getComponentInstanceOfType(WorkspaceFileCleanerHolder.class);
+ FileCleanerHolder cleanerHolder =
+ (FileCleanerHolder)container.getComponentInstanceOfType(FileCleanerHolder.class);
ValueFactoryImpl valueFactoryImpl = new ValueFactoryImpl(factory, wsConfig, cleanerHolder);
@@ -294,8 +294,8 @@
WorkspaceEntry wsConfig = (WorkspaceEntry)container.getComponentInstanceOfType(WorkspaceEntry.class);
- WorkspaceFileCleanerHolder cleanerHolder =
- (WorkspaceFileCleanerHolder)container.getComponentInstanceOfType(WorkspaceFileCleanerHolder.class);
+ FileCleanerHolder cleanerHolder =
+ (FileCleanerHolder)container.getComponentInstanceOfType(FileCleanerHolder.class);
ValueFactoryImpl valueFactoryImpl = new ValueFactoryImpl(factory, wsConfig, cleanerHolder);
@@ -338,8 +338,8 @@
WorkspaceEntry wsConfig = (WorkspaceEntry)container.getComponentInstanceOfType(WorkspaceEntry.class);
- WorkspaceFileCleanerHolder cleanerHolder =
- (WorkspaceFileCleanerHolder)container.getComponentInstanceOfType(WorkspaceFileCleanerHolder.class);
+ FileCleanerHolder cleanerHolder =
+ (FileCleanerHolder)container.getComponentInstanceOfType(FileCleanerHolder.class);
ValueFactoryImpl valueFactoryImpl = new ValueFactoryImpl(factory, wsConfig, cleanerHolder);
@@ -380,8 +380,8 @@
WorkspaceEntry wsConfig = (WorkspaceEntry)container.getComponentInstanceOfType(WorkspaceEntry.class);
- WorkspaceFileCleanerHolder cleanerHolder =
- (WorkspaceFileCleanerHolder)container.getComponentInstanceOfType(WorkspaceFileCleanerHolder.class);
+ FileCleanerHolder cleanerHolder =
+ (FileCleanerHolder)container.getComponentInstanceOfType(FileCleanerHolder.class);
ValueFactoryImpl valueFactoryImpl = new ValueFactoryImpl(factory, wsConfig, cleanerHolder);
try
@@ -418,8 +418,8 @@
WorkspaceEntry wsConfig = (WorkspaceEntry)container.getComponentInstanceOfType(WorkspaceEntry.class);
- WorkspaceFileCleanerHolder cleanerHolder =
- (WorkspaceFileCleanerHolder)container.getComponentInstanceOfType(WorkspaceFileCleanerHolder.class);
+ FileCleanerHolder cleanerHolder =
+ (FileCleanerHolder)container.getComponentInstanceOfType(FileCleanerHolder.class);
ValueFactoryImpl valueFactoryImpl = new ValueFactoryImpl(factory, wsConfig, cleanerHolder);
try
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/value/ValueFactoryImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/value/ValueFactoryImpl.java 2010-10-21 09:40:08 UTC (rev 3309)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/value/ValueFactoryImpl.java 2010-10-21 12:19:25 UTC (rev 3310)
@@ -31,7 +31,7 @@
import org.exoplatform.services.jcr.impl.util.JCRDateFormat;
import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
import org.exoplatform.services.jcr.impl.util.io.PrivilegedSystemHelper;
-import org.exoplatform.services.jcr.impl.util.io.WorkspaceFileCleanerHolder;
+import org.exoplatform.services.jcr.impl.util.io.FileCleanerHolder;
import org.exoplatform.services.jcr.storage.WorkspaceDataContainer;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -72,7 +72,7 @@
private int maxBufferSize;
public ValueFactoryImpl(LocationFactory locationFactory, WorkspaceEntry workspaceConfig,
- WorkspaceFileCleanerHolder cleanerHolder)
+ FileCleanerHolder cleanerHolder)
{
this.locationFactory = locationFactory;
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/StandaloneStoragePluginProvider.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/StandaloneStoragePluginProvider.java 2010-10-21 09:40:08 UTC (rev 3309)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/StandaloneStoragePluginProvider.java 2010-10-21 12:19:25 UTC (rev 3310)
@@ -25,7 +25,7 @@
import org.exoplatform.services.jcr.config.WorkspaceEntry;
import org.exoplatform.services.jcr.datamodel.PropertyData;
import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
-import org.exoplatform.services.jcr.impl.util.io.WorkspaceFileCleanerHolder;
+import org.exoplatform.services.jcr.impl.util.io.FileCleanerHolder;
import org.exoplatform.services.jcr.storage.WorkspaceStorageConnection;
import org.exoplatform.services.jcr.storage.value.ValueIOChannel;
import org.exoplatform.services.jcr.storage.value.ValuePluginFilter;
@@ -62,7 +62,7 @@
*/
private final ValueDataResourceHolder resorcesHolder;
- public StandaloneStoragePluginProvider(WorkspaceEntry wsConfig, WorkspaceFileCleanerHolder holder)
+ public StandaloneStoragePluginProvider(WorkspaceEntry wsConfig, FileCleanerHolder holder)
throws RepositoryConfigurationException, IOException
{
Added: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleanerHolder.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleanerHolder.java (rev 0)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleanerHolder.java 2010-10-21 12:19:25 UTC (rev 3310)
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.exoplatform.services.jcr.impl.util.io;
+
+/**
+ * Created by The eXo Platform SAS. <br/> per workspace container file cleaner holder object
+ *
+ * @author Gennady Azarenkov
+ * @version $Id: WorkspaceFileCleanerHolder.java 11907 2008-03-13 15:36:21Z ksm $
+ */
+
+public class FileCleanerHolder
+{
+
+ private final FileCleaner fileCleaner;
+
+ public FileCleanerHolder()
+ {
+ this.fileCleaner = new FileCleaner();
+ }
+
+ public FileCleaner getFileCleaner()
+ {
+ return fileCleaner;
+ }
+
+}
Deleted: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/WorkspaceFileCleanerHolder.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/WorkspaceFileCleanerHolder.java 2010-10-21 09:40:08 UTC (rev 3309)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/WorkspaceFileCleanerHolder.java 2010-10-21 12:19:25 UTC (rev 3310)
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.exoplatform.services.jcr.impl.util.io;
-
-/**
- * Created by The eXo Platform SAS. <br/> per workspace container file cleaner holder object
- *
- * @author Gennady Azarenkov
- * @version $Id: WorkspaceFileCleanerHolder.java 11907 2008-03-13 15:36:21Z ksm $
- */
-
-public class WorkspaceFileCleanerHolder
-{
-
- private final FileCleaner fileCleaner;
-
- public WorkspaceFileCleanerHolder()
- {
- this.fileCleaner = new FileCleaner();
- }
-
- public FileCleaner getFileCleaner()
- {
- return fileCleaner;
- }
-
-}
Modified: jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/BaseStandaloneTest.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/BaseStandaloneTest.java 2010-10-21 09:40:08 UTC (rev 3309)
+++ jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/BaseStandaloneTest.java 2010-10-21 12:19:25 UTC (rev 3310)
@@ -30,7 +30,7 @@
import org.exoplatform.services.jcr.impl.core.SessionImpl;
import org.exoplatform.services.jcr.impl.dataflow.serialization.ReaderSpoolFileHolder;
import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
-import org.exoplatform.services.jcr.impl.util.io.WorkspaceFileCleanerHolder;
+import org.exoplatform.services.jcr.impl.util.io.FileCleanerHolder;
import org.exoplatform.services.jcr.storage.WorkspaceDataContainer;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -153,8 +153,8 @@
wconf.getContainer().getParameterInteger(WorkspaceDataContainer.MAXBUFFERSIZE_PROP,
WorkspaceDataContainer.DEF_MAXBUFFERSIZE);
- WorkspaceFileCleanerHolder wfcleaner =
- (WorkspaceFileCleanerHolder)wsc.getComponent(WorkspaceFileCleanerHolder.class);
+ FileCleanerHolder wfcleaner =
+ (FileCleanerHolder)wsc.getComponent(FileCleanerHolder.class);
fileCleaner = wfcleaner.getFileCleaner();
holder = new ReaderSpoolFileHolder();
}
Modified: jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCWDCTest.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCWDCTest.java 2010-10-21 09:40:08 UTC (rev 3309)
+++ jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCWDCTest.java 2010-10-21 12:19:25 UTC (rev 3310)
@@ -46,7 +46,7 @@
import org.exoplatform.services.jcr.impl.dataflow.TransientValueData;
import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer;
import org.exoplatform.services.jcr.impl.storage.value.StandaloneStoragePluginProvider;
-import org.exoplatform.services.jcr.impl.util.io.WorkspaceFileCleanerHolder;
+import org.exoplatform.services.jcr.impl.util.io.FileCleanerHolder;
import org.exoplatform.services.jcr.storage.WorkspaceStorageConnection;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
@@ -106,7 +106,7 @@
// SimpleJNDIContextInitializer.initialize(sourceName, ref);
container =
- new JDBCWorkspaceDataContainer(config, repositoryEntry, null, new StandaloneStoragePluginProvider(config, new WorkspaceFileCleanerHolder()));
+ new JDBCWorkspaceDataContainer(config, repositoryEntry, null, new StandaloneStoragePluginProvider(config, new FileCleanerHolder()));
Properties logProps = new Properties();
logProps.put("org.apache.commons.logging.simplelog.defaultlog", "debug");
15 years, 9 months
exo-jcr SVN: r3309 - kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition and 2 other directories.
by do-not-reply@jboss.org
Author: nfilotto
Date: 2010-10-21 05:40:08 -0400 (Thu, 21 Oct 2010)
New Revision: 3309
Modified:
jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinition.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionChangePlugin.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java
kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-both-settings-with-default-portal-def.xml
kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-default-portal-def.xml
kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml
kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml
kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml
kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values-but-with-portal-defs.xml
Log:
EXOJCR-1011: Now most of the value of the parameters can be set thanks to variables defined in the file loaded by the PropertyConfiguration which is by default configuration.properties in GateIn. Refer to the doc for more details
Modified: jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml
===================================================================
--- jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml 2010-10-21 09:33:22 UTC (rev 3308)
+++ jcr/trunk/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml 2010-10-21 09:40:08 UTC (rev 3309)
@@ -454,28 +454,28 @@
<tgroup cols="2">
<tbody>
<row>
- <entry>default.portal.container</entry>
+ <entry>default.portal.container (*)</entry>
<entry>The name of the default portal container. This field is
optional.</entry>
</row>
<row>
- <entry>default.rest.context</entry>
+ <entry>default.rest.context (*)</entry>
<entry>The name of the default rest
<envar>ServletContext</envar>. This field is optional.</entry>
</row>
<row>
- <entry>default.realm.name</entry>
+ <entry>default.realm.name (*)</entry>
<entry>The name of the default realm. This field is
optional.</entry>
</row>
<row>
- <entry>ignore.unregistered.webapp</entry>
+ <entry>ignore.unregistered.webapp (*)</entry>
<entry>Indicates whether the unregistered webapps have to be
ignored. If a webapp has not been registered as a dependency
@@ -510,6 +510,15 @@
</tgroup>
</table>
+ <note>
+ <para>All the value of the parameters marked with a (*) can be
+ defined thanks to System properties like any values in configuration
+ files but also thanks to variables loaded by the
+ <emphasis>PropertyConfigurator</emphasis>. For example in GateIn by
+ default, it would be all the variables defined in the file
+ <emphasis>configuration.properties</emphasis>.</para>
+ </note>
+
<para>A new <envar>PortalContainerDefinition</envar> can be defined at
the <envar>RootContainer</envar> level thanks to an external plugin,
see an example below:<programlisting> <external-component-plugins>
@@ -615,14 +624,14 @@
<tgroup cols="2">
<tbody>
<row>
- <entry>name</entry>
+ <entry>name (*)</entry>
<entry>The name of the portal container. This field is
mandatory .</entry>
</row>
<row>
- <entry>restContextName</entry>
+ <entry>restContextName (*)</entry>
<entry>The name of the context name of the rest web
application. This field is optional. The default value will be
@@ -631,7 +640,7 @@
</row>
<row>
- <entry>realmName</entry>
+ <entry>realmName (*)</entry>
<entry>The name of the realm. This field is optional. The
default value will be defined at the
@@ -757,7 +766,7 @@
<tgroup cols="2">
<tbody>
<row>
- <entry>name</entry>
+ <entry>name (*)</entry>
<entry>The name of the portal container. This field is
optional. The default portal name will be:<orderedlist>
@@ -783,7 +792,7 @@
</row>
<row>
- <entry>restContextName</entry>
+ <entry>restContextName (*)</entry>
<entry>The name of the context name of the rest web
application. This field is optional. The default value wil
@@ -810,7 +819,7 @@
</row>
<row>
- <entry>realmName</entry>
+ <entry>realmName (*)</entry>
<entry>The name of the realm. This field is optional. The
default value wil be:<orderedlist>
@@ -891,6 +900,15 @@
</tgroup>
</table>
+ <note>
+ <para>All the value of the parameters marked with a (*) can be
+ defined thanks to System properties like any values in configuration
+ files but also thanks to variables loaded by the
+ <emphasis>PropertyConfigurator</emphasis>. For example in GateIn by
+ default, it would be all the variables defined in the file
+ <emphasis>configuration.properties</emphasis>.</para>
+ </note>
+
<para>Internal and external settings are both optional, but if we give
a non empty value for both the application will merge the settings. If
the same setting name exists in both settings, we apply the following
@@ -1102,7 +1120,7 @@
<tgroup cols="2">
<tbody>
<row>
- <entry>apply.all</entry>
+ <entry>apply.all (*)</entry>
<entry>Indicates whether the changes have to be applied to all
the portal containers or not. The default value of this field
@@ -1111,7 +1129,7 @@
</row>
<row>
- <entry>apply.default</entry>
+ <entry>apply.default (*)</entry>
<entry>Indicates whether the changes have to be applied to the
default portal container or not. The default value of this
@@ -1120,7 +1138,7 @@
</row>
<row>
- <entry>apply.specific</entry>
+ <entry>apply.specific (*)</entry>
<entry>A set of specific portal container names to which we
want to apply the changes. This field is a
@@ -1143,6 +1161,15 @@
</tgroup>
</table>
+ <note>
+ <para>All the value of the parameters marked with a (*) can be
+ defined thanks to System properties like any values in configuration
+ files but also thanks to variables loaded by the
+ <emphasis>PropertyConfigurator</emphasis>. For example in GateIn by
+ default, it would be all the variables defined in the file
+ <emphasis>configuration.properties</emphasis>.</para>
+ </note>
+
<para>To identify the portal containers to which the changes have to
be applied, we use the follwing algorithm:</para>
@@ -1534,7 +1561,7 @@
<tgroup cols="2">
<tbody>
<row>
- <entry>names</entry>
+ <entry>names (*)</entry>
<entry>The list of the name of the portal containers to
disable.</entry>
@@ -1543,6 +1570,15 @@
</tgroup>
</table>
+ <note>
+ <para>All the value of the parameters marked with a (*) can be
+ defined thanks to System properties like any values in configuration
+ files but also thanks to variables loaded by the
+ <emphasis>PropertyConfigurator</emphasis>. For example in GateIn by
+ default, it would be all the variables defined in the file
+ <emphasis>configuration.properties</emphasis>.</para>
+ </note>
+
<para>To prevent any accesses to a web application corresponding to
<envar>PortalContainer</envar> that has been disabled, you need to
make sure that the following Http Filter (or a sub class of it) has
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java 2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java 2010-10-21 09:40:08 UTC (rev 3309)
@@ -205,8 +205,10 @@
this.serverInfo = serverInfo;
this.defaultDefinition = create(params);
this.ignoreUnregisteredWebapp =
- params != null && params.getValueParam("ignore.unregistered.webapp") != null
- && Boolean.valueOf(params.getValueParam("ignore.unregistered.webapp").getValue());
+ params != null
+ && params.getValueParam("ignore.unregistered.webapp") != null
+ && Boolean.valueOf(Deserializer.resolveVariables(params.getValueParam("ignore.unregistered.webapp")
+ .getValue()));
}
/**
@@ -266,7 +268,7 @@
if (vp != null && vp.getValue().trim().length() > 0)
{
// A realm name has been defined in the value parameter, thus we use it
- def.setRealmName(vp.getValue().trim());
+ def.setRealmName(Deserializer.resolveVariables(vp.getValue().trim()));
}
}
else
@@ -294,7 +296,7 @@
if (vp != null && vp.getValue().trim().length() > 0)
{
// A rest context name has been defined in the value parameter, thus we use it
- def.setRestContextName(vp.getValue().trim());
+ def.setRestContextName(Deserializer.resolveVariables(vp.getValue().trim()));
}
}
else
@@ -322,7 +324,7 @@
if (vp != null && vp.getValue().trim().length() > 0)
{
// A name has been defined in the value parameter, thus we use it
- def.setName(vp.getValue().trim());
+ def.setName(Deserializer.resolveVariables(vp.getValue().trim()));
}
}
else
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinition.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinition.java 2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinition.java 2010-10-21 09:40:08 UTC (rev 3309)
@@ -19,9 +19,11 @@
package org.exoplatform.container.definition;
import org.exoplatform.container.PortalContainer;
+import org.exoplatform.container.xml.Deserializer;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
import javax.servlet.ServletContext;
@@ -39,6 +41,11 @@
{
/**
+ * Indicates whether the current instance has been initialized
+ */
+ private final AtomicBoolean initialized = new AtomicBoolean();
+
+ /**
* The name of the related {@link PortalContainer}
*/
private String name;
@@ -72,6 +79,7 @@
public String getName()
{
+ init();
return name;
}
@@ -92,6 +100,7 @@
public String getRealmName()
{
+ init();
return realmName;
}
@@ -102,6 +111,7 @@
public String getRestContextName()
{
+ init();
return restContextName;
}
@@ -129,4 +139,26 @@
{
this.externalSettingsPath = externalSettingsPath;
}
+
+ /**
+ * Ensure that all the parameter values have been resolved in order to allow to
+ * use variables to define their values. It will be executed only if it has the current
+ * instance has not been initialized
+ */
+ private void init()
+ {
+ if (!initialized.get())
+ {
+ synchronized (this)
+ {
+ if (!initialized.get())
+ {
+ setName(Deserializer.resolveVariables(name));
+ setRestContextName(Deserializer.resolveVariables(restContextName));
+ setRealmName(Deserializer.resolveVariables(realmName));
+ initialized.set(true);
+ }
+ }
+ }
+ }
}
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionChangePlugin.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionChangePlugin.java 2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionChangePlugin.java 2010-10-21 09:40:08 UTC (rev 3309)
@@ -17,6 +17,7 @@
package org.exoplatform.container.definition;
import org.exoplatform.container.component.BaseComponentPlugin;
+import org.exoplatform.container.xml.Deserializer;
import org.exoplatform.container.xml.InitParams;
import org.exoplatform.container.xml.ValueParam;
import org.exoplatform.container.xml.ValuesParam;
@@ -62,17 +63,22 @@
ValueParam vp = params.getValueParam("apply.all");
if (vp != null && vp.getValue().length() > 0)
{
- this.all = Boolean.valueOf(vp.getValue());
+ this.all = Boolean.valueOf(Deserializer.resolveVariables(vp.getValue()));
}
vp = params.getValueParam("apply.default");
if (vp != null && vp.getValue().length() > 0)
{
- this.bDefault = Boolean.valueOf(vp.getValue());
+ this.bDefault = Boolean.valueOf(Deserializer.resolveVariables(vp.getValue()));
}
ValuesParam vsp = params.getValuesParam("apply.specific");
if (vsp != null && !vsp.getValues().isEmpty())
{
- this.names = new HashSet<String>(vsp.getValues());
+ this.names = new HashSet<String>(vsp.getValues().size());
+ List<String> lnames = vsp.getValues();
+ for (String name : lnames)
+ {
+ names.add(Deserializer.resolveVariables(name));
+ }
}
this.changes = params.getObjectParamValues(PortalContainerDefinitionChange.class);
}
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java 2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java 2010-10-21 09:40:08 UTC (rev 3309)
@@ -17,10 +17,12 @@
package org.exoplatform.container.definition;
import org.exoplatform.container.component.BaseComponentPlugin;
+import org.exoplatform.container.xml.Deserializer;
import org.exoplatform.container.xml.InitParams;
import org.exoplatform.container.xml.ValuesParam;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
/**
@@ -45,7 +47,12 @@
ValuesParam vsp = params.getValuesParam("names");
if (vsp != null && !vsp.getValues().isEmpty())
{
- this.names = new HashSet<String>(vsp.getValues());
+ this.names = new HashSet<String>(vsp.getValues().size());
+ List<String> lnames = vsp.getValues();
+ for (String name : lnames)
+ {
+ names.add(Deserializer.resolveVariables(name));
+ }
}
}
Modified: kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java 2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java 2010-10-21 09:40:08 UTC (rev 3309)
@@ -16,6 +16,7 @@
*/
package org.exoplatform.container.definition;
+import org.exoplatform.commons.utils.PropertyManager;
import org.exoplatform.container.RootContainer;
import org.exoplatform.container.jmx.AbstractTestContainer;
import org.exoplatform.container.monitor.jvm.J2EEServerInfo;
@@ -64,25 +65,49 @@
assertFalse(config.isPortalContainerName("myPortal-dpcdef"));
assertFalse(config.hasDefinition());
- rootContainer =
- createRootContainer("portal-container-config-with-default-values-and-with-default-portal-def.xml");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ try
+ {
+ rootContainer =
+ createRootContainer("portal-container-config-with-default-values-and-with-default-portal-def.xml");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertEquals("myPortal-dpcdef", config.getDefaultPortalContainer());
- assertEquals("myRest-dpcdef", config.getDefaultRestContext());
- assertEquals("my-exo-domain-dpcdef", config.getDefaultRealmName());
- assertFalse(config.isPortalContainerName("portal"));
- assertFalse(config.isPortalContainerName("myPortal"));
- assertTrue(config.isPortalContainerName("myPortal-dpcdef"));
- assertFalse(config.hasDefinition());
+ assertEquals("myPortal-dpcdef", config.getDefaultPortalContainer());
+ assertEquals("myRest-dpcdef", config.getDefaultRestContext());
+ assertEquals("my-exo-domain-dpcdef", config.getDefaultRealmName());
+ assertFalse(config.isPortalContainerName("portal"));
+ assertFalse(config.isPortalContainerName("myPortal"));
+ assertTrue(config.isPortalContainerName("myPortal-dpcdef"));
+ assertFalse(config.hasDefinition());
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_default.portal.container");
+ System.getProperties().remove("_default.rest.context");
+ System.getProperties().remove("_default.realm.name");
+ System.getProperties().remove("_portal.container");
+ System.getProperties().remove("_rest.context");
+ System.getProperties().remove("_realm.name");
+ PropertyManager.refresh();
+ }
- rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ try
+ {
+ rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertEquals("myPortal", config.getDefaultPortalContainer());
- assertEquals("myRest", config.getDefaultRestContext());
- assertEquals("my-exo-domain", config.getDefaultRealmName());
- assertTrue(config.hasDefinition());
+ assertEquals("myPortal", config.getDefaultPortalContainer());
+ assertEquals("myRest", config.getDefaultRestContext());
+ assertEquals("my-exo-domain", config.getDefaultRealmName());
+ assertTrue(config.hasDefinition());
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_ignore.unregistered.webapp.true");
+ System.getProperties().remove("_ignore.unregistered.webapp.false");
+ PropertyManager.refresh();
+ }
rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-defs.xml");
config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
@@ -92,14 +117,23 @@
assertEquals("my-exo-domain", config.getDefaultRealmName());
assertTrue(config.hasDefinition());
- rootContainer =
- createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ try
+ {
+ rootContainer =
+ createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertEquals("myPortal-dpcdef", config.getDefaultPortalContainer());
- assertEquals("myRest-dpcdef", config.getDefaultRestContext());
- assertEquals("my-exo-domain-dpcdef", config.getDefaultRealmName());
- assertTrue(config.hasDefinition());
+ assertEquals("myPortal-dpcdef", config.getDefaultPortalContainer());
+ assertEquals("myRest-dpcdef", config.getDefaultRestContext());
+ assertEquals("my-exo-domain-dpcdef", config.getDefaultRealmName());
+ assertTrue(config.hasDefinition());
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
rootContainer = createRootContainer("portal-container-config-with-no-default-values-but-with-portal-def.xml");
config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
@@ -109,13 +143,22 @@
assertEquals("my-exo-domain-pcdef", config.getDefaultRealmName());
assertTrue(config.hasDefinition());
- rootContainer = createRootContainer("portal-container-config-with-no-default-values-but-with-portal-defs.xml");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ try
+ {
+ rootContainer = createRootContainer("portal-container-config-with-no-default-values-but-with-portal-defs.xml");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertEquals("portal", config.getDefaultPortalContainer());
- assertEquals("myRest", config.getDefaultRestContext());
- assertEquals("my-exo-domain", config.getDefaultRealmName());
- assertTrue(config.hasDefinition());
+ assertEquals("portal", config.getDefaultPortalContainer());
+ assertEquals("myRest", config.getDefaultRestContext());
+ assertEquals("my-exo-domain", config.getDefaultRealmName());
+ assertTrue(config.hasDefinition());
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_value.true");
+ PropertyManager.refresh();
+ }
rootContainer = createRootContainer("portal-container-config-with-no-default-values-but-with-portal-defs2.xml");
config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
@@ -165,6 +208,9 @@
finally
{
TestPortalContainerDefinitionChange.NAMES.clear();
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_value.true");
+ PropertyManager.refresh();
}
try
@@ -178,6 +224,9 @@
finally
{
TestPortalContainerDefinitionChange.NAMES.clear();
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_value.true");
+ PropertyManager.refresh();
}
}
@@ -292,123 +341,153 @@
String[] ignoreWebappProfiles = {"ignore.unregistered.webapp-default", "ignore.unregistered.webapp-false", "ignore.unregistered.webapp-true"};
for (int i = 0; i < ignoreWebappProfiles.length; i++)
{
- rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml", ignoreWebappProfiles[i]);
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertNull(config.getDependencies("foo"));
- assertNull(config.getDependencies("myPortal"));
- assertNull(config.getDependencies("myPortal-pcdef"));
- names = config.getPortalContainerNames("foo");
- if (i < ignoreWebappProfiles.length - 1)
+ try
{
- // Default behavior
+ rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml", ignoreWebappProfiles[i]);
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getDependencies("foo"));
+ assertNull(config.getDependencies("myPortal"));
+ assertNull(config.getDependencies("myPortal-pcdef"));
+ names = config.getPortalContainerNames("foo");
+ if (i < ignoreWebappProfiles.length - 1)
+ {
+ // Default behavior
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(2, names.size());
+ assertTrue(names.contains("myPortal"));
+ assertTrue(names.contains("myPortal-pcdef"));
+ assertEquals("myPortal", config.getPortalContainerName("foo"));
+ }
+ else
+ {
+ // Ignore webapp needed for EXOJCR-795
+ assertTrue(names != null && names.isEmpty());
+ assertNull(config.getPortalContainerName("foo"));
+ }
+ names = config.getPortalContainerNames("myPortal");
assertTrue(names != null && !names.isEmpty());
- assertEquals(2, names.size());
- assertTrue(names.contains("myPortal"));
- assertTrue(names.contains("myPortal-pcdef"));
- assertEquals("myPortal", config.getPortalContainerName("foo"));
+ assertEquals("myPortal", names.get(0));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals("myPortal-pcdef", names.get(0));
+ assertEquals("myPortal", config.getPortalContainerName("myPortal"));
+ assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
+ assertEquals("myRest", config.getRestContextName("foo"));
+ assertEquals("myRest", config.getRestContextName("myPortal"));
+ assertEquals("myRest-pcdef", config.getRestContextName("myPortal-pcdef"));
+ assertEquals("my-exo-domain", config.getRealmName("foo"));
+ assertEquals("my-exo-domain", config.getRealmName("myPortal"));
+ assertEquals("my-exo-domain-pcdef", config.getRealmName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("foo"));
+ assertTrue(config.isPortalContainerName("myPortal"));
+ assertTrue(config.isPortalContainerName("myPortal-pcdef"));
+ // Needed for backward compatibility
+ assertFalse(config.isScopeValid("foo", "foo"));
+ if (i < ignoreWebappProfiles.length - 1)
+ {
+ // Default behavior
+ assertTrue(config.isScopeValid("myPortal", "foo"));
+ assertTrue(config.isScopeValid("myPortal-pcdef", "foo"));
+ }
+ else
+ {
+ // Ignore webapp needed for EXOJCR-795
+ assertFalse(config.isScopeValid("myPortal", "foo"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "foo"));
+ }
+ assertTrue(config.isScopeValid("myPortal", "myPortal"));
+ assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+ assertTrue(config.hasDefinition());
}
- else
+ finally
{
- // Ignore webapp needed for EXOJCR-795
- assertTrue(names != null && names.isEmpty());
- assertNull(config.getPortalContainerName("foo"));
- }
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_ignore.unregistered.webapp.true");
+ System.getProperties().remove("_ignore.unregistered.webapp.false");
+ PropertyManager.refresh();
+ }
+ }
+
+ try
+ {
+ // Unregister the portal container
+ rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml", "disable-pc");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getPortalContainerName("myPortal-pcdef"));
+ assertEquals("myPortal", config.getPortalContainerName("myPortal"));
+ assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+ assertTrue(config.isPortalContainerName("myPortal"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
+ assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
+ assertTrue(config.isScopeValid("myPortal", "myPortal"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && names.isEmpty());
names = config.getPortalContainerNames("myPortal");
assertTrue(names != null && !names.isEmpty());
- assertEquals("myPortal", names.get(0));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && !names.isEmpty());
- assertEquals("myPortal-pcdef", names.get(0));
- assertEquals("myPortal", config.getPortalContainerName("myPortal"));
+ assertEquals(1, names.size());
+ assertTrue(names.contains("myPortal"));
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_ignore.unregistered.webapp.true");
+ System.getProperties().remove("_ignore.unregistered.webapp.false");
+ PropertyManager.refresh();
+ }
+ try
+ {
+ // Unregister the default portal container
+ rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml", "disable-pc2");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
- assertEquals("myRest", config.getRestContextName("foo"));
- assertEquals("myRest", config.getRestContextName("myPortal"));
- assertEquals("myRest-pcdef", config.getRestContextName("myPortal-pcdef"));
- assertEquals("my-exo-domain", config.getRealmName("foo"));
- assertEquals("my-exo-domain", config.getRealmName("myPortal"));
- assertEquals("my-exo-domain-pcdef", config.getRealmName("myPortal-pcdef"));
- assertFalse(config.isPortalContainerName("foo"));
- assertTrue(config.isPortalContainerName("myPortal"));
+ assertNull(config.getPortalContainerName("myPortal"));
assertTrue(config.isPortalContainerName("myPortal-pcdef"));
- // Needed for backward compatibility
- assertFalse(config.isScopeValid("foo", "foo"));
- if (i < ignoreWebappProfiles.length - 1)
- {
- // Default behavior
- assertTrue(config.isScopeValid("myPortal", "foo"));
- assertTrue(config.isScopeValid("myPortal-pcdef", "foo"));
- }
- else
- {
- // Ignore webapp needed for EXOJCR-795
- assertFalse(config.isScopeValid("myPortal", "foo"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "foo"));
- }
- assertTrue(config.isScopeValid("myPortal", "myPortal"));
+ assertFalse(config.isPortalContainerName("myPortal"));
assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
- assertTrue(config.hasDefinition());
+ assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
+ assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal", "myPortal"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(1, names.size());
+ assertTrue(names.contains("myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal");
+ assertTrue(names != null && names.isEmpty());
+ config.disablePortalContainer("myPortal-pcdef");
+ assertNull(config.getPortalContainerName("myPortal-pcdef"));
+ assertNull(config.getPortalContainerName("myPortal"));
+ assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("myPortal"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
+ assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal", "myPortal"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && names.isEmpty());
+ names = config.getPortalContainerNames("myPortal");
+ assertTrue(names != null && names.isEmpty());
+ config.registerPortalContainerName("myPortal-pcdef");
+ assertNull(config.getPortalContainerName("myPortal-pcdef"));
+ assertNull(config.getPortalContainerName("myPortal"));
+ assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("myPortal"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
+ assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal", "myPortal"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && names.isEmpty());
+ names = config.getPortalContainerNames("myPortal");
+ assertTrue(names != null && names.isEmpty());
}
-
- // Unregister the portal container
- rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml", "disable-pc");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertNull(config.getPortalContainerName("myPortal-pcdef"));
- assertEquals("myPortal", config.getPortalContainerName("myPortal"));
- assertFalse(config.isPortalContainerName("myPortal-pcdef"));
- assertTrue(config.isPortalContainerName("myPortal"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
- assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
- assertTrue(config.isScopeValid("myPortal", "myPortal"));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && names.isEmpty());
- names = config.getPortalContainerNames("myPortal");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(1, names.size());
- assertTrue(names.contains("myPortal"));
- // Unregister the default portal container
- rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml", "disable-pc2");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
- assertNull(config.getPortalContainerName("myPortal"));
- assertTrue(config.isPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isPortalContainerName("myPortal"));
- assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
- assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
- assertFalse(config.isScopeValid("myPortal", "myPortal"));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(1, names.size());
- assertTrue(names.contains("myPortal-pcdef"));
- names = config.getPortalContainerNames("myPortal");
- assertTrue(names != null && names.isEmpty());
- config.disablePortalContainer("myPortal-pcdef");
- assertNull(config.getPortalContainerName("myPortal-pcdef"));
- assertNull(config.getPortalContainerName("myPortal"));
- assertFalse(config.isPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isPortalContainerName("myPortal"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
- assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
- assertFalse(config.isScopeValid("myPortal", "myPortal"));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && names.isEmpty());
- names = config.getPortalContainerNames("myPortal");
- assertTrue(names != null && names.isEmpty());
- config.registerPortalContainerName("myPortal-pcdef");
- assertNull(config.getPortalContainerName("myPortal-pcdef"));
- assertNull(config.getPortalContainerName("myPortal"));
- assertFalse(config.isPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isPortalContainerName("myPortal"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
- assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
- assertFalse(config.isScopeValid("myPortal", "myPortal"));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && names.isEmpty());
- names = config.getPortalContainerNames("myPortal");
- assertTrue(names != null && names.isEmpty());
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_ignore.unregistered.webapp.true");
+ System.getProperties().remove("_ignore.unregistered.webapp.false");
+ PropertyManager.refresh();
+ }
// Without dependencies and with no portal container name
rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-empty-portal-def.xml");
@@ -447,181 +526,87 @@
assertTrue(names != null && !names.isEmpty());
assertEquals("myPortal", names.get(0));
- // Without dependencies and with no rest context name an realm name
- rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-empty-portal-def2.xml");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertNull(config.getDependencies("foo"));
- assertNull(config.getDependencies("myPortal"));
- assertNull(config.getDependencies("myPortal-pcdef"));
- names = config.getPortalContainerNames("foo");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(2, names.size());
- assertTrue(names.contains("myPortal"));
- assertTrue(names.contains("myPortal-pcdef"));
- names = config.getPortalContainerNames("myPortal");
- assertTrue(names != null && !names.isEmpty());
- assertEquals("myPortal", names.get(0));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && !names.isEmpty());
- assertEquals("myPortal-pcdef", names.get(0));
- assertEquals("myPortal", config.getPortalContainerName("foo"));
- assertEquals("myPortal", config.getPortalContainerName("myPortal"));
- assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
- assertEquals("myRest", config.getRestContextName("foo"));
- assertEquals("myRest", config.getRestContextName("myPortal"));
- assertEquals("myRest", config.getRestContextName("myPortal-pcdef"));
- assertEquals("my-exo-domain", config.getRealmName("foo"));
- assertEquals("my-exo-domain", config.getRealmName("myPortal"));
- assertEquals("my-exo-domain", config.getRealmName("myPortal-pcdef"));
- assertFalse(config.isPortalContainerName("foo"));
- assertTrue(config.isPortalContainerName("myPortal"));
- assertTrue(config.isPortalContainerName("myPortal-pcdef"));
- // Needed for backward compatibility
- assertFalse(config.isScopeValid("foo", "foo"));
- assertTrue(config.isScopeValid("myPortal", "foo"));
- assertTrue(config.isScopeValid("myPortal-pcdef", "foo"));
- assertTrue(config.isScopeValid("myPortal", "myPortal"));
- assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
- assertTrue(config.hasDefinition());
- // Unregister the portal container
- rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-empty-portal-def2.xml", "disable-pc");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertNull(config.getPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && names.isEmpty());
+ try
+ {
+ // Without dependencies and with no rest context name an realm name
+ rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-empty-portal-def2.xml");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getDependencies("foo"));
+ assertNull(config.getDependencies("myPortal"));
+ assertNull(config.getDependencies("myPortal-pcdef"));
+ names = config.getPortalContainerNames("foo");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(2, names.size());
+ assertTrue(names.contains("myPortal"));
+ assertTrue(names.contains("myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals("myPortal", names.get(0));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals("myPortal-pcdef", names.get(0));
+ assertEquals("myPortal", config.getPortalContainerName("foo"));
+ assertEquals("myPortal", config.getPortalContainerName("myPortal"));
+ assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
+ assertEquals("myRest", config.getRestContextName("foo"));
+ assertEquals("myRest", config.getRestContextName("myPortal"));
+ assertEquals("myRest", config.getRestContextName("myPortal-pcdef"));
+ assertEquals("my-exo-domain", config.getRealmName("foo"));
+ assertEquals("my-exo-domain", config.getRealmName("myPortal"));
+ assertEquals("my-exo-domain", config.getRealmName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("foo"));
+ assertTrue(config.isPortalContainerName("myPortal"));
+ assertTrue(config.isPortalContainerName("myPortal-pcdef"));
+ // Needed for backward compatibility
+ assertFalse(config.isScopeValid("foo", "foo"));
+ assertTrue(config.isScopeValid("myPortal", "foo"));
+ assertTrue(config.isScopeValid("myPortal-pcdef", "foo"));
+ assertTrue(config.isScopeValid("myPortal", "myPortal"));
+ assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+ assertTrue(config.hasDefinition());
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_default.portal.container");
+ System.getProperties().remove("_default.rest.context");
+ System.getProperties().remove("_default.realm.name");
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
+ try
+ {
+ // Unregister the portal container
+ rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-empty-portal-def2.xml", "disable-pc");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && names.isEmpty());
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_default.portal.container");
+ System.getProperties().remove("_default.rest.context");
+ System.getProperties().remove("_default.realm.name");
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
- // Without dependencies and with default portal container definition
- rootContainer =
- createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- deps = config.getDependencies("foo");
- assertNull(deps);
- deps = config.getDependencies("myPortal");
- assertNull(deps);
- deps = config.getDependencies("myPortal-pcdef");
- assertTrue(deps != null && deps.size() == 1 && deps.contains("fooX"));
- names = config.getPortalContainerNames("fooX");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(2, names.size());
- assertTrue(names.contains("myPortal-dpcdef"));
- assertTrue(names.contains("myPortal-pcdef"));
- names = config.getPortalContainerNames("foo");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(2, names.size());
- assertTrue(names.contains("myPortal-dpcdef"));
- assertTrue(names.contains("myPortal-pcdef"));
- names = config.getPortalContainerNames("myPortal");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(2, names.size());
- assertTrue(names.contains("myPortal-dpcdef"));
- assertTrue(names.contains("myPortal-pcdef"));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && !names.isEmpty());
- assertEquals("myPortal-pcdef", names.get(0));
- assertEquals("myPortal-dpcdef", config.getPortalContainerName("foo"));
- assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal"));
- assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
- assertEquals("myRest-dpcdef", config.getRestContextName("foo"));
- assertEquals("myRest-dpcdef", config.getRestContextName("myPortal"));
- assertEquals("myRest-pcdef", config.getRestContextName("myPortal-pcdef"));
- assertEquals("my-exo-domain-dpcdef", config.getRealmName("foo"));
- assertEquals("my-exo-domain-dpcdef", config.getRealmName("myPortal"));
- assertEquals("my-exo-domain-pcdef", config.getRealmName("myPortal-pcdef"));
- assertFalse(config.isPortalContainerName("foo"));
- assertFalse(config.isPortalContainerName("myPortal"));
- assertTrue(config.isPortalContainerName("myPortal-dpcdef"));
- assertTrue(config.isPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isScopeValid("foo", "fooX"));
- assertFalse(config.isScopeValid("myPortal", "fooX"));
- assertTrue(config.isScopeValid("myPortal-dpcdef", "fooX"));
- assertTrue(config.isScopeValid("myPortal-pcdef", "fooX"));
- assertTrue(config.hasDefinition());
- // Unregister the portal container
- rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml", "disable-pc");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertEquals("myPortal-dpcdef", config.getPortalContainerName("foo"));
- assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal"));
- assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal-dpcdef"));
- assertNull(config.getPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isPortalContainerName("foo"));
- assertFalse(config.isPortalContainerName("myPortal"));
- assertTrue(config.isPortalContainerName("myPortal-dpcdef"));
- assertFalse(config.isPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isScopeValid("foo", "fooX"));
- assertFalse(config.isScopeValid("myPortal", "fooX"));
- assertTrue(config.isScopeValid("myPortal-dpcdef", "fooX"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "fooX"));
- assertTrue(config.isScopeValid("myPortal-dpcdef", "myPortal-dpcdef"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && names.isEmpty());
- names = config.getPortalContainerNames("myPortal-dpcdef");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(1, names.size());
- assertTrue(names.contains("myPortal-dpcdef"));
- names = config.getPortalContainerNames("fooX");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(1, names.size());
- assertTrue(names.contains("myPortal-dpcdef"));
- // Unregister the default portal container
- rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml", "disable-pc2");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertEquals("myPortal-pcdef", config.getPortalContainerName("foo"));
- assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal"));
- assertNull(config.getPortalContainerName("myPortal-dpcdef"));
- assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isPortalContainerName("foo"));
- assertFalse(config.isPortalContainerName("myPortal"));
- assertFalse(config.isPortalContainerName("myPortal-dpcdef"));
- assertTrue(config.isPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isScopeValid("foo", "fooX"));
- assertFalse(config.isScopeValid("myPortal", "fooX"));
- assertFalse(config.isScopeValid("myPortal-dpcdef", "fooX"));
- assertTrue(config.isScopeValid("myPortal-pcdef", "fooX"));
- assertFalse(config.isScopeValid("myPortal-dpcdef", "myPortal-dpcdef"));
- assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(1, names.size());
- assertTrue(names.contains("myPortal-pcdef"));
- names = config.getPortalContainerNames("myPortal-dpcdef");
- assertTrue(names != null && names.isEmpty());
- names = config.getPortalContainerNames("fooX");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(1, names.size());
- assertTrue(names.contains("myPortal-pcdef"));
-
- profiles =
- new String[]{"AddDependencies", "AddDependenciesBefore-No-Target", "AddDependenciesBefore-With-Fake-Target",
- "AddDependenciesBefore-With-Target", "AddDependenciesAfter-No-Target",
- "AddDependenciesAfter-With-Fake-Target", "AddDependenciesAfter-With-Target"};
-
- for (String profile : profiles)
+ try
{
+ // Without dependencies and with default portal container definition
rootContainer =
- createRootContainer(
- "portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml",
- "with-profiles", profile);
+ createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml");
config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
deps = config.getDependencies("foo");
assertNull(deps);
deps = config.getDependencies("myPortal");
assertNull(deps);
deps = config.getDependencies("myPortal-pcdef");
- assertTrue(deps != null && deps.size() == 2 && deps.contains("fooX") && deps.contains("foo"));
- int index = deps.indexOf("foo");
- if (profile.equals("AddDependenciesBefore-No-Target")
- || profile.equals("AddDependenciesBefore-With-Fake-Target")
- || profile.equals("AddDependenciesBefore-With-Target"))
- {
- assertEquals(0, index);
- }
- else
- {
- assertEquals(1, index);
- }
+ assertTrue(deps != null && deps.size() == 1 && deps.contains("fooX"));
names = config.getPortalContainerNames("fooX");
assertTrue(names != null && !names.isEmpty());
assertEquals(2, names.size());
@@ -640,7 +625,7 @@
names = config.getPortalContainerNames("myPortal-pcdef");
assertTrue(names != null && !names.isEmpty());
assertEquals("myPortal-pcdef", names.get(0));
- assertEquals("myPortal-pcdef", config.getPortalContainerName("foo"));
+ assertEquals("myPortal-dpcdef", config.getPortalContainerName("foo"));
assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal"));
assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
assertEquals("myRest-dpcdef", config.getRestContextName("foo"));
@@ -651,15 +636,24 @@
assertEquals("my-exo-domain-pcdef", config.getRealmName("myPortal-pcdef"));
assertFalse(config.isPortalContainerName("foo"));
assertFalse(config.isPortalContainerName("myPortal"));
+ assertTrue(config.isPortalContainerName("myPortal-dpcdef"));
assertTrue(config.isPortalContainerName("myPortal-pcdef"));
assertFalse(config.isScopeValid("foo", "fooX"));
assertFalse(config.isScopeValid("myPortal", "fooX"));
+ assertTrue(config.isScopeValid("myPortal-dpcdef", "fooX"));
assertTrue(config.isScopeValid("myPortal-pcdef", "fooX"));
assertTrue(config.hasDefinition());
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
+ try
+ {
// Unregister the portal container
- rootContainer = createRootContainer(
- "portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml",
- "with-profiles", profile, "disable-pc");
+ rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml", "disable-pc");
config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
assertEquals("myPortal-dpcdef", config.getPortalContainerName("foo"));
assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal"));
@@ -681,18 +675,21 @@
assertTrue(names != null && !names.isEmpty());
assertEquals(1, names.size());
assertTrue(names.contains("myPortal-dpcdef"));
- names = config.getPortalContainerNames("foo");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(1, names.size());
- assertTrue(names.contains("myPortal-dpcdef"));
names = config.getPortalContainerNames("fooX");
assertTrue(names != null && !names.isEmpty());
assertEquals(1, names.size());
assertTrue(names.contains("myPortal-dpcdef"));
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
+ try
+ {
// Unregister the default portal container
- rootContainer = createRootContainer(
- "portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml",
- "with-profiles", profile, "disable-pc2");
+ rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml", "disable-pc2");
config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
assertEquals("myPortal-pcdef", config.getPortalContainerName("foo"));
assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal"));
@@ -713,17 +710,177 @@
assertEquals(1, names.size());
assertTrue(names.contains("myPortal-pcdef"));
names = config.getPortalContainerNames("myPortal-dpcdef");
- assertTrue(names != null && names.isEmpty());
- names = config.getPortalContainerNames("foo");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(1, names.size());
- assertTrue(names.contains("myPortal-pcdef"));
+ assertTrue(names != null && names.isEmpty());
names = config.getPortalContainerNames("fooX");
assertTrue(names != null && !names.isEmpty());
assertEquals(1, names.size());
- assertTrue(names.contains("myPortal-pcdef"));
+ assertTrue(names.contains("myPortal-pcdef"));
}
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
+
+ profiles =
+ new String[]{"AddDependencies", "AddDependenciesBefore-No-Target", "AddDependenciesBefore-With-Fake-Target",
+ "AddDependenciesBefore-With-Target", "AddDependenciesAfter-No-Target",
+ "AddDependenciesAfter-With-Fake-Target", "AddDependenciesAfter-With-Target"};
+ for (String profile : profiles)
+ {
+ try
+ {
+ rootContainer =
+ createRootContainer(
+ "portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml",
+ "with-profiles", profile);
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ deps = config.getDependencies("foo");
+ assertNull(deps);
+ deps = config.getDependencies("myPortal");
+ assertNull(deps);
+ deps = config.getDependencies("myPortal-pcdef");
+ assertTrue(deps != null && deps.size() == 2 && deps.contains("fooX") && deps.contains("foo"));
+ int index = deps.indexOf("foo");
+ if (profile.equals("AddDependenciesBefore-No-Target")
+ || profile.equals("AddDependenciesBefore-With-Fake-Target")
+ || profile.equals("AddDependenciesBefore-With-Target"))
+ {
+ assertEquals(0, index);
+ }
+ else
+ {
+ assertEquals(1, index);
+ }
+ names = config.getPortalContainerNames("fooX");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(2, names.size());
+ assertTrue(names.contains("myPortal-dpcdef"));
+ assertTrue(names.contains("myPortal-pcdef"));
+ names = config.getPortalContainerNames("foo");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(2, names.size());
+ assertTrue(names.contains("myPortal-dpcdef"));
+ assertTrue(names.contains("myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(2, names.size());
+ assertTrue(names.contains("myPortal-dpcdef"));
+ assertTrue(names.contains("myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals("myPortal-pcdef", names.get(0));
+ assertEquals("myPortal-pcdef", config.getPortalContainerName("foo"));
+ assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal"));
+ assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
+ assertEquals("myRest-dpcdef", config.getRestContextName("foo"));
+ assertEquals("myRest-dpcdef", config.getRestContextName("myPortal"));
+ assertEquals("myRest-pcdef", config.getRestContextName("myPortal-pcdef"));
+ assertEquals("my-exo-domain-dpcdef", config.getRealmName("foo"));
+ assertEquals("my-exo-domain-dpcdef", config.getRealmName("myPortal"));
+ assertEquals("my-exo-domain-pcdef", config.getRealmName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("foo"));
+ assertFalse(config.isPortalContainerName("myPortal"));
+ assertTrue(config.isPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isScopeValid("foo", "fooX"));
+ assertFalse(config.isScopeValid("myPortal", "fooX"));
+ assertTrue(config.isScopeValid("myPortal-pcdef", "fooX"));
+ assertTrue(config.hasDefinition());
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
+ try
+ {
+ // Unregister the portal container
+ rootContainer = createRootContainer(
+ "portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml",
+ "with-profiles", profile, "disable-pc");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertEquals("myPortal-dpcdef", config.getPortalContainerName("foo"));
+ assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal"));
+ assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal-dpcdef"));
+ assertNull(config.getPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("foo"));
+ assertFalse(config.isPortalContainerName("myPortal"));
+ assertTrue(config.isPortalContainerName("myPortal-dpcdef"));
+ assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isScopeValid("foo", "fooX"));
+ assertFalse(config.isScopeValid("myPortal", "fooX"));
+ assertTrue(config.isScopeValid("myPortal-dpcdef", "fooX"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "fooX"));
+ assertTrue(config.isScopeValid("myPortal-dpcdef", "myPortal-dpcdef"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && names.isEmpty());
+ names = config.getPortalContainerNames("myPortal-dpcdef");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(1, names.size());
+ assertTrue(names.contains("myPortal-dpcdef"));
+ names = config.getPortalContainerNames("foo");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(1, names.size());
+ assertTrue(names.contains("myPortal-dpcdef"));
+ names = config.getPortalContainerNames("fooX");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(1, names.size());
+ assertTrue(names.contains("myPortal-dpcdef"));
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
+ try
+ {
+ // Unregister the default portal container
+ rootContainer = createRootContainer(
+ "portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml",
+ "with-profiles", profile, "disable-pc2");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertEquals("myPortal-pcdef", config.getPortalContainerName("foo"));
+ assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal"));
+ assertNull(config.getPortalContainerName("myPortal-dpcdef"));
+ assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("foo"));
+ assertFalse(config.isPortalContainerName("myPortal"));
+ assertFalse(config.isPortalContainerName("myPortal-dpcdef"));
+ assertTrue(config.isPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isScopeValid("foo", "fooX"));
+ assertFalse(config.isScopeValid("myPortal", "fooX"));
+ assertFalse(config.isScopeValid("myPortal-dpcdef", "fooX"));
+ assertTrue(config.isScopeValid("myPortal-pcdef", "fooX"));
+ assertFalse(config.isScopeValid("myPortal-dpcdef", "myPortal-dpcdef"));
+ assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(1, names.size());
+ assertTrue(names.contains("myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal-dpcdef");
+ assertTrue(names != null && names.isEmpty());
+ names = config.getPortalContainerNames("foo");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(1, names.size());
+ assertTrue(names.contains("myPortal-pcdef"));
+ names = config.getPortalContainerNames("fooX");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(1, names.size());
+ assertTrue(names.contains("myPortal-pcdef"));
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
+ }
+
// With dependencies
rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def2.xml");
config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
@@ -1025,76 +1182,109 @@
assertEquals("my-exo-domain", config.getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
// Without settings, without portal definition and with default portal container definition
- rootContainer =
- createRootContainer("portal-container-config-with-default-values-and-with-default-portal-def.xml");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertNull(config.getSetting("foo", "foo"));
- assertNull(config.getSetting("myPortal", "foo"));
- assertNull(config.getSetting("myPortal-pcdef", "foo"));
- assertEquals("myPortal-dpcdef", config.getSetting("foo", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
- assertEquals("myPortal-dpcdef", config
- .getSetting("myPortal", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
- assertEquals("myPortal-dpcdef", config.getSetting("myPortal-pcdef",
- PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
- assertEquals("myRest-dpcdef", config.getSetting("foo", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
- assertEquals("myRest-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
- assertEquals("myRest-dpcdef", config
- .getSetting("myPortal-pcdef", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
- assertEquals("my-exo-domain-dpcdef", config.getSetting("foo", PortalContainerConfig.REALM_SETTING_NAME));
- assertEquals("my-exo-domain-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REALM_SETTING_NAME));
- assertEquals("my-exo-domain-dpcdef", config
- .getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
- assertEquals("value0", config.getSetting("foo", "string"));
- assertEquals(new Integer(100), config.getSetting("foo", "int"));
- assertEquals(new Long(100), config.getSetting("foo", "long"));
- assertEquals(new Double(100), config.getSetting("foo", "double"));
- assertEquals(new Boolean(false), config.getSetting("foo", "boolean"));
- assertEquals("value0", config.getSetting("myPortal", "string"));
- assertEquals(new Integer(100), config.getSetting("myPortal", "int"));
- assertEquals(new Long(100), config.getSetting("myPortal", "long"));
- assertEquals(new Double(100), config.getSetting("myPortal", "double"));
- assertEquals(new Boolean(false), config.getSetting("myPortal", "boolean"));
- assertEquals("value0", config.getSetting("myPortal-pcdef", "string"));
- assertEquals(new Integer(100), config.getSetting("myPortal-pcdef", "int"));
- assertEquals(new Long(100), config.getSetting("myPortal-pcdef", "long"));
- assertEquals(new Double(100), config.getSetting("myPortal-pcdef", "double"));
- assertEquals(new Boolean(false), config.getSetting("myPortal-pcdef", "boolean"));
+ try
+ {
+ rootContainer =
+ createRootContainer("portal-container-config-with-default-values-and-with-default-portal-def.xml");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getSetting("foo", "foo"));
+ assertNull(config.getSetting("myPortal", "foo"));
+ assertNull(config.getSetting("myPortal-pcdef", "foo"));
+ assertEquals("myPortal-dpcdef", config.getSetting("foo", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+ assertEquals("myPortal-dpcdef", config
+ .getSetting("myPortal", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+ assertEquals("myPortal-dpcdef", config.getSetting("myPortal-pcdef",
+ PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+ assertEquals("myRest-dpcdef", config.getSetting("foo", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+ assertEquals("myRest-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+ assertEquals("myRest-dpcdef", config
+ .getSetting("myPortal-pcdef", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+ assertEquals("my-exo-domain-dpcdef", config.getSetting("foo", PortalContainerConfig.REALM_SETTING_NAME));
+ assertEquals("my-exo-domain-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REALM_SETTING_NAME));
+ assertEquals("my-exo-domain-dpcdef", config
+ .getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
+ assertEquals("value0", config.getSetting("foo", "string"));
+ assertEquals(new Integer(100), config.getSetting("foo", "int"));
+ assertEquals(new Long(100), config.getSetting("foo", "long"));
+ assertEquals(new Double(100), config.getSetting("foo", "double"));
+ assertEquals(new Boolean(false), config.getSetting("foo", "boolean"));
+ assertEquals("value0", config.getSetting("myPortal", "string"));
+ assertEquals(new Integer(100), config.getSetting("myPortal", "int"));
+ assertEquals(new Long(100), config.getSetting("myPortal", "long"));
+ assertEquals(new Double(100), config.getSetting("myPortal", "double"));
+ assertEquals(new Boolean(false), config.getSetting("myPortal", "boolean"));
+ assertEquals("value0", config.getSetting("myPortal-pcdef", "string"));
+ assertEquals(new Integer(100), config.getSetting("myPortal-pcdef", "int"));
+ assertEquals(new Long(100), config.getSetting("myPortal-pcdef", "long"));
+ assertEquals(new Double(100), config.getSetting("myPortal-pcdef", "double"));
+ assertEquals(new Boolean(false), config.getSetting("myPortal-pcdef", "boolean"));
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_default.portal.container");
+ System.getProperties().remove("_default.rest.context");
+ System.getProperties().remove("_default.realm.name");
+ System.getProperties().remove("_portal.container");
+ System.getProperties().remove("_rest.context");
+ System.getProperties().remove("_realm.name");
+ PropertyManager.refresh();
+ }
- // Without settings and with portal definition
- rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertNull(config.getSetting("foo", "foo"));
- assertNull(config.getSetting("myPortal", "foo"));
- assertNull(config.getSetting("myPortal-pcdef", "foo"));
- assertEquals("myPortal", config.getSetting("foo", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
- assertEquals("myPortal", config.getSetting("myPortal", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
- assertEquals("myPortal-pcdef", config.getSetting("myPortal-pcdef",
- PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
- assertEquals("myRest", config.getSetting("foo", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
- assertEquals("myRest", config.getSetting("myPortal", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
- assertEquals("myRest-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
- assertEquals("my-exo-domain", config.getSetting("foo", PortalContainerConfig.REALM_SETTING_NAME));
- assertEquals("my-exo-domain", config.getSetting("myPortal", PortalContainerConfig.REALM_SETTING_NAME));
- assertEquals("my-exo-domain-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
+ try
+ {
+ // Without settings and with portal definition
+ rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getSetting("foo", "foo"));
+ assertNull(config.getSetting("myPortal", "foo"));
+ assertNull(config.getSetting("myPortal-pcdef", "foo"));
+ assertEquals("myPortal", config.getSetting("foo", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+ assertEquals("myPortal", config.getSetting("myPortal", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+ assertEquals("myPortal-pcdef", config.getSetting("myPortal-pcdef",
+ PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+ assertEquals("myRest", config.getSetting("foo", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+ assertEquals("myRest", config.getSetting("myPortal", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+ assertEquals("myRest-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+ assertEquals("my-exo-domain", config.getSetting("foo", PortalContainerConfig.REALM_SETTING_NAME));
+ assertEquals("my-exo-domain", config.getSetting("myPortal", PortalContainerConfig.REALM_SETTING_NAME));
+ assertEquals("my-exo-domain-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_ignore.unregistered.webapp.true");
+ System.getProperties().remove("_ignore.unregistered.webapp.false");
+ PropertyManager.refresh();
+ }
- // Without settings, with portal definition and with default portal definition
- rootContainer =
- createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertNull(config.getSetting("foo", "foo"));
- assertNull(config.getSetting("myPortal", "foo"));
- assertNull(config.getSetting("myPortal-pcdef", "foo"));
- assertEquals("myPortal-dpcdef", config.getSetting("foo", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
- assertEquals("myPortal-dpcdef", config
- .getSetting("myPortal", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
- assertEquals("myPortal-pcdef", config.getSetting("myPortal-pcdef",
- PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
- assertEquals("myRest-dpcdef", config.getSetting("foo", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
- assertEquals("myRest-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
- assertEquals("myRest-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
- assertEquals("my-exo-domain-dpcdef", config.getSetting("foo", PortalContainerConfig.REALM_SETTING_NAME));
- assertEquals("my-exo-domain-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REALM_SETTING_NAME));
- assertEquals("my-exo-domain-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
+ try
+ {
+ // Without settings, with portal definition and with default portal definition
+ rootContainer =
+ createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getSetting("foo", "foo"));
+ assertNull(config.getSetting("myPortal", "foo"));
+ assertNull(config.getSetting("myPortal-pcdef", "foo"));
+ assertEquals("myPortal-dpcdef", config.getSetting("foo", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+ assertEquals("myPortal-dpcdef", config
+ .getSetting("myPortal", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+ assertEquals("myPortal-pcdef", config.getSetting("myPortal-pcdef",
+ PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+ assertEquals("myRest-dpcdef", config.getSetting("foo", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+ assertEquals("myRest-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+ assertEquals("myRest-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+ assertEquals("my-exo-domain-dpcdef", config.getSetting("foo", PortalContainerConfig.REALM_SETTING_NAME));
+ assertEquals("my-exo-domain-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REALM_SETTING_NAME));
+ assertEquals("my-exo-domain-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
// With internal settings
rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-settings.xml");
@@ -1480,6 +1670,14 @@
{
System.getProperties().remove("TestPortalContainerConfig-string");
System.getProperties().remove("TestPortalContainerConfig-int");
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_default.portal.container");
+ System.getProperties().remove("_default.rest.context");
+ System.getProperties().remove("_default.realm.name");
+ System.getProperties().remove("_portal.container");
+ System.getProperties().remove("_rest.context");
+ System.getProperties().remove("_realm.name");
+ PropertyManager.refresh();
}
// With both settings internal and external, and with invalid values
Modified: kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-both-settings-with-default-portal-def.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-both-settings-with-default-portal-def.xml 2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-both-settings-with-default-portal-def.xml 2010-10-21 09:40:08 UTC (rev 3309)
@@ -16,17 +16,17 @@
<!-- The name of the default portal container -->
<value-param>
<name>default.portal.container</name>
- <value>myPortal</value>
+ <value>${_default.portal.container}</value>
</value-param>
<!-- The name of the default rest ServletContext -->
<value-param>
<name>default.rest.context</name>
- <value>myRest</value>
+ <value>${_default.rest.context}</value>
</value-param>
<!-- The name of the default realm -->
<value-param>
<name>default.realm.name</name>
- <value>my-exo-domain</value>
+ <value>${_default.realm.name}</value>
</value-param>
<!-- The default portal container definition -->
<!-- It cans be used to avoid duplicating configuration -->
@@ -142,6 +142,12 @@
<name>properties</name>
<property name="property_String" value="property_value_1" />
<property name="property_Int" value="60" />
+ <property name="_default.portal.container" value="myPortal" />
+ <property name="_default.rest.context" value="myRest" />
+ <property name="_default.realm.name" value="my-exo-domain" />
+ <property name="_portal.container" value="myPortal-pcdef" />
+ <property name="_rest.context" value="myRest-pcdef" />
+ <property name="_realm.name" value="my-exo-domain-pcdef" />
</properties-param>
</init-params>
</component>
@@ -161,15 +167,15 @@
<object type="org.exoplatform.container.definition.PortalContainerDefinition">
<!-- The name of the portal container -->
<field name="name">
- <string>myPortal-pcdef</string>
+ <string>${_portal.container}</string>
</field>
<!-- The name of the context name of the rest web application -->
<field name="restContextName">
- <string>myRest-pcdef</string>
+ <string>${_rest.context}</string>
</field>
<!-- The name of the realm -->
<field name="realmName">
- <string>my-exo-domain-pcdef</string>
+ <string>${_realm.name}</string>
</field>
<!-- A map of settings tied to the portal container -->
<field name="settings">
Modified: kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-default-portal-def.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-default-portal-def.xml 2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-default-portal-def.xml 2010-10-21 09:40:08 UTC (rev 3309)
@@ -16,17 +16,17 @@
<!-- The name of the default portal container -->
<value-param>
<name>default.portal.container</name>
- <value>myPortal</value>
+ <value>${_default.portal.container}</value>
</value-param>
<!-- The name of the default rest ServletContext -->
<value-param>
<name>default.rest.context</name>
- <value>myRest</value>
+ <value>${_default.rest.context}</value>
</value-param>
<!-- The name of the default realm -->
<value-param>
<name>default.realm.name</name>
- <value>my-exo-domain</value>
+ <value>${_default.realm.name}</value>
</value-param>
<!-- The default portal container definition -->
<!-- It cans be used to avoid duplicating configuration -->
@@ -37,19 +37,19 @@
<!-- If this value is not null, it will replace the value defined
by the value-param "default.portal.container" -->
<field name="name">
- <string>myPortal-dpcdef</string>
+ <string>${_portal.container}</string>
</field>
<!-- The name of the context name of the rest web application -->
<!-- If this value is not null, it will replace the value defined
by the value-param "default.rest.context" -->
<field name="restContextName">
- <string>myRest-dpcdef</string>
+ <string>${_rest.context}</string>
</field>
<!-- The name of the realm -->
<!-- If this value is not null, it will replace the value defined
by the value-param "default.realm.name" -->
<field name="realmName">
- <string>my-exo-domain-dpcdef</string>
+ <string>${_realm.name}</string>
</field>
<!-- A map of settings tied to the default portal container -->
<field name="settings">
@@ -100,4 +100,19 @@
</object-param>
</init-params>
</component>
+ <component>
+ <key>PropertyManagerConfigurator</key>
+ <type>org.exoplatform.container.PropertyConfigurator</type>
+ <init-params>
+ <properties-param>
+ <name>properties</name>
+ <property name="_default.portal.container" value="myPortal" />
+ <property name="_default.rest.context" value="myRest" />
+ <property name="_default.realm.name" value="my-exo-domain" />
+ <property name="_portal.container" value="myPortal-dpcdef" />
+ <property name="_rest.context" value="myRest-dpcdef" />
+ <property name="_realm.name" value="my-exo-domain-dpcdef" />
+ </properties-param>
+ </init-params>
+ </component>
</configuration>
\ No newline at end of file
Modified: kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml 2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml 2010-10-21 09:40:08 UTC (rev 3309)
@@ -16,20 +16,33 @@
<!-- The name of the default portal container -->
<value-param>
<name>default.portal.container</name>
- <value>myPortal</value>
+ <value>${_default.portal.container}</value>
</value-param>
<!-- The name of the default rest ServletContext -->
<value-param>
<name>default.rest.context</name>
- <value>myRest</value>
+ <value>${_default.rest.context}</value>
</value-param>
<!-- The name of the default realm -->
<value-param>
<name>default.realm.name</name>
- <value>my-exo-domain</value>
+ <value>${_default.realm.name}</value>
</value-param>
</init-params>
</component>
+ <component>
+ <key>PropertyManagerConfigurator</key>
+ <type>org.exoplatform.container.PropertyConfigurator</type>
+ <init-params>
+ <properties-param>
+ <name>properties</name>
+ <property name="_default.portal.container" value="myPortal" />
+ <property name="_default.rest.context" value="myRest" />
+ <property name="_default.realm.name" value="my-exo-domain" />
+ <property name="_portal.container" value="myPortal-pcdef" />
+ </properties-param>
+ </init-params>
+ </component>
<external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
@@ -46,7 +59,7 @@
<object type="org.exoplatform.container.definition.PortalContainerDefinition">
<!-- The name of the portal container -->
<field name="name">
- <string>myPortal-pcdef</string>
+ <string>${_portal.container}</string>
</field>
</object>
</object-param>
@@ -67,7 +80,7 @@
<!-- The list of the name of the portal containers to disable -->
<values-param>
<name>names</name>
- <value>myPortal-pcdef</value>
+ <value>${_portal.container}</value>
</values-param>
</init-params>
</component-plugin>
Modified: kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml 2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml 2010-10-21 09:40:08 UTC (rev 3309)
@@ -62,6 +62,16 @@
</object-param>
</init-params>
</component>
+ <component>
+ <key>PropertyManagerConfigurator</key>
+ <type>org.exoplatform.container.PropertyConfigurator</type>
+ <init-params>
+ <properties-param>
+ <name>properties</name>
+ <property name="_portal.container" value="myPortal-pcdef" />
+ </properties-param>
+ </init-params>
+ </component>
<external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
@@ -78,7 +88,7 @@
<object type="org.exoplatform.container.definition.PortalContainerDefinition">
<!-- The name of the portal container -->
<field name="name">
- <string>myPortal-pcdef</string>
+ <string>${_portal.container}</string>
</field>
<!-- The name of the context name of the rest web application -->
<field name="restContextName">
@@ -107,7 +117,7 @@
<values-param>
<name>apply.specific</name>
<value>fake</value>
- <value>myPortal-pcdef</value>
+ <value>${_portal.container}</value>
</values-param>
<object-param profiles="AddDependencies">
<name>change</name>
@@ -233,7 +243,7 @@
<!-- The list of the name of the portal containers to disable -->
<values-param>
<name>names</name>
- <value>myPortal-pcdef</value>
+ <value>${_portal.container}</value>
</values-param>
</init-params>
</component-plugin>
Modified: kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml 2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml 2010-10-21 09:40:08 UTC (rev 3309)
@@ -31,14 +31,25 @@
<!-- Indicates whether the unregistered webapps have to be ignored -->
<value-param profiles="ignore.unregistered.webapp-false">
<name>ignore.unregistered.webapp</name>
- <value>false</value>
+ <value>${_ignore.unregistered.webapp.false}</value>
</value-param>
<value-param profiles="ignore.unregistered.webapp-true">
<name>ignore.unregistered.webapp</name>
- <value>true</value>
+ <value>${_ignore.unregistered.webapp.true}</value>
</value-param>
</init-params>
</component>
+ <component>
+ <key>PropertyManagerConfigurator</key>
+ <type>org.exoplatform.container.PropertyConfigurator</type>
+ <init-params>
+ <properties-param>
+ <name>properties</name>
+ <property name="_ignore.unregistered.webapp.true" value="true" />
+ <property name="_ignore.unregistered.webapp.false" value="false" />
+ </properties-param>
+ </init-params>
+ </component>
<external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
Modified: kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values-but-with-portal-defs.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values-but-with-portal-defs.xml 2010-10-21 09:33:22 UTC (rev 3308)
+++ kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values-but-with-portal-defs.xml 2010-10-21 09:40:08 UTC (rev 3309)
@@ -12,6 +12,16 @@
<component>
<type>org.exoplatform.container.definition.PortalContainerConfig</type>
</component>
+ <component>
+ <key>PropertyManagerConfigurator</key>
+ <type>org.exoplatform.container.PropertyConfigurator</type>
+ <init-params>
+ <properties-param>
+ <name>properties</name>
+ <property name="_value.true" value="true" />
+ </properties-param>
+ </init-params>
+ </component>
<external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
@@ -69,7 +79,7 @@
<init-params>
<value-param>
<name>apply.all</name>
- <value>true</value>
+ <value>${_value.true}</value>
</value-param>
<object-param>
<name>change1</name>
@@ -92,7 +102,7 @@
<init-params>
<value-param>
<name>apply.default</name>
- <value>true</value>
+ <value>${_value.true}</value>
</value-param>
<object-param>
<name>change2</name>
@@ -139,7 +149,7 @@
<init-params>
<value-param>
<name>apply.default</name>
- <value>true</value>
+ <value>${_value.true}</value>
</value-param>
<values-param>
<name>apply.specific</name>
15 years, 9 months
exo-jcr SVN: r3308 - kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition and 2 other directories.
by do-not-reply@jboss.org
Author: nfilotto
Date: 2010-10-21 05:33:22 -0400 (Thu, 21 Oct 2010)
New Revision: 3308
Modified:
jcr/branches/1.12.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinition.java
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionChangePlugin.java
kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java
kernel/branches/2.2.x/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-both-settings-with-default-portal-def.xml
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-default-portal-def.xml
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml
kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values-but-with-portal-defs.xml
Log:
KER-164: Now most of the parameters can be defined in the file loaded by the PropertyConfigurator which is configuration.properties in GateIn
Modified: jcr/branches/1.12.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml
===================================================================
--- jcr/branches/1.12.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml 2010-10-21 07:37:13 UTC (rev 3307)
+++ jcr/branches/1.12.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/kernel/container-configuration.xml 2010-10-21 09:33:22 UTC (rev 3308)
@@ -454,28 +454,28 @@
<tgroup cols="2">
<tbody>
<row>
- <entry>default.portal.container</entry>
+ <entry>default.portal.container (*)</entry>
<entry>The name of the default portal container. This field is
optional.</entry>
</row>
<row>
- <entry>default.rest.context</entry>
+ <entry>default.rest.context (*)</entry>
<entry>The name of the default rest
<envar>ServletContext</envar>. This field is optional.</entry>
</row>
<row>
- <entry>default.realm.name</entry>
+ <entry>default.realm.name (*)</entry>
<entry>The name of the default realm. This field is
optional.</entry>
</row>
<row>
- <entry>ignore.unregistered.webapp</entry>
+ <entry>ignore.unregistered.webapp (*)</entry>
<entry>Indicates whether the unregistered webapps have to be
ignored. If a webapp has not been registered as a dependency
@@ -510,6 +510,15 @@
</tgroup>
</table>
+ <note>
+ <para>All the value of the parameters marked with a (*) can be
+ defined thanks to System properties like any values in configuration
+ files but also thanks to variables loaded by the
+ <emphasis>PropertyConfigurator</emphasis>. For example in GateIn by
+ default, it would be all the variables defined in the file
+ <emphasis>configuration.properties</emphasis>.</para>
+ </note>
+
<para>A new <envar>PortalContainerDefinition</envar> can be defined at
the <envar>RootContainer</envar> level thanks to an external plugin,
see an example below:<programlisting> <external-component-plugins>
@@ -615,14 +624,14 @@
<tgroup cols="2">
<tbody>
<row>
- <entry>name</entry>
+ <entry>name (*)</entry>
<entry>The name of the portal container. This field is
mandatory .</entry>
</row>
<row>
- <entry>restContextName</entry>
+ <entry>restContextName (*)</entry>
<entry>The name of the context name of the rest web
application. This field is optional. The default value will be
@@ -631,7 +640,7 @@
</row>
<row>
- <entry>realmName</entry>
+ <entry>realmName (*)</entry>
<entry>The name of the realm. This field is optional. The
default value will be defined at the
@@ -757,7 +766,7 @@
<tgroup cols="2">
<tbody>
<row>
- <entry>name</entry>
+ <entry>name (*)</entry>
<entry>The name of the portal container. This field is
optional. The default portal name will be:<orderedlist>
@@ -783,7 +792,7 @@
</row>
<row>
- <entry>restContextName</entry>
+ <entry>restContextName (*)</entry>
<entry>The name of the context name of the rest web
application. This field is optional. The default value wil
@@ -810,7 +819,7 @@
</row>
<row>
- <entry>realmName</entry>
+ <entry>realmName (*)</entry>
<entry>The name of the realm. This field is optional. The
default value wil be:<orderedlist>
@@ -891,6 +900,15 @@
</tgroup>
</table>
+ <note>
+ <para>All the value of the parameters marked with a (*) can be
+ defined thanks to System properties like any values in configuration
+ files but also thanks to variables loaded by the
+ <emphasis>PropertyConfigurator</emphasis>. For example in GateIn by
+ default, it would be all the variables defined in the file
+ <emphasis>configuration.properties</emphasis>.</para>
+ </note>
+
<para>Internal and external settings are both optional, but if we give
a non empty value for both the application will merge the settings. If
the same setting name exists in both settings, we apply the following
@@ -1102,7 +1120,7 @@
<tgroup cols="2">
<tbody>
<row>
- <entry>apply.all</entry>
+ <entry>apply.all (*)</entry>
<entry>Indicates whether the changes have to be applied to all
the portal containers or not. The default value of this field
@@ -1111,7 +1129,7 @@
</row>
<row>
- <entry>apply.default</entry>
+ <entry>apply.default (*)</entry>
<entry>Indicates whether the changes have to be applied to the
default portal container or not. The default value of this
@@ -1120,7 +1138,7 @@
</row>
<row>
- <entry>apply.specific</entry>
+ <entry>apply.specific (*)</entry>
<entry>A set of specific portal container names to which we
want to apply the changes. This field is a
@@ -1143,6 +1161,15 @@
</tgroup>
</table>
+ <note>
+ <para>All the value of the parameters marked with a (*) can be
+ defined thanks to System properties like any values in configuration
+ files but also thanks to variables loaded by the
+ <emphasis>PropertyConfigurator</emphasis>. For example in GateIn by
+ default, it would be all the variables defined in the file
+ <emphasis>configuration.properties</emphasis>.</para>
+ </note>
+
<para>To identify the portal containers to which the changes have to
be applied, we use the follwing algorithm:</para>
@@ -1534,7 +1561,7 @@
<tgroup cols="2">
<tbody>
<row>
- <entry>names</entry>
+ <entry>names (*)</entry>
<entry>The list of the name of the portal containers to
disable.</entry>
@@ -1543,6 +1570,15 @@
</tgroup>
</table>
+ <note>
+ <para>All the value of the parameters marked with a (*) can be
+ defined thanks to System properties like any values in configuration
+ files but also thanks to variables loaded by the
+ <emphasis>PropertyConfigurator</emphasis>. For example in GateIn by
+ default, it would be all the variables defined in the file
+ <emphasis>configuration.properties</emphasis>.</para>
+ </note>
+
<para>To prevent any accesses to a web application corresponding to
<envar>PortalContainer</envar> that has been disabled, you need to
make sure that the following Http Filter (or a sub class of it) has
Modified: kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java 2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerConfig.java 2010-10-21 09:33:22 UTC (rev 3308)
@@ -205,8 +205,10 @@
this.serverInfo = serverInfo;
this.defaultDefinition = create(params);
this.ignoreUnregisteredWebapp =
- params != null && params.getValueParam("ignore.unregistered.webapp") != null
- && Boolean.valueOf(params.getValueParam("ignore.unregistered.webapp").getValue());
+ params != null
+ && params.getValueParam("ignore.unregistered.webapp") != null
+ && Boolean.valueOf(Deserializer.resolveVariables(params.getValueParam("ignore.unregistered.webapp")
+ .getValue()));
}
/**
@@ -266,7 +268,7 @@
if (vp != null && vp.getValue().trim().length() > 0)
{
// A realm name has been defined in the value parameter, thus we use it
- def.setRealmName(vp.getValue().trim());
+ def.setRealmName(Deserializer.resolveVariables(vp.getValue().trim()));
}
}
else
@@ -294,7 +296,7 @@
if (vp != null && vp.getValue().trim().length() > 0)
{
// A rest context name has been defined in the value parameter, thus we use it
- def.setRestContextName(vp.getValue().trim());
+ def.setRestContextName(Deserializer.resolveVariables(vp.getValue().trim()));
}
}
else
@@ -322,7 +324,7 @@
if (vp != null && vp.getValue().trim().length() > 0)
{
// A name has been defined in the value parameter, thus we use it
- def.setName(vp.getValue().trim());
+ def.setName(Deserializer.resolveVariables(vp.getValue().trim()));
}
}
else
Modified: kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinition.java
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinition.java 2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinition.java 2010-10-21 09:33:22 UTC (rev 3308)
@@ -19,9 +19,11 @@
package org.exoplatform.container.definition;
import org.exoplatform.container.PortalContainer;
+import org.exoplatform.container.xml.Deserializer;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicBoolean;
import javax.servlet.ServletContext;
@@ -39,6 +41,11 @@
{
/**
+ * Indicates whether the current instance has been initialized
+ */
+ private final AtomicBoolean initialized = new AtomicBoolean();
+
+ /**
* The name of the related {@link PortalContainer}
*/
private String name;
@@ -72,6 +79,7 @@
public String getName()
{
+ init();
return name;
}
@@ -92,6 +100,7 @@
public String getRealmName()
{
+ init();
return realmName;
}
@@ -102,6 +111,7 @@
public String getRestContextName()
{
+ init();
return restContextName;
}
@@ -129,4 +139,26 @@
{
this.externalSettingsPath = externalSettingsPath;
}
+
+ /**
+ * Ensure that all the parameter values have been resolved in order to allow to
+ * use variables to define their values. It will be executed only if it has the current
+ * instance has not been initialized
+ */
+ private void init()
+ {
+ if (!initialized.get())
+ {
+ synchronized (this)
+ {
+ if (!initialized.get())
+ {
+ setName(Deserializer.resolveVariables(name));
+ setRestContextName(Deserializer.resolveVariables(restContextName));
+ setRealmName(Deserializer.resolveVariables(realmName));
+ initialized.set(true);
+ }
+ }
+ }
+ }
}
Modified: kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionChangePlugin.java
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionChangePlugin.java 2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionChangePlugin.java 2010-10-21 09:33:22 UTC (rev 3308)
@@ -17,6 +17,7 @@
package org.exoplatform.container.definition;
import org.exoplatform.container.component.BaseComponentPlugin;
+import org.exoplatform.container.xml.Deserializer;
import org.exoplatform.container.xml.InitParams;
import org.exoplatform.container.xml.ValueParam;
import org.exoplatform.container.xml.ValuesParam;
@@ -62,17 +63,22 @@
ValueParam vp = params.getValueParam("apply.all");
if (vp != null && vp.getValue().length() > 0)
{
- this.all = Boolean.valueOf(vp.getValue());
+ this.all = Boolean.valueOf(Deserializer.resolveVariables(vp.getValue()));
}
vp = params.getValueParam("apply.default");
if (vp != null && vp.getValue().length() > 0)
{
- this.bDefault = Boolean.valueOf(vp.getValue());
+ this.bDefault = Boolean.valueOf(Deserializer.resolveVariables(vp.getValue()));
}
ValuesParam vsp = params.getValuesParam("apply.specific");
if (vsp != null && !vsp.getValues().isEmpty())
{
- this.names = new HashSet<String>(vsp.getValues());
+ this.names = new HashSet<String>(vsp.getValues().size());
+ List<String> lnames = vsp.getValues();
+ for (String name : lnames)
+ {
+ names.add(Deserializer.resolveVariables(name));
+ }
}
this.changes = params.getObjectParamValues(PortalContainerDefinitionChange.class);
}
Modified: kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java 2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/exo.kernel.container/src/main/java/org/exoplatform/container/definition/PortalContainerDefinitionDisablePlugin.java 2010-10-21 09:33:22 UTC (rev 3308)
@@ -17,10 +17,12 @@
package org.exoplatform.container.definition;
import org.exoplatform.container.component.BaseComponentPlugin;
+import org.exoplatform.container.xml.Deserializer;
import org.exoplatform.container.xml.InitParams;
import org.exoplatform.container.xml.ValuesParam;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
/**
@@ -45,7 +47,12 @@
ValuesParam vsp = params.getValuesParam("names");
if (vsp != null && !vsp.getValues().isEmpty())
{
- this.names = new HashSet<String>(vsp.getValues());
+ this.names = new HashSet<String>(vsp.getValues().size());
+ List<String> lnames = vsp.getValues();
+ for (String name : lnames)
+ {
+ names.add(Deserializer.resolveVariables(name));
+ }
}
}
Modified: kernel/branches/2.2.x/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java 2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/exo.kernel.container/src/test/java/org/exoplatform/container/definition/TestPortalContainerConfig.java 2010-10-21 09:33:22 UTC (rev 3308)
@@ -16,6 +16,7 @@
*/
package org.exoplatform.container.definition;
+import org.exoplatform.commons.utils.PropertyManager;
import org.exoplatform.container.RootContainer;
import org.exoplatform.container.jmx.AbstractTestContainer;
import org.exoplatform.container.monitor.jvm.J2EEServerInfo;
@@ -64,25 +65,49 @@
assertFalse(config.isPortalContainerName("myPortal-dpcdef"));
assertFalse(config.hasDefinition());
- rootContainer =
- createRootContainer("portal-container-config-with-default-values-and-with-default-portal-def.xml");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ try
+ {
+ rootContainer =
+ createRootContainer("portal-container-config-with-default-values-and-with-default-portal-def.xml");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertEquals("myPortal-dpcdef", config.getDefaultPortalContainer());
- assertEquals("myRest-dpcdef", config.getDefaultRestContext());
- assertEquals("my-exo-domain-dpcdef", config.getDefaultRealmName());
- assertFalse(config.isPortalContainerName("portal"));
- assertFalse(config.isPortalContainerName("myPortal"));
- assertTrue(config.isPortalContainerName("myPortal-dpcdef"));
- assertFalse(config.hasDefinition());
+ assertEquals("myPortal-dpcdef", config.getDefaultPortalContainer());
+ assertEquals("myRest-dpcdef", config.getDefaultRestContext());
+ assertEquals("my-exo-domain-dpcdef", config.getDefaultRealmName());
+ assertFalse(config.isPortalContainerName("portal"));
+ assertFalse(config.isPortalContainerName("myPortal"));
+ assertTrue(config.isPortalContainerName("myPortal-dpcdef"));
+ assertFalse(config.hasDefinition());
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_default.portal.container");
+ System.getProperties().remove("_default.rest.context");
+ System.getProperties().remove("_default.realm.name");
+ System.getProperties().remove("_portal.container");
+ System.getProperties().remove("_rest.context");
+ System.getProperties().remove("_realm.name");
+ PropertyManager.refresh();
+ }
- rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ try
+ {
+ rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertEquals("myPortal", config.getDefaultPortalContainer());
- assertEquals("myRest", config.getDefaultRestContext());
- assertEquals("my-exo-domain", config.getDefaultRealmName());
- assertTrue(config.hasDefinition());
+ assertEquals("myPortal", config.getDefaultPortalContainer());
+ assertEquals("myRest", config.getDefaultRestContext());
+ assertEquals("my-exo-domain", config.getDefaultRealmName());
+ assertTrue(config.hasDefinition());
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_ignore.unregistered.webapp.true");
+ System.getProperties().remove("_ignore.unregistered.webapp.false");
+ PropertyManager.refresh();
+ }
rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-defs.xml");
config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
@@ -92,14 +117,23 @@
assertEquals("my-exo-domain", config.getDefaultRealmName());
assertTrue(config.hasDefinition());
- rootContainer =
- createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ try
+ {
+ rootContainer =
+ createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertEquals("myPortal-dpcdef", config.getDefaultPortalContainer());
- assertEquals("myRest-dpcdef", config.getDefaultRestContext());
- assertEquals("my-exo-domain-dpcdef", config.getDefaultRealmName());
- assertTrue(config.hasDefinition());
+ assertEquals("myPortal-dpcdef", config.getDefaultPortalContainer());
+ assertEquals("myRest-dpcdef", config.getDefaultRestContext());
+ assertEquals("my-exo-domain-dpcdef", config.getDefaultRealmName());
+ assertTrue(config.hasDefinition());
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
rootContainer = createRootContainer("portal-container-config-with-no-default-values-but-with-portal-def.xml");
config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
@@ -109,13 +143,22 @@
assertEquals("my-exo-domain-pcdef", config.getDefaultRealmName());
assertTrue(config.hasDefinition());
- rootContainer = createRootContainer("portal-container-config-with-no-default-values-but-with-portal-defs.xml");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ try
+ {
+ rootContainer = createRootContainer("portal-container-config-with-no-default-values-but-with-portal-defs.xml");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertEquals("portal", config.getDefaultPortalContainer());
- assertEquals("myRest", config.getDefaultRestContext());
- assertEquals("my-exo-domain", config.getDefaultRealmName());
- assertTrue(config.hasDefinition());
+ assertEquals("portal", config.getDefaultPortalContainer());
+ assertEquals("myRest", config.getDefaultRestContext());
+ assertEquals("my-exo-domain", config.getDefaultRealmName());
+ assertTrue(config.hasDefinition());
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_value.true");
+ PropertyManager.refresh();
+ }
rootContainer = createRootContainer("portal-container-config-with-no-default-values-but-with-portal-defs2.xml");
config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
@@ -165,6 +208,9 @@
finally
{
TestPortalContainerDefinitionChange.NAMES.clear();
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_value.true");
+ PropertyManager.refresh();
}
try
@@ -178,6 +224,9 @@
finally
{
TestPortalContainerDefinitionChange.NAMES.clear();
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_value.true");
+ PropertyManager.refresh();
}
}
@@ -292,123 +341,153 @@
String[] ignoreWebappProfiles = {"ignore.unregistered.webapp-default", "ignore.unregistered.webapp-false", "ignore.unregistered.webapp-true"};
for (int i = 0; i < ignoreWebappProfiles.length; i++)
{
- rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml", ignoreWebappProfiles[i]);
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertNull(config.getDependencies("foo"));
- assertNull(config.getDependencies("myPortal"));
- assertNull(config.getDependencies("myPortal-pcdef"));
- names = config.getPortalContainerNames("foo");
- if (i < ignoreWebappProfiles.length - 1)
+ try
{
- // Default behavior
+ rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml", ignoreWebappProfiles[i]);
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getDependencies("foo"));
+ assertNull(config.getDependencies("myPortal"));
+ assertNull(config.getDependencies("myPortal-pcdef"));
+ names = config.getPortalContainerNames("foo");
+ if (i < ignoreWebappProfiles.length - 1)
+ {
+ // Default behavior
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(2, names.size());
+ assertTrue(names.contains("myPortal"));
+ assertTrue(names.contains("myPortal-pcdef"));
+ assertEquals("myPortal", config.getPortalContainerName("foo"));
+ }
+ else
+ {
+ // Ignore webapp needed for EXOJCR-795
+ assertTrue(names != null && names.isEmpty());
+ assertNull(config.getPortalContainerName("foo"));
+ }
+ names = config.getPortalContainerNames("myPortal");
assertTrue(names != null && !names.isEmpty());
- assertEquals(2, names.size());
- assertTrue(names.contains("myPortal"));
- assertTrue(names.contains("myPortal-pcdef"));
- assertEquals("myPortal", config.getPortalContainerName("foo"));
+ assertEquals("myPortal", names.get(0));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals("myPortal-pcdef", names.get(0));
+ assertEquals("myPortal", config.getPortalContainerName("myPortal"));
+ assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
+ assertEquals("myRest", config.getRestContextName("foo"));
+ assertEquals("myRest", config.getRestContextName("myPortal"));
+ assertEquals("myRest-pcdef", config.getRestContextName("myPortal-pcdef"));
+ assertEquals("my-exo-domain", config.getRealmName("foo"));
+ assertEquals("my-exo-domain", config.getRealmName("myPortal"));
+ assertEquals("my-exo-domain-pcdef", config.getRealmName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("foo"));
+ assertTrue(config.isPortalContainerName("myPortal"));
+ assertTrue(config.isPortalContainerName("myPortal-pcdef"));
+ // Needed for backward compatibility
+ assertFalse(config.isScopeValid("foo", "foo"));
+ if (i < ignoreWebappProfiles.length - 1)
+ {
+ // Default behavior
+ assertTrue(config.isScopeValid("myPortal", "foo"));
+ assertTrue(config.isScopeValid("myPortal-pcdef", "foo"));
+ }
+ else
+ {
+ // Ignore webapp needed for EXOJCR-795
+ assertFalse(config.isScopeValid("myPortal", "foo"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "foo"));
+ }
+ assertTrue(config.isScopeValid("myPortal", "myPortal"));
+ assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+ assertTrue(config.hasDefinition());
}
- else
+ finally
{
- // Ignore webapp needed for EXOJCR-795
- assertTrue(names != null && names.isEmpty());
- assertNull(config.getPortalContainerName("foo"));
- }
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_ignore.unregistered.webapp.true");
+ System.getProperties().remove("_ignore.unregistered.webapp.false");
+ PropertyManager.refresh();
+ }
+ }
+
+ try
+ {
+ // Unregister the portal container
+ rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml", "disable-pc");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getPortalContainerName("myPortal-pcdef"));
+ assertEquals("myPortal", config.getPortalContainerName("myPortal"));
+ assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+ assertTrue(config.isPortalContainerName("myPortal"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
+ assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
+ assertTrue(config.isScopeValid("myPortal", "myPortal"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && names.isEmpty());
names = config.getPortalContainerNames("myPortal");
assertTrue(names != null && !names.isEmpty());
- assertEquals("myPortal", names.get(0));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && !names.isEmpty());
- assertEquals("myPortal-pcdef", names.get(0));
- assertEquals("myPortal", config.getPortalContainerName("myPortal"));
+ assertEquals(1, names.size());
+ assertTrue(names.contains("myPortal"));
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_ignore.unregistered.webapp.true");
+ System.getProperties().remove("_ignore.unregistered.webapp.false");
+ PropertyManager.refresh();
+ }
+ try
+ {
+ // Unregister the default portal container
+ rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml", "disable-pc2");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
- assertEquals("myRest", config.getRestContextName("foo"));
- assertEquals("myRest", config.getRestContextName("myPortal"));
- assertEquals("myRest-pcdef", config.getRestContextName("myPortal-pcdef"));
- assertEquals("my-exo-domain", config.getRealmName("foo"));
- assertEquals("my-exo-domain", config.getRealmName("myPortal"));
- assertEquals("my-exo-domain-pcdef", config.getRealmName("myPortal-pcdef"));
- assertFalse(config.isPortalContainerName("foo"));
- assertTrue(config.isPortalContainerName("myPortal"));
+ assertNull(config.getPortalContainerName("myPortal"));
assertTrue(config.isPortalContainerName("myPortal-pcdef"));
- // Needed for backward compatibility
- assertFalse(config.isScopeValid("foo", "foo"));
- if (i < ignoreWebappProfiles.length - 1)
- {
- // Default behavior
- assertTrue(config.isScopeValid("myPortal", "foo"));
- assertTrue(config.isScopeValid("myPortal-pcdef", "foo"));
- }
- else
- {
- // Ignore webapp needed for EXOJCR-795
- assertFalse(config.isScopeValid("myPortal", "foo"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "foo"));
- }
- assertTrue(config.isScopeValid("myPortal", "myPortal"));
+ assertFalse(config.isPortalContainerName("myPortal"));
assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
- assertTrue(config.hasDefinition());
+ assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
+ assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal", "myPortal"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(1, names.size());
+ assertTrue(names.contains("myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal");
+ assertTrue(names != null && names.isEmpty());
+ config.disablePortalContainer("myPortal-pcdef");
+ assertNull(config.getPortalContainerName("myPortal-pcdef"));
+ assertNull(config.getPortalContainerName("myPortal"));
+ assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("myPortal"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
+ assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal", "myPortal"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && names.isEmpty());
+ names = config.getPortalContainerNames("myPortal");
+ assertTrue(names != null && names.isEmpty());
+ config.registerPortalContainerName("myPortal-pcdef");
+ assertNull(config.getPortalContainerName("myPortal-pcdef"));
+ assertNull(config.getPortalContainerName("myPortal"));
+ assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("myPortal"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
+ assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal", "myPortal"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && names.isEmpty());
+ names = config.getPortalContainerNames("myPortal");
+ assertTrue(names != null && names.isEmpty());
}
-
- // Unregister the portal container
- rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml", "disable-pc");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertNull(config.getPortalContainerName("myPortal-pcdef"));
- assertEquals("myPortal", config.getPortalContainerName("myPortal"));
- assertFalse(config.isPortalContainerName("myPortal-pcdef"));
- assertTrue(config.isPortalContainerName("myPortal"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
- assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
- assertTrue(config.isScopeValid("myPortal", "myPortal"));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && names.isEmpty());
- names = config.getPortalContainerNames("myPortal");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(1, names.size());
- assertTrue(names.contains("myPortal"));
- // Unregister the default portal container
- rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml", "disable-pc2");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
- assertNull(config.getPortalContainerName("myPortal"));
- assertTrue(config.isPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isPortalContainerName("myPortal"));
- assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
- assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
- assertFalse(config.isScopeValid("myPortal", "myPortal"));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(1, names.size());
- assertTrue(names.contains("myPortal-pcdef"));
- names = config.getPortalContainerNames("myPortal");
- assertTrue(names != null && names.isEmpty());
- config.disablePortalContainer("myPortal-pcdef");
- assertNull(config.getPortalContainerName("myPortal-pcdef"));
- assertNull(config.getPortalContainerName("myPortal"));
- assertFalse(config.isPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isPortalContainerName("myPortal"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
- assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
- assertFalse(config.isScopeValid("myPortal", "myPortal"));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && names.isEmpty());
- names = config.getPortalContainerNames("myPortal");
- assertTrue(names != null && names.isEmpty());
- config.registerPortalContainerName("myPortal-pcdef");
- assertNull(config.getPortalContainerName("myPortal-pcdef"));
- assertNull(config.getPortalContainerName("myPortal"));
- assertFalse(config.isPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isPortalContainerName("myPortal"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal"));
- assertFalse(config.isScopeValid("myPortal", "myPortal-pcdef"));
- assertFalse(config.isScopeValid("myPortal", "myPortal"));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && names.isEmpty());
- names = config.getPortalContainerNames("myPortal");
- assertTrue(names != null && names.isEmpty());
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_ignore.unregistered.webapp.true");
+ System.getProperties().remove("_ignore.unregistered.webapp.false");
+ PropertyManager.refresh();
+ }
// Without dependencies and with no portal container name
rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-empty-portal-def.xml");
@@ -447,181 +526,87 @@
assertTrue(names != null && !names.isEmpty());
assertEquals("myPortal", names.get(0));
- // Without dependencies and with no rest context name an realm name
- rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-empty-portal-def2.xml");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertNull(config.getDependencies("foo"));
- assertNull(config.getDependencies("myPortal"));
- assertNull(config.getDependencies("myPortal-pcdef"));
- names = config.getPortalContainerNames("foo");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(2, names.size());
- assertTrue(names.contains("myPortal"));
- assertTrue(names.contains("myPortal-pcdef"));
- names = config.getPortalContainerNames("myPortal");
- assertTrue(names != null && !names.isEmpty());
- assertEquals("myPortal", names.get(0));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && !names.isEmpty());
- assertEquals("myPortal-pcdef", names.get(0));
- assertEquals("myPortal", config.getPortalContainerName("foo"));
- assertEquals("myPortal", config.getPortalContainerName("myPortal"));
- assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
- assertEquals("myRest", config.getRestContextName("foo"));
- assertEquals("myRest", config.getRestContextName("myPortal"));
- assertEquals("myRest", config.getRestContextName("myPortal-pcdef"));
- assertEquals("my-exo-domain", config.getRealmName("foo"));
- assertEquals("my-exo-domain", config.getRealmName("myPortal"));
- assertEquals("my-exo-domain", config.getRealmName("myPortal-pcdef"));
- assertFalse(config.isPortalContainerName("foo"));
- assertTrue(config.isPortalContainerName("myPortal"));
- assertTrue(config.isPortalContainerName("myPortal-pcdef"));
- // Needed for backward compatibility
- assertFalse(config.isScopeValid("foo", "foo"));
- assertTrue(config.isScopeValid("myPortal", "foo"));
- assertTrue(config.isScopeValid("myPortal-pcdef", "foo"));
- assertTrue(config.isScopeValid("myPortal", "myPortal"));
- assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
- assertTrue(config.hasDefinition());
- // Unregister the portal container
- rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-empty-portal-def2.xml", "disable-pc");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertNull(config.getPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && names.isEmpty());
+ try
+ {
+ // Without dependencies and with no rest context name an realm name
+ rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-empty-portal-def2.xml");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getDependencies("foo"));
+ assertNull(config.getDependencies("myPortal"));
+ assertNull(config.getDependencies("myPortal-pcdef"));
+ names = config.getPortalContainerNames("foo");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(2, names.size());
+ assertTrue(names.contains("myPortal"));
+ assertTrue(names.contains("myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals("myPortal", names.get(0));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals("myPortal-pcdef", names.get(0));
+ assertEquals("myPortal", config.getPortalContainerName("foo"));
+ assertEquals("myPortal", config.getPortalContainerName("myPortal"));
+ assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
+ assertEquals("myRest", config.getRestContextName("foo"));
+ assertEquals("myRest", config.getRestContextName("myPortal"));
+ assertEquals("myRest", config.getRestContextName("myPortal-pcdef"));
+ assertEquals("my-exo-domain", config.getRealmName("foo"));
+ assertEquals("my-exo-domain", config.getRealmName("myPortal"));
+ assertEquals("my-exo-domain", config.getRealmName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("foo"));
+ assertTrue(config.isPortalContainerName("myPortal"));
+ assertTrue(config.isPortalContainerName("myPortal-pcdef"));
+ // Needed for backward compatibility
+ assertFalse(config.isScopeValid("foo", "foo"));
+ assertTrue(config.isScopeValid("myPortal", "foo"));
+ assertTrue(config.isScopeValid("myPortal-pcdef", "foo"));
+ assertTrue(config.isScopeValid("myPortal", "myPortal"));
+ assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+ assertTrue(config.hasDefinition());
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_default.portal.container");
+ System.getProperties().remove("_default.rest.context");
+ System.getProperties().remove("_default.realm.name");
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
+ try
+ {
+ // Unregister the portal container
+ rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-empty-portal-def2.xml", "disable-pc");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && names.isEmpty());
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_default.portal.container");
+ System.getProperties().remove("_default.rest.context");
+ System.getProperties().remove("_default.realm.name");
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
- // Without dependencies and with default portal container definition
- rootContainer =
- createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- deps = config.getDependencies("foo");
- assertNull(deps);
- deps = config.getDependencies("myPortal");
- assertNull(deps);
- deps = config.getDependencies("myPortal-pcdef");
- assertTrue(deps != null && deps.size() == 1 && deps.contains("fooX"));
- names = config.getPortalContainerNames("fooX");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(2, names.size());
- assertTrue(names.contains("myPortal-dpcdef"));
- assertTrue(names.contains("myPortal-pcdef"));
- names = config.getPortalContainerNames("foo");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(2, names.size());
- assertTrue(names.contains("myPortal-dpcdef"));
- assertTrue(names.contains("myPortal-pcdef"));
- names = config.getPortalContainerNames("myPortal");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(2, names.size());
- assertTrue(names.contains("myPortal-dpcdef"));
- assertTrue(names.contains("myPortal-pcdef"));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && !names.isEmpty());
- assertEquals("myPortal-pcdef", names.get(0));
- assertEquals("myPortal-dpcdef", config.getPortalContainerName("foo"));
- assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal"));
- assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
- assertEquals("myRest-dpcdef", config.getRestContextName("foo"));
- assertEquals("myRest-dpcdef", config.getRestContextName("myPortal"));
- assertEquals("myRest-pcdef", config.getRestContextName("myPortal-pcdef"));
- assertEquals("my-exo-domain-dpcdef", config.getRealmName("foo"));
- assertEquals("my-exo-domain-dpcdef", config.getRealmName("myPortal"));
- assertEquals("my-exo-domain-pcdef", config.getRealmName("myPortal-pcdef"));
- assertFalse(config.isPortalContainerName("foo"));
- assertFalse(config.isPortalContainerName("myPortal"));
- assertTrue(config.isPortalContainerName("myPortal-dpcdef"));
- assertTrue(config.isPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isScopeValid("foo", "fooX"));
- assertFalse(config.isScopeValid("myPortal", "fooX"));
- assertTrue(config.isScopeValid("myPortal-dpcdef", "fooX"));
- assertTrue(config.isScopeValid("myPortal-pcdef", "fooX"));
- assertTrue(config.hasDefinition());
- // Unregister the portal container
- rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml", "disable-pc");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertEquals("myPortal-dpcdef", config.getPortalContainerName("foo"));
- assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal"));
- assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal-dpcdef"));
- assertNull(config.getPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isPortalContainerName("foo"));
- assertFalse(config.isPortalContainerName("myPortal"));
- assertTrue(config.isPortalContainerName("myPortal-dpcdef"));
- assertFalse(config.isPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isScopeValid("foo", "fooX"));
- assertFalse(config.isScopeValid("myPortal", "fooX"));
- assertTrue(config.isScopeValid("myPortal-dpcdef", "fooX"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "fooX"));
- assertTrue(config.isScopeValid("myPortal-dpcdef", "myPortal-dpcdef"));
- assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && names.isEmpty());
- names = config.getPortalContainerNames("myPortal-dpcdef");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(1, names.size());
- assertTrue(names.contains("myPortal-dpcdef"));
- names = config.getPortalContainerNames("fooX");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(1, names.size());
- assertTrue(names.contains("myPortal-dpcdef"));
- // Unregister the default portal container
- rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml", "disable-pc2");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertEquals("myPortal-pcdef", config.getPortalContainerName("foo"));
- assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal"));
- assertNull(config.getPortalContainerName("myPortal-dpcdef"));
- assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isPortalContainerName("foo"));
- assertFalse(config.isPortalContainerName("myPortal"));
- assertFalse(config.isPortalContainerName("myPortal-dpcdef"));
- assertTrue(config.isPortalContainerName("myPortal-pcdef"));
- assertFalse(config.isScopeValid("foo", "fooX"));
- assertFalse(config.isScopeValid("myPortal", "fooX"));
- assertFalse(config.isScopeValid("myPortal-dpcdef", "fooX"));
- assertTrue(config.isScopeValid("myPortal-pcdef", "fooX"));
- assertFalse(config.isScopeValid("myPortal-dpcdef", "myPortal-dpcdef"));
- assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
- names = config.getPortalContainerNames("myPortal-pcdef");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(1, names.size());
- assertTrue(names.contains("myPortal-pcdef"));
- names = config.getPortalContainerNames("myPortal-dpcdef");
- assertTrue(names != null && names.isEmpty());
- names = config.getPortalContainerNames("fooX");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(1, names.size());
- assertTrue(names.contains("myPortal-pcdef"));
-
- profiles =
- new String[]{"AddDependencies", "AddDependenciesBefore-No-Target", "AddDependenciesBefore-With-Fake-Target",
- "AddDependenciesBefore-With-Target", "AddDependenciesAfter-No-Target",
- "AddDependenciesAfter-With-Fake-Target", "AddDependenciesAfter-With-Target"};
-
- for (String profile : profiles)
+ try
{
+ // Without dependencies and with default portal container definition
rootContainer =
- createRootContainer(
- "portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml",
- "with-profiles", profile);
+ createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml");
config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
deps = config.getDependencies("foo");
assertNull(deps);
deps = config.getDependencies("myPortal");
assertNull(deps);
deps = config.getDependencies("myPortal-pcdef");
- assertTrue(deps != null && deps.size() == 2 && deps.contains("fooX") && deps.contains("foo"));
- int index = deps.indexOf("foo");
- if (profile.equals("AddDependenciesBefore-No-Target")
- || profile.equals("AddDependenciesBefore-With-Fake-Target")
- || profile.equals("AddDependenciesBefore-With-Target"))
- {
- assertEquals(0, index);
- }
- else
- {
- assertEquals(1, index);
- }
+ assertTrue(deps != null && deps.size() == 1 && deps.contains("fooX"));
names = config.getPortalContainerNames("fooX");
assertTrue(names != null && !names.isEmpty());
assertEquals(2, names.size());
@@ -640,7 +625,7 @@
names = config.getPortalContainerNames("myPortal-pcdef");
assertTrue(names != null && !names.isEmpty());
assertEquals("myPortal-pcdef", names.get(0));
- assertEquals("myPortal-pcdef", config.getPortalContainerName("foo"));
+ assertEquals("myPortal-dpcdef", config.getPortalContainerName("foo"));
assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal"));
assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
assertEquals("myRest-dpcdef", config.getRestContextName("foo"));
@@ -651,15 +636,24 @@
assertEquals("my-exo-domain-pcdef", config.getRealmName("myPortal-pcdef"));
assertFalse(config.isPortalContainerName("foo"));
assertFalse(config.isPortalContainerName("myPortal"));
+ assertTrue(config.isPortalContainerName("myPortal-dpcdef"));
assertTrue(config.isPortalContainerName("myPortal-pcdef"));
assertFalse(config.isScopeValid("foo", "fooX"));
assertFalse(config.isScopeValid("myPortal", "fooX"));
+ assertTrue(config.isScopeValid("myPortal-dpcdef", "fooX"));
assertTrue(config.isScopeValid("myPortal-pcdef", "fooX"));
assertTrue(config.hasDefinition());
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
+ try
+ {
// Unregister the portal container
- rootContainer = createRootContainer(
- "portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml",
- "with-profiles", profile, "disable-pc");
+ rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml", "disable-pc");
config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
assertEquals("myPortal-dpcdef", config.getPortalContainerName("foo"));
assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal"));
@@ -681,18 +675,21 @@
assertTrue(names != null && !names.isEmpty());
assertEquals(1, names.size());
assertTrue(names.contains("myPortal-dpcdef"));
- names = config.getPortalContainerNames("foo");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(1, names.size());
- assertTrue(names.contains("myPortal-dpcdef"));
names = config.getPortalContainerNames("fooX");
assertTrue(names != null && !names.isEmpty());
assertEquals(1, names.size());
assertTrue(names.contains("myPortal-dpcdef"));
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
+ try
+ {
// Unregister the default portal container
- rootContainer = createRootContainer(
- "portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml",
- "with-profiles", profile, "disable-pc2");
+ rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml", "disable-pc2");
config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
assertEquals("myPortal-pcdef", config.getPortalContainerName("foo"));
assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal"));
@@ -713,17 +710,177 @@
assertEquals(1, names.size());
assertTrue(names.contains("myPortal-pcdef"));
names = config.getPortalContainerNames("myPortal-dpcdef");
- assertTrue(names != null && names.isEmpty());
- names = config.getPortalContainerNames("foo");
- assertTrue(names != null && !names.isEmpty());
- assertEquals(1, names.size());
- assertTrue(names.contains("myPortal-pcdef"));
+ assertTrue(names != null && names.isEmpty());
names = config.getPortalContainerNames("fooX");
assertTrue(names != null && !names.isEmpty());
assertEquals(1, names.size());
- assertTrue(names.contains("myPortal-pcdef"));
+ assertTrue(names.contains("myPortal-pcdef"));
}
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
+
+ profiles =
+ new String[]{"AddDependencies", "AddDependenciesBefore-No-Target", "AddDependenciesBefore-With-Fake-Target",
+ "AddDependenciesBefore-With-Target", "AddDependenciesAfter-No-Target",
+ "AddDependenciesAfter-With-Fake-Target", "AddDependenciesAfter-With-Target"};
+ for (String profile : profiles)
+ {
+ try
+ {
+ rootContainer =
+ createRootContainer(
+ "portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml",
+ "with-profiles", profile);
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ deps = config.getDependencies("foo");
+ assertNull(deps);
+ deps = config.getDependencies("myPortal");
+ assertNull(deps);
+ deps = config.getDependencies("myPortal-pcdef");
+ assertTrue(deps != null && deps.size() == 2 && deps.contains("fooX") && deps.contains("foo"));
+ int index = deps.indexOf("foo");
+ if (profile.equals("AddDependenciesBefore-No-Target")
+ || profile.equals("AddDependenciesBefore-With-Fake-Target")
+ || profile.equals("AddDependenciesBefore-With-Target"))
+ {
+ assertEquals(0, index);
+ }
+ else
+ {
+ assertEquals(1, index);
+ }
+ names = config.getPortalContainerNames("fooX");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(2, names.size());
+ assertTrue(names.contains("myPortal-dpcdef"));
+ assertTrue(names.contains("myPortal-pcdef"));
+ names = config.getPortalContainerNames("foo");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(2, names.size());
+ assertTrue(names.contains("myPortal-dpcdef"));
+ assertTrue(names.contains("myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(2, names.size());
+ assertTrue(names.contains("myPortal-dpcdef"));
+ assertTrue(names.contains("myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals("myPortal-pcdef", names.get(0));
+ assertEquals("myPortal-pcdef", config.getPortalContainerName("foo"));
+ assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal"));
+ assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
+ assertEquals("myRest-dpcdef", config.getRestContextName("foo"));
+ assertEquals("myRest-dpcdef", config.getRestContextName("myPortal"));
+ assertEquals("myRest-pcdef", config.getRestContextName("myPortal-pcdef"));
+ assertEquals("my-exo-domain-dpcdef", config.getRealmName("foo"));
+ assertEquals("my-exo-domain-dpcdef", config.getRealmName("myPortal"));
+ assertEquals("my-exo-domain-pcdef", config.getRealmName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("foo"));
+ assertFalse(config.isPortalContainerName("myPortal"));
+ assertTrue(config.isPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isScopeValid("foo", "fooX"));
+ assertFalse(config.isScopeValid("myPortal", "fooX"));
+ assertTrue(config.isScopeValid("myPortal-pcdef", "fooX"));
+ assertTrue(config.hasDefinition());
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
+ try
+ {
+ // Unregister the portal container
+ rootContainer = createRootContainer(
+ "portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml",
+ "with-profiles", profile, "disable-pc");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertEquals("myPortal-dpcdef", config.getPortalContainerName("foo"));
+ assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal"));
+ assertEquals("myPortal-dpcdef", config.getPortalContainerName("myPortal-dpcdef"));
+ assertNull(config.getPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("foo"));
+ assertFalse(config.isPortalContainerName("myPortal"));
+ assertTrue(config.isPortalContainerName("myPortal-dpcdef"));
+ assertFalse(config.isPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isScopeValid("foo", "fooX"));
+ assertFalse(config.isScopeValid("myPortal", "fooX"));
+ assertTrue(config.isScopeValid("myPortal-dpcdef", "fooX"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "fooX"));
+ assertTrue(config.isScopeValid("myPortal-dpcdef", "myPortal-dpcdef"));
+ assertFalse(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && names.isEmpty());
+ names = config.getPortalContainerNames("myPortal-dpcdef");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(1, names.size());
+ assertTrue(names.contains("myPortal-dpcdef"));
+ names = config.getPortalContainerNames("foo");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(1, names.size());
+ assertTrue(names.contains("myPortal-dpcdef"));
+ names = config.getPortalContainerNames("fooX");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(1, names.size());
+ assertTrue(names.contains("myPortal-dpcdef"));
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
+ try
+ {
+ // Unregister the default portal container
+ rootContainer = createRootContainer(
+ "portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml",
+ "with-profiles", profile, "disable-pc2");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertEquals("myPortal-pcdef", config.getPortalContainerName("foo"));
+ assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal"));
+ assertNull(config.getPortalContainerName("myPortal-dpcdef"));
+ assertEquals("myPortal-pcdef", config.getPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isPortalContainerName("foo"));
+ assertFalse(config.isPortalContainerName("myPortal"));
+ assertFalse(config.isPortalContainerName("myPortal-dpcdef"));
+ assertTrue(config.isPortalContainerName("myPortal-pcdef"));
+ assertFalse(config.isScopeValid("foo", "fooX"));
+ assertFalse(config.isScopeValid("myPortal", "fooX"));
+ assertFalse(config.isScopeValid("myPortal-dpcdef", "fooX"));
+ assertTrue(config.isScopeValid("myPortal-pcdef", "fooX"));
+ assertFalse(config.isScopeValid("myPortal-dpcdef", "myPortal-dpcdef"));
+ assertTrue(config.isScopeValid("myPortal-pcdef", "myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal-pcdef");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(1, names.size());
+ assertTrue(names.contains("myPortal-pcdef"));
+ names = config.getPortalContainerNames("myPortal-dpcdef");
+ assertTrue(names != null && names.isEmpty());
+ names = config.getPortalContainerNames("foo");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(1, names.size());
+ assertTrue(names.contains("myPortal-pcdef"));
+ names = config.getPortalContainerNames("fooX");
+ assertTrue(names != null && !names.isEmpty());
+ assertEquals(1, names.size());
+ assertTrue(names.contains("myPortal-pcdef"));
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
+ }
+
// With dependencies
rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def2.xml");
config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
@@ -1025,76 +1182,109 @@
assertEquals("my-exo-domain", config.getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
// Without settings, without portal definition and with default portal container definition
- rootContainer =
- createRootContainer("portal-container-config-with-default-values-and-with-default-portal-def.xml");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertNull(config.getSetting("foo", "foo"));
- assertNull(config.getSetting("myPortal", "foo"));
- assertNull(config.getSetting("myPortal-pcdef", "foo"));
- assertEquals("myPortal-dpcdef", config.getSetting("foo", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
- assertEquals("myPortal-dpcdef", config
- .getSetting("myPortal", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
- assertEquals("myPortal-dpcdef", config.getSetting("myPortal-pcdef",
- PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
- assertEquals("myRest-dpcdef", config.getSetting("foo", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
- assertEquals("myRest-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
- assertEquals("myRest-dpcdef", config
- .getSetting("myPortal-pcdef", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
- assertEquals("my-exo-domain-dpcdef", config.getSetting("foo", PortalContainerConfig.REALM_SETTING_NAME));
- assertEquals("my-exo-domain-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REALM_SETTING_NAME));
- assertEquals("my-exo-domain-dpcdef", config
- .getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
- assertEquals("value0", config.getSetting("foo", "string"));
- assertEquals(new Integer(100), config.getSetting("foo", "int"));
- assertEquals(new Long(100), config.getSetting("foo", "long"));
- assertEquals(new Double(100), config.getSetting("foo", "double"));
- assertEquals(new Boolean(false), config.getSetting("foo", "boolean"));
- assertEquals("value0", config.getSetting("myPortal", "string"));
- assertEquals(new Integer(100), config.getSetting("myPortal", "int"));
- assertEquals(new Long(100), config.getSetting("myPortal", "long"));
- assertEquals(new Double(100), config.getSetting("myPortal", "double"));
- assertEquals(new Boolean(false), config.getSetting("myPortal", "boolean"));
- assertEquals("value0", config.getSetting("myPortal-pcdef", "string"));
- assertEquals(new Integer(100), config.getSetting("myPortal-pcdef", "int"));
- assertEquals(new Long(100), config.getSetting("myPortal-pcdef", "long"));
- assertEquals(new Double(100), config.getSetting("myPortal-pcdef", "double"));
- assertEquals(new Boolean(false), config.getSetting("myPortal-pcdef", "boolean"));
+ try
+ {
+ rootContainer =
+ createRootContainer("portal-container-config-with-default-values-and-with-default-portal-def.xml");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getSetting("foo", "foo"));
+ assertNull(config.getSetting("myPortal", "foo"));
+ assertNull(config.getSetting("myPortal-pcdef", "foo"));
+ assertEquals("myPortal-dpcdef", config.getSetting("foo", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+ assertEquals("myPortal-dpcdef", config
+ .getSetting("myPortal", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+ assertEquals("myPortal-dpcdef", config.getSetting("myPortal-pcdef",
+ PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+ assertEquals("myRest-dpcdef", config.getSetting("foo", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+ assertEquals("myRest-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+ assertEquals("myRest-dpcdef", config
+ .getSetting("myPortal-pcdef", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+ assertEquals("my-exo-domain-dpcdef", config.getSetting("foo", PortalContainerConfig.REALM_SETTING_NAME));
+ assertEquals("my-exo-domain-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REALM_SETTING_NAME));
+ assertEquals("my-exo-domain-dpcdef", config
+ .getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
+ assertEquals("value0", config.getSetting("foo", "string"));
+ assertEquals(new Integer(100), config.getSetting("foo", "int"));
+ assertEquals(new Long(100), config.getSetting("foo", "long"));
+ assertEquals(new Double(100), config.getSetting("foo", "double"));
+ assertEquals(new Boolean(false), config.getSetting("foo", "boolean"));
+ assertEquals("value0", config.getSetting("myPortal", "string"));
+ assertEquals(new Integer(100), config.getSetting("myPortal", "int"));
+ assertEquals(new Long(100), config.getSetting("myPortal", "long"));
+ assertEquals(new Double(100), config.getSetting("myPortal", "double"));
+ assertEquals(new Boolean(false), config.getSetting("myPortal", "boolean"));
+ assertEquals("value0", config.getSetting("myPortal-pcdef", "string"));
+ assertEquals(new Integer(100), config.getSetting("myPortal-pcdef", "int"));
+ assertEquals(new Long(100), config.getSetting("myPortal-pcdef", "long"));
+ assertEquals(new Double(100), config.getSetting("myPortal-pcdef", "double"));
+ assertEquals(new Boolean(false), config.getSetting("myPortal-pcdef", "boolean"));
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_default.portal.container");
+ System.getProperties().remove("_default.rest.context");
+ System.getProperties().remove("_default.realm.name");
+ System.getProperties().remove("_portal.container");
+ System.getProperties().remove("_rest.context");
+ System.getProperties().remove("_realm.name");
+ PropertyManager.refresh();
+ }
- // Without settings and with portal definition
- rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertNull(config.getSetting("foo", "foo"));
- assertNull(config.getSetting("myPortal", "foo"));
- assertNull(config.getSetting("myPortal-pcdef", "foo"));
- assertEquals("myPortal", config.getSetting("foo", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
- assertEquals("myPortal", config.getSetting("myPortal", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
- assertEquals("myPortal-pcdef", config.getSetting("myPortal-pcdef",
- PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
- assertEquals("myRest", config.getSetting("foo", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
- assertEquals("myRest", config.getSetting("myPortal", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
- assertEquals("myRest-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
- assertEquals("my-exo-domain", config.getSetting("foo", PortalContainerConfig.REALM_SETTING_NAME));
- assertEquals("my-exo-domain", config.getSetting("myPortal", PortalContainerConfig.REALM_SETTING_NAME));
- assertEquals("my-exo-domain-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
+ try
+ {
+ // Without settings and with portal definition
+ rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-portal-def.xml");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getSetting("foo", "foo"));
+ assertNull(config.getSetting("myPortal", "foo"));
+ assertNull(config.getSetting("myPortal-pcdef", "foo"));
+ assertEquals("myPortal", config.getSetting("foo", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+ assertEquals("myPortal", config.getSetting("myPortal", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+ assertEquals("myPortal-pcdef", config.getSetting("myPortal-pcdef",
+ PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+ assertEquals("myRest", config.getSetting("foo", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+ assertEquals("myRest", config.getSetting("myPortal", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+ assertEquals("myRest-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+ assertEquals("my-exo-domain", config.getSetting("foo", PortalContainerConfig.REALM_SETTING_NAME));
+ assertEquals("my-exo-domain", config.getSetting("myPortal", PortalContainerConfig.REALM_SETTING_NAME));
+ assertEquals("my-exo-domain-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_ignore.unregistered.webapp.true");
+ System.getProperties().remove("_ignore.unregistered.webapp.false");
+ PropertyManager.refresh();
+ }
- // Without settings, with portal definition and with default portal definition
- rootContainer =
- createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml");
- config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
- assertNull(config.getSetting("foo", "foo"));
- assertNull(config.getSetting("myPortal", "foo"));
- assertNull(config.getSetting("myPortal-pcdef", "foo"));
- assertEquals("myPortal-dpcdef", config.getSetting("foo", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
- assertEquals("myPortal-dpcdef", config
- .getSetting("myPortal", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
- assertEquals("myPortal-pcdef", config.getSetting("myPortal-pcdef",
- PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
- assertEquals("myRest-dpcdef", config.getSetting("foo", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
- assertEquals("myRest-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
- assertEquals("myRest-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
- assertEquals("my-exo-domain-dpcdef", config.getSetting("foo", PortalContainerConfig.REALM_SETTING_NAME));
- assertEquals("my-exo-domain-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REALM_SETTING_NAME));
- assertEquals("my-exo-domain-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
+ try
+ {
+ // Without settings, with portal definition and with default portal definition
+ rootContainer =
+ createRootContainer("portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml");
+ config = (PortalContainerConfig)rootContainer.getComponentInstanceOfType(PortalContainerConfig.class);
+ assertNull(config.getSetting("foo", "foo"));
+ assertNull(config.getSetting("myPortal", "foo"));
+ assertNull(config.getSetting("myPortal-pcdef", "foo"));
+ assertEquals("myPortal-dpcdef", config.getSetting("foo", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+ assertEquals("myPortal-dpcdef", config
+ .getSetting("myPortal", PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+ assertEquals("myPortal-pcdef", config.getSetting("myPortal-pcdef",
+ PortalContainerConfig.PORTAL_CONTAINER_SETTING_NAME));
+ assertEquals("myRest-dpcdef", config.getSetting("foo", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+ assertEquals("myRest-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+ assertEquals("myRest-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REST_CONTEXT_SETTING_NAME));
+ assertEquals("my-exo-domain-dpcdef", config.getSetting("foo", PortalContainerConfig.REALM_SETTING_NAME));
+ assertEquals("my-exo-domain-dpcdef", config.getSetting("myPortal", PortalContainerConfig.REALM_SETTING_NAME));
+ assertEquals("my-exo-domain-pcdef", config.getSetting("myPortal-pcdef", PortalContainerConfig.REALM_SETTING_NAME));
+ }
+ finally
+ {
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_portal.container");
+ PropertyManager.refresh();
+ }
// With internal settings
rootContainer = createRootContainer("portal-container-config-with-default-values-and-with-settings.xml");
@@ -1480,6 +1670,14 @@
{
System.getProperties().remove("TestPortalContainerConfig-string");
System.getProperties().remove("TestPortalContainerConfig-int");
+ // Clear the System Properties added by the PropertyConfigurator
+ System.getProperties().remove("_default.portal.container");
+ System.getProperties().remove("_default.rest.context");
+ System.getProperties().remove("_default.realm.name");
+ System.getProperties().remove("_portal.container");
+ System.getProperties().remove("_rest.context");
+ System.getProperties().remove("_realm.name");
+ PropertyManager.refresh();
}
// With both settings internal and external, and with invalid values
Modified: kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-both-settings-with-default-portal-def.xml
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-both-settings-with-default-portal-def.xml 2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-both-settings-with-default-portal-def.xml 2010-10-21 09:33:22 UTC (rev 3308)
@@ -16,17 +16,17 @@
<!-- The name of the default portal container -->
<value-param>
<name>default.portal.container</name>
- <value>myPortal</value>
+ <value>${_default.portal.container}</value>
</value-param>
<!-- The name of the default rest ServletContext -->
<value-param>
<name>default.rest.context</name>
- <value>myRest</value>
+ <value>${_default.rest.context}</value>
</value-param>
<!-- The name of the default realm -->
<value-param>
<name>default.realm.name</name>
- <value>my-exo-domain</value>
+ <value>${_default.realm.name}</value>
</value-param>
<!-- The default portal container definition -->
<!-- It cans be used to avoid duplicating configuration -->
@@ -142,6 +142,12 @@
<name>properties</name>
<property name="property_String" value="property_value_1" />
<property name="property_Int" value="60" />
+ <property name="_default.portal.container" value="myPortal" />
+ <property name="_default.rest.context" value="myRest" />
+ <property name="_default.realm.name" value="my-exo-domain" />
+ <property name="_portal.container" value="myPortal-pcdef" />
+ <property name="_rest.context" value="myRest-pcdef" />
+ <property name="_realm.name" value="my-exo-domain-pcdef" />
</properties-param>
</init-params>
</component>
@@ -161,15 +167,15 @@
<object type="org.exoplatform.container.definition.PortalContainerDefinition">
<!-- The name of the portal container -->
<field name="name">
- <string>myPortal-pcdef</string>
+ <string>${_portal.container}</string>
</field>
<!-- The name of the context name of the rest web application -->
<field name="restContextName">
- <string>myRest-pcdef</string>
+ <string>${_rest.context}</string>
</field>
<!-- The name of the realm -->
<field name="realmName">
- <string>my-exo-domain-pcdef</string>
+ <string>${_realm.name}</string>
</field>
<!-- A map of settings tied to the portal container -->
<field name="settings">
Modified: kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-default-portal-def.xml
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-default-portal-def.xml 2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-default-portal-def.xml 2010-10-21 09:33:22 UTC (rev 3308)
@@ -16,17 +16,17 @@
<!-- The name of the default portal container -->
<value-param>
<name>default.portal.container</name>
- <value>myPortal</value>
+ <value>${_default.portal.container}</value>
</value-param>
<!-- The name of the default rest ServletContext -->
<value-param>
<name>default.rest.context</name>
- <value>myRest</value>
+ <value>${_default.rest.context}</value>
</value-param>
<!-- The name of the default realm -->
<value-param>
<name>default.realm.name</name>
- <value>my-exo-domain</value>
+ <value>${_default.realm.name}</value>
</value-param>
<!-- The default portal container definition -->
<!-- It cans be used to avoid duplicating configuration -->
@@ -37,19 +37,19 @@
<!-- If this value is not null, it will replace the value defined
by the value-param "default.portal.container" -->
<field name="name">
- <string>myPortal-dpcdef</string>
+ <string>${_portal.container}</string>
</field>
<!-- The name of the context name of the rest web application -->
<!-- If this value is not null, it will replace the value defined
by the value-param "default.rest.context" -->
<field name="restContextName">
- <string>myRest-dpcdef</string>
+ <string>${_rest.context}</string>
</field>
<!-- The name of the realm -->
<!-- If this value is not null, it will replace the value defined
by the value-param "default.realm.name" -->
<field name="realmName">
- <string>my-exo-domain-dpcdef</string>
+ <string>${_realm.name}</string>
</field>
<!-- A map of settings tied to the default portal container -->
<field name="settings">
@@ -100,4 +100,19 @@
</object-param>
</init-params>
</component>
+ <component>
+ <key>PropertyManagerConfigurator</key>
+ <type>org.exoplatform.container.PropertyConfigurator</type>
+ <init-params>
+ <properties-param>
+ <name>properties</name>
+ <property name="_default.portal.container" value="myPortal" />
+ <property name="_default.rest.context" value="myRest" />
+ <property name="_default.realm.name" value="my-exo-domain" />
+ <property name="_portal.container" value="myPortal-dpcdef" />
+ <property name="_rest.context" value="myRest-dpcdef" />
+ <property name="_realm.name" value="my-exo-domain-dpcdef" />
+ </properties-param>
+ </init-params>
+ </component>
</configuration>
\ No newline at end of file
Modified: kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml 2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-empty-portal-def2.xml 2010-10-21 09:33:22 UTC (rev 3308)
@@ -16,20 +16,33 @@
<!-- The name of the default portal container -->
<value-param>
<name>default.portal.container</name>
- <value>myPortal</value>
+ <value>${_default.portal.container}</value>
</value-param>
<!-- The name of the default rest ServletContext -->
<value-param>
<name>default.rest.context</name>
- <value>myRest</value>
+ <value>${_default.rest.context}</value>
</value-param>
<!-- The name of the default realm -->
<value-param>
<name>default.realm.name</name>
- <value>my-exo-domain</value>
+ <value>${_default.realm.name}</value>
</value-param>
</init-params>
</component>
+ <component>
+ <key>PropertyManagerConfigurator</key>
+ <type>org.exoplatform.container.PropertyConfigurator</type>
+ <init-params>
+ <properties-param>
+ <name>properties</name>
+ <property name="_default.portal.container" value="myPortal" />
+ <property name="_default.rest.context" value="myRest" />
+ <property name="_default.realm.name" value="my-exo-domain" />
+ <property name="_portal.container" value="myPortal-pcdef" />
+ </properties-param>
+ </init-params>
+ </component>
<external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
@@ -46,7 +59,7 @@
<object type="org.exoplatform.container.definition.PortalContainerDefinition">
<!-- The name of the portal container -->
<field name="name">
- <string>myPortal-pcdef</string>
+ <string>${_portal.container}</string>
</field>
</object>
</object-param>
@@ -67,7 +80,7 @@
<!-- The list of the name of the portal containers to disable -->
<values-param>
<name>names</name>
- <value>myPortal-pcdef</value>
+ <value>${_portal.container}</value>
</values-param>
</init-params>
</component-plugin>
Modified: kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml 2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def-with-default-portal-def.xml 2010-10-21 09:33:22 UTC (rev 3308)
@@ -62,6 +62,16 @@
</object-param>
</init-params>
</component>
+ <component>
+ <key>PropertyManagerConfigurator</key>
+ <type>org.exoplatform.container.PropertyConfigurator</type>
+ <init-params>
+ <properties-param>
+ <name>properties</name>
+ <property name="_portal.container" value="myPortal-pcdef" />
+ </properties-param>
+ </init-params>
+ </component>
<external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
@@ -78,7 +88,7 @@
<object type="org.exoplatform.container.definition.PortalContainerDefinition">
<!-- The name of the portal container -->
<field name="name">
- <string>myPortal-pcdef</string>
+ <string>${_portal.container}</string>
</field>
<!-- The name of the context name of the rest web application -->
<field name="restContextName">
@@ -107,7 +117,7 @@
<values-param>
<name>apply.specific</name>
<value>fake</value>
- <value>myPortal-pcdef</value>
+ <value>${_portal.container}</value>
</values-param>
<object-param profiles="AddDependencies">
<name>change</name>
@@ -233,7 +243,7 @@
<!-- The list of the name of the portal containers to disable -->
<values-param>
<name>names</name>
- <value>myPortal-pcdef</value>
+ <value>${_portal.container}</value>
</values-param>
</init-params>
</component-plugin>
Modified: kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml 2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-default-values-and-with-portal-def.xml 2010-10-21 09:33:22 UTC (rev 3308)
@@ -31,14 +31,25 @@
<!-- Indicates whether the unregistered webapps have to be ignored -->
<value-param profiles="ignore.unregistered.webapp-false">
<name>ignore.unregistered.webapp</name>
- <value>false</value>
+ <value>${_ignore.unregistered.webapp.false}</value>
</value-param>
<value-param profiles="ignore.unregistered.webapp-true">
<name>ignore.unregistered.webapp</name>
- <value>true</value>
+ <value>${_ignore.unregistered.webapp.true}</value>
</value-param>
</init-params>
</component>
+ <component>
+ <key>PropertyManagerConfigurator</key>
+ <type>org.exoplatform.container.PropertyConfigurator</type>
+ <init-params>
+ <properties-param>
+ <name>properties</name>
+ <property name="_ignore.unregistered.webapp.true" value="true" />
+ <property name="_ignore.unregistered.webapp.false" value="false" />
+ </properties-param>
+ </init-params>
+ </component>
<external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
Modified: kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values-but-with-portal-defs.xml
===================================================================
--- kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values-but-with-portal-defs.xml 2010-10-21 07:37:13 UTC (rev 3307)
+++ kernel/branches/2.2.x/exo.kernel.container/src/test/resources/org/exoplatform/container/definition/portal-container-config-with-no-default-values-but-with-portal-defs.xml 2010-10-21 09:33:22 UTC (rev 3308)
@@ -12,6 +12,16 @@
<component>
<type>org.exoplatform.container.definition.PortalContainerConfig</type>
</component>
+ <component>
+ <key>PropertyManagerConfigurator</key>
+ <type>org.exoplatform.container.PropertyConfigurator</type>
+ <init-params>
+ <properties-param>
+ <name>properties</name>
+ <property name="_value.true" value="true" />
+ </properties-param>
+ </init-params>
+ </component>
<external-component-plugins>
<!-- The full qualified name of the PortalContainerConfig -->
<target-component>org.exoplatform.container.definition.PortalContainerConfig</target-component>
@@ -69,7 +79,7 @@
<init-params>
<value-param>
<name>apply.all</name>
- <value>true</value>
+ <value>${_value.true}</value>
</value-param>
<object-param>
<name>change1</name>
@@ -92,7 +102,7 @@
<init-params>
<value-param>
<name>apply.default</name>
- <value>true</value>
+ <value>${_value.true}</value>
</value-param>
<object-param>
<name>change2</name>
@@ -139,7 +149,7 @@
<init-params>
<value-param>
<name>apply.default</name>
- <value>true</value>
+ <value>${_value.true}</value>
</value-param>
<values-param>
<name>apply.specific</name>
15 years, 9 months
exo-jcr SVN: r3307 - jcr/branches/1.12.x/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository.
by do-not-reply@jboss.org
Author: areshetnyak
Date: 2010-10-21 03:37:13 -0400 (Thu, 21 Oct 2010)
New Revision: 3307
Modified:
jcr/branches/1.12.x/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/RestRepositoryService.java
Log:
JCR-1459 : Method RestRepositoryService.removeRepository was changed.
Modified: jcr/branches/1.12.x/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/RestRepositoryService.java
===================================================================
--- jcr/branches/1.12.x/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/RestRepositoryService.java 2010-10-21 07:09:28 UTC (rev 3306)
+++ jcr/branches/1.12.x/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/RestRepositoryService.java 2010-10-21 07:37:13 UTC (rev 3307)
@@ -390,14 +390,7 @@
}
}
- if (repositoryService.getDefaultRepository().getConfiguration().getName().equals(repositoryName))
- {
- ((RepositoryServiceImpl) repositoryService).removeDefaultRepository();
- }
- else
- {
- repositoryService.removeRepository(repositoryName);
- }
+ repositoryService.removeRepository(repositoryName);
repositoryService.getConfig().retain(); // save configuration to persistence (file or persister)
return Response.ok().build();
}
15 years, 9 months
exo-jcr SVN: r3306 - in jcr/trunk/exo.jcr.component.core/src: main/java/org/exoplatform/services/jcr/impl/storage/value and 2 other directories.
by do-not-reply@jboss.org
Author: sergiykarpenko
Date: 2010-10-21 03:09:28 -0400 (Thu, 21 Oct 2010)
New Revision: 3306
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/StandaloneStoragePluginProvider.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/CASableSimpleFileValueStorage.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/CASableTreeFileValueStorage.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/FileValueStorage.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/SimpleFileValueStorage.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/TreeFileValueStorage.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCWDCTest.java
Log:
EXOJCR-999: Make FileValueStorage use common per-repository FileCleaner
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java 2010-10-20 13:24:47 UTC (rev 3305)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java 2010-10-21 07:09:28 UTC (rev 3306)
@@ -513,7 +513,9 @@
{
registerComponentInstance(config);
-
+ // WorkspaceFileCleanerHolder - is a common holder for all workspaces.
+ // It is used to initialize FileValueStorage
+ registerComponentImplementation(WorkspaceFileCleanerHolder.class);
registerWorkspacesComponents();
registerRepositoryComponents();
}
@@ -524,7 +526,6 @@
registerComponentImplementation(RepositoryIndexSearcherHolder.class);
- registerComponentImplementation(WorkspaceFileCleanerHolder.class);
registerComponentImplementation(LocationFactory.class);
registerComponentImplementation(ValueFactoryImpl.class);
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/StandaloneStoragePluginProvider.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/StandaloneStoragePluginProvider.java 2010-10-20 13:24:47 UTC (rev 3305)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/StandaloneStoragePluginProvider.java 2010-10-21 07:09:28 UTC (rev 3306)
@@ -24,6 +24,8 @@
import org.exoplatform.services.jcr.config.ValueStorageFilterEntry;
import org.exoplatform.services.jcr.config.WorkspaceEntry;
import org.exoplatform.services.jcr.datamodel.PropertyData;
+import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
+import org.exoplatform.services.jcr.impl.util.io.WorkspaceFileCleanerHolder;
import org.exoplatform.services.jcr.storage.WorkspaceStorageConnection;
import org.exoplatform.services.jcr.storage.value.ValueIOChannel;
import org.exoplatform.services.jcr.storage.value.ValuePluginFilter;
@@ -60,7 +62,8 @@
*/
private final ValueDataResourceHolder resorcesHolder;
- public StandaloneStoragePluginProvider(WorkspaceEntry wsConfig) throws RepositoryConfigurationException, IOException
+ public StandaloneStoragePluginProvider(WorkspaceEntry wsConfig, WorkspaceFileCleanerHolder holder)
+ throws RepositoryConfigurationException, IOException
{
this.resorcesHolder = new ValueDataResourceHolder();
@@ -82,7 +85,10 @@
Object o = null;
try
{
- o = Class.forName(storageEntry.getType()).newInstance();
+ o =
+ Class.forName(storageEntry.getType()).getConstructor(FileCleaner.class).newInstance(
+ holder.getFileCleaner());
+
}
catch (Exception e)
{
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/CASableSimpleFileValueStorage.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/CASableSimpleFileValueStorage.java 2010-10-20 13:24:47 UTC (rev 3305)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/CASableSimpleFileValueStorage.java 2010-10-21 07:09:28 UTC (rev 3306)
@@ -21,6 +21,7 @@
import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
import org.exoplatform.services.jcr.impl.storage.value.ValueDataResourceHolder;
import org.exoplatform.services.jcr.impl.storage.value.cas.ValueContentAddressStorage;
+import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
import org.exoplatform.services.jcr.storage.value.ValueIOChannel;
import java.io.IOException;
@@ -40,6 +41,11 @@
private String digestAlgo;
+ public CASableSimpleFileValueStorage(FileCleaner cleaner)
+ {
+ super(cleaner);
+ }
+
@Override
public void init(Properties props, ValueDataResourceHolder resources) throws IOException,
RepositoryConfigurationException
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/CASableTreeFileValueStorage.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/CASableTreeFileValueStorage.java 2010-10-20 13:24:47 UTC (rev 3305)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/CASableTreeFileValueStorage.java 2010-10-21 07:09:28 UTC (rev 3306)
@@ -21,6 +21,7 @@
import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
import org.exoplatform.services.jcr.impl.storage.value.ValueDataResourceHolder;
import org.exoplatform.services.jcr.impl.storage.value.cas.ValueContentAddressStorage;
+import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
import java.io.IOException;
import java.util.Properties;
@@ -38,6 +39,11 @@
private String digestAlgo;
+ public CASableTreeFileValueStorage(FileCleaner cleaner)
+ {
+ super(cleaner);
+ }
+
/**
* {@inheritDoc}
*/
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/FileValueStorage.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/FileValueStorage.java 2010-10-20 13:24:47 UTC (rev 3305)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/FileValueStorage.java 2010-10-21 07:09:28 UTC (rev 3306)
@@ -46,7 +46,7 @@
public final static String PATH = "path";
/**
- * Temporarory directopry name under stoprage root dir.
+ * Temporary directory name under storage root dir.
*/
public static final String TEMP_DIR_NAME = "temp";
@@ -58,11 +58,10 @@
/**
* FileValueStorage constructor.
- *
*/
- public FileValueStorage()
+ public FileValueStorage(FileCleaner cleaner)
{
- this.cleaner = new FileCleaner(); // TODO use container cleaner
+ this.cleaner = cleaner;
}
/**
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/SimpleFileValueStorage.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/SimpleFileValueStorage.java 2010-10-20 13:24:47 UTC (rev 3305)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/SimpleFileValueStorage.java 2010-10-21 07:09:28 UTC (rev 3306)
@@ -18,6 +18,7 @@
*/
package org.exoplatform.services.jcr.impl.storage.value.fs;
+import org.exoplatform.services.jcr.impl.util.io.FileCleaner;
import org.exoplatform.services.jcr.storage.value.ValueIOChannel;
import java.io.IOException;
@@ -32,6 +33,11 @@
public class SimpleFileValueStorage extends FileValueStorage
{
+ public SimpleFileValueStorage(FileCleaner cleaner)
+ {
+ super(cleaner);
+ }
+
/**
* @see org.exoplatform.services.jcr.storage.value.ValueStoragePlugin#openIOChannel()
*/
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/TreeFileValueStorage.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/TreeFileValueStorage.java 2010-10-20 13:24:47 UTC (rev 3305)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/value/fs/TreeFileValueStorage.java 2010-10-21 07:09:28 UTC (rev 3306)
@@ -43,8 +43,9 @@
}
}
- public TreeFileValueStorage()
+ public TreeFileValueStorage(FileCleaner cleaner)
{
+ super(cleaner);
this.cleaner = new TreeFileCleaner(); // TODO use container cleaner
}
Modified: jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCWDCTest.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCWDCTest.java 2010-10-20 13:24:47 UTC (rev 3305)
+++ jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/storage/JDBCWDCTest.java 2010-10-21 07:09:28 UTC (rev 3306)
@@ -18,6 +18,17 @@
*/
package org.exoplatform.services.jcr.impl.storage;
+import java.sql.Connection;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+
+import javax.jcr.PropertyType;
+import javax.naming.InitialContext;
+import javax.naming.Reference;
+import javax.naming.StringRefAddr;
+import javax.sql.DataSource;
+
import junit.framework.TestCase;
import org.exoplatform.services.jcr.access.AccessControlList;
@@ -35,22 +46,12 @@
import org.exoplatform.services.jcr.impl.dataflow.TransientValueData;
import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer;
import org.exoplatform.services.jcr.impl.storage.value.StandaloneStoragePluginProvider;
+import org.exoplatform.services.jcr.impl.util.io.WorkspaceFileCleanerHolder;
import org.exoplatform.services.jcr.storage.WorkspaceStorageConnection;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.exoplatform.services.log.LogConfigurationInitializer;
-import java.sql.Connection;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-import javax.jcr.PropertyType;
-import javax.naming.InitialContext;
-import javax.naming.Reference;
-import javax.naming.StringRefAddr;
-import javax.sql.DataSource;
-
/**
* Created by The eXo Platform SAS.
*
@@ -105,7 +106,7 @@
// SimpleJNDIContextInitializer.initialize(sourceName, ref);
container =
- new JDBCWorkspaceDataContainer(config, repositoryEntry, null, new StandaloneStoragePluginProvider(config));
+ new JDBCWorkspaceDataContainer(config, repositoryEntry, null, new StandaloneStoragePluginProvider(config, new WorkspaceFileCleanerHolder()));
Properties logProps = new Properties();
logProps.put("org.apache.commons.logging.simplelog.defaultlog", "debug");
15 years, 9 months
exo-jcr SVN: r3305 - in jcr/branches/1.12.x: exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository and 1 other directories.
by do-not-reply@jboss.org
Author: tolusha
Date: 2010-10-20 09:24:47 -0400 (Wed, 20 Oct 2010)
New Revision: 3305
Modified:
jcr/branches/1.12.x/applications/exo.jcr.applications.backupconsole/src/main/java/org/exoplatform/jcr/backupconsole/BackupClient.java
jcr/branches/1.12.x/applications/exo.jcr.applications.backupconsole/src/main/java/org/exoplatform/jcr/backupconsole/BackupClientImpl.java
jcr/branches/1.12.x/applications/exo.jcr.applications.backupconsole/src/main/java/org/exoplatform/jcr/backupconsole/BackupConsole.java
jcr/branches/1.12.x/applications/exo.jcr.applications.backupconsole/src/main/java/org/exoplatform/jcr/backupconsole/ClientTransportImpl.java
jcr/branches/1.12.x/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/RestRepositoryService.java
jcr/branches/1.12.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/backup-client.xml
Log:
JCR-1459: Whole Repository backup support in Backup Console tool
Modified: jcr/branches/1.12.x/applications/exo.jcr.applications.backupconsole/src/main/java/org/exoplatform/jcr/backupconsole/BackupClient.java
===================================================================
--- jcr/branches/1.12.x/applications/exo.jcr.applications.backupconsole/src/main/java/org/exoplatform/jcr/backupconsole/BackupClient.java 2010-10-20 08:10:23 UTC (rev 3304)
+++ jcr/branches/1.12.x/applications/exo.jcr.applications.backupconsole/src/main/java/org/exoplatform/jcr/backupconsole/BackupClient.java 2010-10-20 13:24:47 UTC (rev 3305)
@@ -31,72 +31,108 @@
{
/**
- * Start Backup.
+ * Start backup of repository or workspace.
+ * If workspaceName is 'null', then repository backup will be started.
*
- * @param repositoryName String, the repository name.
- * @param workspaceName String, the workspace name.
- * @param backupDir path to backup folder on remote server.
- * @return String result.
- * @throws IOException transport exception.
- * @throws BackupExecuteException backup client internal exception.
+ * @param repositoryName
+ * String, the repository name.
+ * @param workspaceName
+ * String, the workspace name.
+ * @param backupDir
+ * path to backup folder on remote server
+ * @return String
+ * result
+ * @throws IOException
+ * transport exception.
+ * @throws BackupExecuteException
+ * backup client internal exception.
*/
String startBackUp(String repositoryName, String workspaceName, String backupDir) throws IOException,
BackupExecuteException;
/**
- * Start Incremental Backup.
+ * Start Incremental Backup of repository or workspace.
+ * If workspaceName is 'null', then repository backup will be started.
*
- * @param repositoryName String, the repository name.
- * @param workspaceName String, the workspace name.
- * @param incr incemental job period.
- * @param backupDir path to backup folder on remote server.
- * @return String result.
- * @throws IOException transport exception.
- * @throws BackupExecuteException backup client internal exception.
+ * @param repositoryName
+ * String, the repository name
+ * @param workspaceName
+ * String, the workspace name
+ * @param incr
+ * incremental job period.
+ * @param backupDir
+ * path to backup folder on remote server
+ * @return String
+ * result
+ * @throws IOException
+ * transport exception
+ * @throws BackupExecuteException
+ * backup client internal exception
*/
String startIncrementalBackUp(String repositoryName, String workspaceName, String backupDir, long incr)
throws IOException, BackupExecuteException;
/**
- * Get Status.
+ * Get Status of backup.
*
- * @param backupId the backup identifier.
- * @return String result.
- * @throws IOException transport exception.
- * @throws BackupExecuteException backup client internal exception.
+ * @param backupId
+ * the backup identifier.
+ * @return String
+ * result.
+ * @throws IOException
+ * transport exception.
+ * @throws BackupExecuteException
+ * backup client internal exception.
*/
String status(String backupId) throws IOException, BackupExecuteException;
/**
* Get information about backup service.
*
- * @return String result.
- * @throws IOException transport exception.
- * @throws BackupExecuteException backup client internal exception.
+ * @return String
+ * result
+ * @throws IOException
+ * transport exception
+ * @throws BackupExecuteException
+ * backup client internal exception
*/
String info() throws IOException, BackupExecuteException;
/**
- * Get information about current restores.
+ * Get information about current restores of repository or workspace.
+ * If workspaceName is 'null', then will be get status of repository backup.
*
- * @param repositoryName String, the repository name.
- * @param workspaceName String, the workspace name.
- * @return String result.
- * @throws IOException transport exception.
- * @throws BackupExecuteException backup client internal exception.
+ * @param repositoryName
+ * String, the repository name
+ * @param workspaceName
+ * String, the workspace name
+ * @return String
+ * result
+ * @throws IOException
+ * transport exception
+ * @throws BackupExecuteException
+ * backup client internal exception
*/
String restores(String repositoryName, String workspaceName) throws IOException, BackupExecuteException;
/**
- * Restore repository from backup file.
+ * Restore repository or workspace from backup file.
+ * If workspaceName is 'null', then will be run restore of repository.
*
- * @param repositoryName String, the repository name.
- * @param workspaceName String, the workspace name.
- * @param backupId the backup identifier.
- * @param config InputStream contains workspace configuration.
- * @return String result.
- * @throws IOException transport exception.
- * @throws BackupExecuteException backup client internal exception.
+ * @param repositoryName
+ * String, the repository name
+ * @param workspaceName
+ * String, the workspace name
+ * @param backupId
+ * the backup identifier
+ * @param config
+ * InputStream contains workspace configuration
+ * @return String
+ * result
+ * @throws IOException
+ * transport exception
+ * @throws BackupExecuteException
+ * backup client internal exception
*/
String restore(String repositoryName, String workspaceName, String backupId, InputStream config) throws IOException,
BackupExecuteException;
@@ -104,22 +140,33 @@
/**
* Stop backup.
*
- * @param backupId the backup identifier.
- * @return String result.
- * @throws IOException transport exception.
- * @throws BackupExecuteException backup client internal exception.
+ * @param backupId
+ * the backup identifier
+ * @return String
+ * result
+ * @throws IOException
+ * transport exception
+ * @throws BackupExecuteException
+ * backup client internal exception
*/
String stop(String backupId) throws IOException, BackupExecuteException;
/**
- * Drop backup.
+ * Drop workspace or repository.
+ * If workspaceName is 'null', then repository will be dropped.
*
- * @param forceClose force sessions close on droped workspace.
- * @param repositoryName String, the repository name.
- * @param workspaceName String, the workspace name.
- * @return String result.
- * @throws IOException transport exception.
- * @throws BackupExecuteException backup client internal exception.
+ * @param forceClose
+ * force sessions close on repository or workspace
+ * @param repositoryName
+ * String, the repository name
+ * @param workspaceName
+ * String, the workspace name
+ * @return String
+ * result
+ * @throws IOException
+ * transport exception
+ * @throws BackupExecuteException
+ * backup client internal exception
*/
String drop(boolean forceClose, String repositoryName, String workspaceName) throws IOException,
BackupExecuteException;
@@ -127,18 +174,24 @@
/**
* Get information about the current backups (in progress).
*
- * @return String result
- * @throws IOException
- * @throws BackupExecuteException
+ * @return String
+ * result
+ * @throws IOException
+ * transport exception
+ * @throws BackupExecuteException
+ * backup client internal exception
*/
String list() throws IOException, BackupExecuteException;
/**
* Get information about the completed (ready to restore) backups.
*
- * @return String result
- * @throws IOException
- * @throws BackupExecuteException
+ * @return String
+ * result
+ * @throws IOException
+ * transport exception
+ * @throws BackupExecuteException
+ * backup client internal exception
*/
String listCompleted() throws IOException, BackupExecuteException;
Modified: jcr/branches/1.12.x/applications/exo.jcr.applications.backupconsole/src/main/java/org/exoplatform/jcr/backupconsole/BackupClientImpl.java
===================================================================
--- jcr/branches/1.12.x/applications/exo.jcr.applications.backupconsole/src/main/java/org/exoplatform/jcr/backupconsole/BackupClientImpl.java 2010-10-20 08:10:23 UTC (rev 3304)
+++ jcr/branches/1.12.x/applications/exo.jcr.applications.backupconsole/src/main/java/org/exoplatform/jcr/backupconsole/BackupClientImpl.java 2010-10-20 13:24:47 UTC (rev 3305)
@@ -18,12 +18,22 @@
*/
package org.exoplatform.jcr.backupconsole;
+import java.io.ByteArrayInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+
+import javax.ws.rs.core.Response;
+
import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
import org.exoplatform.services.jcr.config.RepositoryEntry;
import org.exoplatform.services.jcr.config.RepositoryServiceConfiguration;
import org.exoplatform.services.jcr.config.WorkspaceEntry;
import org.exoplatform.services.jcr.ext.backup.BackupJob;
import org.exoplatform.services.jcr.ext.backup.BackupManager;
+import org.exoplatform.services.jcr.ext.backup.RepositoryBackupChain;
+import org.exoplatform.services.jcr.ext.backup.impl.JobRepositoryRestore;
import org.exoplatform.services.jcr.ext.backup.impl.JobWorkspaceRestore;
import org.exoplatform.services.jcr.ext.backup.server.HTTPBackupAgent;
import org.exoplatform.services.jcr.ext.backup.server.bean.BackupConfigBean;
@@ -31,6 +41,7 @@
import org.exoplatform.services.jcr.ext.backup.server.bean.response.DetailedInfo;
import org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfo;
import org.exoplatform.services.jcr.ext.backup.server.bean.response.ShortInfoList;
+import org.exoplatform.services.jcr.ext.repository.RestRepositoryService;
import org.exoplatform.ws.frameworks.json.JsonHandler;
import org.exoplatform.ws.frameworks.json.JsonParser;
import org.exoplatform.ws.frameworks.json.impl.BeanBuilder;
@@ -44,550 +55,1080 @@
import org.jibx.runtime.IUnmarshallingContext;
import org.jibx.runtime.JiBXException;
-import java.io.ByteArrayInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-
-import javax.ws.rs.core.Response;
-
/**
* Created by The eXo Platform SAS. <br/>Date:
*
* @author <a href="karpenko.sergiy(a)gmail.com">Karpenko Sergiy</a>
* @version $Id: BackupClientImpl.java 111 2008-11-11 11:11:11Z serg $
*/
-public class BackupClientImpl implements BackupClient {
+public class BackupClientImpl
+ implements BackupClient
+{
- /**
- * Block size.
- */
- private static final int BLOCK_SIZE = 1024;
+ /**
+ * Block size.
+ */
+ private static final int BLOCK_SIZE = 1024;
- /**
- * Client transport.
- */
- private ClientTransport transport;
-
- /**
- * The URL path.
- */
- private final String path;
+ /**
+ * Client transport.
+ */
+ private ClientTransport transport;
- /**
- * User login.
- */
- private final String userName;
+ /**
+ * The URL path.
+ */
+ private final String path;
- /**
- * User password.
- */
- private final String pass;
-
- /**
- * Constructor.
- *
- * @param transport ClientTransport implementation.
- * @param login user login.
- * @param pass user password.
- */
- public BackupClientImpl(ClientTransport transport, String login, String pass, String urlPath) {
- this.transport = transport;
- this.userName = login;
- this.pass = pass;
-
- if (urlPath == null)
- path = "/rest";
- else
- path = urlPath;
- }
-
- /**
- * {@inheritDoc}
- */
- public String startBackUp(String repositoryName, String workspaceName, String backupDir) throws IOException, BackupExecuteException {
- String sURL = path + HTTPBackupAgent.Constants.BASE_URL +
- HTTPBackupAgent.Constants.OperationType.START_BACKUP +
- "/" + repositoryName +
- "/" + workspaceName;
+ /**
+ * User login.
+ */
+ private final String userName;
- BackupConfigBean bean = new BackupConfigBean(BackupManager.FULL_BACKUP_ONLY,
- backupDir);
-
- JsonGeneratorImpl generatorImpl = new JsonGeneratorImpl();
- JsonValue json;
- try {
- json = generatorImpl.createJsonObject(bean);
- } catch (JsonException e) {
- throw new BackupExecuteException("Can not get json from : " + bean.getClass().toString(), e);
- }
-
- BackupAgentResponse response = transport.executePOST(sURL, json.toString());
-
- if (response.getStatus() == Response.Status.OK.getStatusCode()) {
- return "\nSuccessful : \n" +
- "\tstatus code = " + response.getStatus() + "\n";
- } else {
- return failureProcessing(response);
- }
- }
+ /**
+ * User password.
+ */
+ private final String pass;
- /**
- * {@inheritDoc}
- */
- public String startIncrementalBackUp(String repositoryName, String workspaceName, String backupDir, long incr) throws IOException,
- BackupExecuteException {
- String sURL = path + HTTPBackupAgent.Constants.BASE_URL +
- HTTPBackupAgent.Constants.OperationType.START_BACKUP +
- "/" + repositoryName +
- "/" + workspaceName;
+ /**
+ * Constructor.
+ *
+ * @param transport ClientTransport implementation.
+ * @param login user login.
+ * @param pass user password.
+ */
+ public BackupClientImpl(ClientTransport transport, String login, String pass, String urlPath)
+ {
+ this.transport = transport;
+ this.userName = login;
+ this.pass = pass;
- BackupConfigBean bean = new BackupConfigBean(BackupManager.FULL_AND_INCREMENTAL,
- backupDir,
- incr);
-
- JsonGeneratorImpl generatorImpl = new JsonGeneratorImpl();
- JsonValue json;
- try {
- json = generatorImpl.createJsonObject(bean);
- } catch (JsonException e) {
- throw new BackupExecuteException("Can not get json from : " + bean.getClass().toString(), e);
- }
-
- BackupAgentResponse response = transport.executePOST(sURL, json.toString());
-
- if (response.getStatus() == Response.Status.OK.getStatusCode()) {
- return "\nSuccessful : \n" +
- "\tstatus code = " + response.getStatus() + "\n";
- } else {
- return failureProcessing(response);
- }
- }
+ if (urlPath == null)
+ path = "/rest";
+ else
+ path = urlPath;
+ }
- /**
- * {@inheritDoc}
- */
- public String status(String backupId) throws IOException, BackupExecuteException {
- String sURL = path + HTTPBackupAgent.Constants.BASE_URL +
- HTTPBackupAgent.Constants.OperationType.CURRENT_OR_COMPLETED_BACKUP_INFO +
- "/" + backupId;
+ /**
+ * {@inheritDoc}
+ */
+ public String startBackUp(String repositoryName, String workspaceName, String backupDir) throws IOException,
+ BackupExecuteException
+ {
+ if (workspaceName != null)
+ {
+ String sURL =
+ path + HTTPBackupAgent.Constants.BASE_URL + HTTPBackupAgent.Constants.OperationType.START_BACKUP
+ + "/" + repositoryName + "/" + workspaceName;
- BackupAgentResponse response = transport.executeGET(sURL);
-
- if (response.getStatus() == Response.Status.OK.getStatusCode()) {
- DetailedInfo info;
- try {
- info = (DetailedInfo) getObject(DetailedInfo.class, response.getResponseData());
- } catch (Exception e) {
- throw new RuntimeException("Can not get DetailedInfo from responce.", e);
+ BackupConfigBean bean = new BackupConfigBean(BackupManager.FULL_BACKUP_ONLY, backupDir);
+
+ JsonGeneratorImpl generatorImpl = new JsonGeneratorImpl();
+ JsonValue json;
+ try
+ {
+ json = generatorImpl.createJsonObject(bean);
+ }
+ catch (JsonException e)
+ {
+ throw new BackupExecuteException("Can not get json from : " + bean.getClass().toString(), e);
+ }
+
+ BackupAgentResponse response = transport.executePOST(sURL, json.toString());
+
+ if (response.getStatus() == Response.Status.OK.getStatusCode())
+ {
+ return "\nSuccessful : \n" + "\tstatus code = " + response.getStatus() + "\n";
+ }
+ else
+ {
+ return failureProcessing(response);
+ }
}
-
- if (info.getType() == DetailedInfo.COMPLETED) {
- String result = "\nThe completed (ready to restore) backup information : \n";
-
- BackupConfigBean configBean = info.getBackupConfig();
-
- result += ("\t\tbackup id : " + info.getBackupId() + "\n"
- + "\t\tbackup folder : " + configBean.getBackupDir() + "\n"
- + "\t\trepository name : " + info.getRepositoryName() + "\n"
- + "\t\tworkspace name : " + info.getWorkspaceName() + "\n"
- + "\t\tbackup type : " + (configBean.getBackupType() == BackupManager.FULL_AND_INCREMENTAL ? "full + incremetal" : "full only") + "\n"
- + "\t\tstarted time : " + info.getStartedTime() + "\n"
- + (info.getFinishedTime().equals("") ? "\n" :
- "\t\tfinished time : " + info.getFinishedTime() + "\n\n"));
-
- return result;
- } else {
- String result = "\nThe current backup information : \n";
-
- BackupConfigBean configBean = info.getBackupConfig();
-
- result += ("\t\tbackup id : " + info.getBackupId() + "\n"
- + "\t\tbackup folder : " + configBean.getBackupDir() + "\n"
- + "\t\trepository name : " + info.getRepositoryName() + "\n"
- + "\t\tworkspace name : " + info.getWorkspaceName() + "\n"
- + "\t\tbackup type : " + (configBean.getBackupType() == BackupManager.FULL_AND_INCREMENTAL ? "full + incremetal" : "full only") + "\n"
- + "\t\tfull backup state : " + getState(info.getState())) + "\n"
- + (info.getBackupType() == BackupManager.FULL_BACKUP_ONLY ? "" :
- "\t\tincremental backup state : " + "working" + "\n")
- + "\t\tstarted time : " + info.getStartedTime() + "\n"
- + (info.getFinishedTime().equals("") ? "\n" :
- "\t\tfinished time : " + info.getFinishedTime() + "\n\n");
-
- return result;
+ else
+ {
+ String sURL =
+ path + HTTPBackupAgent.Constants.BASE_URL
+ + HTTPBackupAgent.Constants.OperationType.START_BACKUP_REPOSITORY + "/" + repositoryName;
+
+ BackupConfigBean bean = new BackupConfigBean(BackupManager.FULL_BACKUP_ONLY, backupDir);
+
+ JsonGeneratorImpl generatorImpl = new JsonGeneratorImpl();
+ JsonValue json;
+ try
+ {
+ json = generatorImpl.createJsonObject(bean);
+ }
+ catch (JsonException e)
+ {
+ throw new BackupExecuteException("Can not get json from : " + bean.getClass().toString(), e);
+ }
+
+ BackupAgentResponse response = transport.executePOST(sURL, json.toString());
+
+ if (response.getStatus() == Response.Status.OK.getStatusCode())
+ {
+ return "\nSuccessful : \n" + "\tstatus code = " + response.getStatus() + "\n";
+ }
+ else
+ {
+ return failureProcessing(response);
+ }
}
- } else {
- return failureProcessing(response);
- }
- }
+ }
- /**
- * {@inheritDoc}
- */
- public String stop(String backupId) throws IOException, BackupExecuteException {
- String sURL = path + HTTPBackupAgent.Constants.BASE_URL +
- HTTPBackupAgent.Constants.OperationType.STOP_BACKUP +
- "/" + backupId;
+ /**
+ * {@inheritDoc}
+ */
+ public String startIncrementalBackUp(String repositoryName, String workspaceName, String backupDir, long incr)
+ throws IOException, BackupExecuteException
+ {
+ if (workspaceName != null)
+ {
+ String sURL =
+ path + HTTPBackupAgent.Constants.BASE_URL + HTTPBackupAgent.Constants.OperationType.START_BACKUP
+ + "/" + repositoryName + "/" + workspaceName;
- BackupAgentResponse response = transport.executeGET(sURL);
-
- if (response.getStatus() == Response.Status.OK.getStatusCode()) {
- return "\nSuccessful : \n" +
- "\tstatus code = " + response.getStatus() + "\n";
- } else {
- return failureProcessing(response);
- }
- }
+ BackupConfigBean bean = new BackupConfigBean(BackupManager.FULL_AND_INCREMENTAL, backupDir, incr);
- /**
- * {@inheritDoc}
- */
- public String restore(String repositoryName, String workspaceName, String backupId, InputStream config) throws IOException,
- BackupExecuteException {
- String sURL = path + HTTPBackupAgent.Constants.BASE_URL +
- HTTPBackupAgent.Constants.OperationType.RESTORE +
- "/" + repositoryName +
- "/" + backupId;
+ JsonGeneratorImpl generatorImpl = new JsonGeneratorImpl();
+ JsonValue json;
+ try
+ {
+ json = generatorImpl.createJsonObject(bean);
+ }
+ catch (JsonException e)
+ {
+ throw new BackupExecuteException("Can not get json from : " + bean.getClass().toString(), e);
+ }
-
- WorkspaceEntry wEntry = null;
- try {
- wEntry = getWorkspaceEntry(config, repositoryName, workspaceName);
- } catch (Throwable e) {
- throw new BackupExecuteException("Can not get WorkspaceEntry for workspace '" + workspaceName + "' from config.", e);
- }
-
- JsonGeneratorImpl generatorImpl = new JsonGeneratorImpl();
- JsonValue json;
-
- try {
- json = generatorImpl.createJsonObject(wEntry);
- } catch (JsonException e) {
- throw new BackupExecuteException("Can not get json from : " + wEntry.getClass().toString(), e);
- }
-
- BackupAgentResponse response = transport.executePOST(sURL, json.toString());
-
- if (response.getStatus() == Response.Status.OK.getStatusCode()) {
- return "\nSuccessful : \n" +
- "\tstatus code = " + response.getStatus() + "\n";
- } else {
- return failureProcessing(response);
- }
- }
+ BackupAgentResponse response = transport.executePOST(sURL, json.toString());
- /**
- * {@inheritDoc}
- */
- public String drop(boolean forceClose, String repositoryName, String workspaceName) throws IOException,
- BackupExecuteException {
- String sURL = path + HTTPBackupAgent.Constants.BASE_URL +
- HTTPBackupAgent.Constants.OperationType.DROP_WORKSPACE +
- "/" + repositoryName +
- "/" + workspaceName +
- "/" + forceClose;
+ if (response.getStatus() == Response.Status.OK.getStatusCode())
+ {
+ return "\nSuccessful : \n" + "\tstatus code = " + response.getStatus() + "\n";
+ }
+ else
+ {
+ return failureProcessing(response);
+ }
+ }
+ else
+ {
+ String sURL =
+ path + HTTPBackupAgent.Constants.BASE_URL
+ + HTTPBackupAgent.Constants.OperationType.START_BACKUP_REPOSITORY + "/" + repositoryName;
- BackupAgentResponse response = transport.executeGET(sURL);
-
- if (response.getStatus() == Response.Status.OK.getStatusCode()) {
- return "\nSuccessful : \n" +
- "\tstatus code = " + response.getStatus() + "\n";
- } else {
- return failureProcessing(response);
- }
- }
+ BackupConfigBean bean = new BackupConfigBean(BackupManager.FULL_AND_INCREMENTAL, backupDir, incr);
- /**
- * {@inheritDoc}
- */
- public String info() throws IOException, BackupExecuteException {
- String sURL = path + HTTPBackupAgent.Constants.BASE_URL + HTTPBackupAgent.Constants.OperationType.BACKUP_SERVICE_INFO;
- BackupAgentResponse response = transport.executeGET(sURL);
-
- if (response.getStatus() == Response.Status.OK.getStatusCode()) {
- BackupServiceInfoBean info;
- try {
- info = (BackupServiceInfoBean) getObject(BackupServiceInfoBean.class, response.getResponseData());
- } catch (Exception e) {
- throw new RuntimeException("Can not get BackupServiceInfoBean from responce.", e);
+ JsonGeneratorImpl generatorImpl = new JsonGeneratorImpl();
+ JsonValue json;
+ try
+ {
+ json = generatorImpl.createJsonObject(bean);
+ }
+ catch (JsonException e)
+ {
+ throw new BackupExecuteException("Can not get json from : " + bean.getClass().toString(), e);
+ }
+
+ BackupAgentResponse response = transport.executePOST(sURL, json.toString());
+
+ if (response.getStatus() == Response.Status.OK.getStatusCode())
+ {
+ return "\nSuccessful : \n" + "\tstatus code = " + response.getStatus() + "\n";
+ }
+ else
+ {
+ return failureProcessing(response);
+ }
}
-
- String result = "\nThe backup service information : \n"
- + "\tfull backup type : " + info.getFullBackupType() + "\n"
- + "\tincremetal backup type : " + info.getIncrementalBackupType() + "\n"
- + "\tbackup log folder : " + info.getBackupLogDir() + "\n"
- + "\tdefault incremental job period : " + info.getDefaultIncrementalJobPeriod() + "\n\n";
-
- return result;
- } else {
- return failureProcessing(response);
- }
- }
- /**
- * {@inheritDoc}
- */
- public String list() throws IOException, BackupExecuteException {
- String sURL = path + HTTPBackupAgent.Constants.BASE_URL + HTTPBackupAgent.Constants.OperationType.CURRENT_BACKUPS_INFO;
- BackupAgentResponse response = transport.executeGET(sURL);
-
- if (response.getStatus() == Response.Status.OK.getStatusCode()) {
- ShortInfoList infoList;
- try {
- infoList = (ShortInfoList) getObject(ShortInfoList.class, response.getResponseData());
- } catch (Exception e) {
- throw new RuntimeException("Can not get ShortInfoList from responce.", e);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String status(String backupId) throws IOException, BackupExecuteException
+ {
+
+ String sURL =
+ path + HTTPBackupAgent.Constants.BASE_URL
+ + HTTPBackupAgent.Constants.OperationType.CURRENT_OR_COMPLETED_BACKUP_REPOSITORY_INFO + "/"
+ + backupId;
+
+ BackupAgentResponse response = transport.executeGET(sURL);
+
+ if (response.getStatus() != Response.Status.OK.getStatusCode())
+ {
+
+ sURL =
+ path + HTTPBackupAgent.Constants.BASE_URL
+ + HTTPBackupAgent.Constants.OperationType.CURRENT_OR_COMPLETED_BACKUP_INFO + "/" + backupId;
+
+ response = transport.executeGET(sURL);
}
-
- String result = "\nThe current backups information : \n";
-
- if (infoList.getBackups().size() == 0)
- result += "\tNo active backups.\n\n";
-
- int count = 1;
- for (ShortInfo shortInfo : infoList.getBackups()) {
- result += "\t" + count + ") Backup with id " + shortInfo.getBackupId() + " :\n";
-
- result += ("\t\trepository name : " + shortInfo.getRepositoryName() + "\n"
- + "\t\tworkspace name : " + shortInfo.getWorkspaceName() + "\n"
- + "\t\tbackup type : " + (shortInfo.getBackupType() == BackupManager.FULL_AND_INCREMENTAL ? "full + incremetal" : "full only") + "\n"
- + "\t\tfull backup state : " + getState(shortInfo.getState())) + "\n"
- + (shortInfo.getBackupType() == BackupManager.FULL_BACKUP_ONLY ? "" :
- "\t\tincremental backup state : " + "working" + "\n")
- + "\t\tstarted time : " + shortInfo.getStartedTime() + "\n"
- + (shortInfo.getFinishedTime().equals("") ? "" :
- "\t\tfinished time : " + shortInfo.getFinishedTime() + "\n");
- count++;
- }
-
- return result;
- } else {
- return failureProcessing(response);
- }
- }
- /**
- * {@inheritDoc}
- */
- public String listCompleted() throws IOException, BackupExecuteException {
- String sURL = path + HTTPBackupAgent.Constants.BASE_URL + HTTPBackupAgent.Constants.OperationType.COMPLETED_BACKUPS_INFO;
- BackupAgentResponse response = transport.executeGET(sURL);
-
- if (response.getStatus() == Response.Status.OK.getStatusCode()) {
- ShortInfoList infoList;
- try {
- infoList = (ShortInfoList) getObject(ShortInfoList.class, response.getResponseData());
- new String(response.getResponseData());
- } catch (Exception e) {e.printStackTrace();
- throw new RuntimeException("Can not get ShortInfoList from responce.", e);
+ if (response.getStatus() == Response.Status.OK.getStatusCode())
+ {
+ DetailedInfo info;
+ try
+ {
+ info = (DetailedInfo) getObject(DetailedInfo.class, response.getResponseData());
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Can not get DetailedInfo from responce.", e);
+ }
+
+ if (info.getType() == DetailedInfo.COMPLETED)
+ {
+ String result = "\nThe completed (ready to restore) backup information : \n";
+
+ BackupConfigBean configBean = info.getBackupConfig();
+
+ result +=
+ ("\t\tbackup id : "
+ + info.getBackupId()
+ + "\n"
+ + "\t\tbackup folder : "
+ + configBean.getBackupDir()
+ + "\n"
+ + "\t\trepository name : "
+ + info.getRepositoryName()
+ + "\n"
+ + (info.getWorkspaceName().equals("") ? "" : "\t\tworkspace name : "
+ + info.getWorkspaceName() + "\n")
+ + "\t\tbackup type : "
+ + (configBean.getBackupType() == BackupManager.FULL_AND_INCREMENTAL ? "full + incremetal"
+ : "full only") + "\n" + "\t\tstarted time : " + info.getStartedTime()
+ + "\n" + (info.getFinishedTime().equals("") ? "\n" : "\t\tfinished time : "
+ + info.getFinishedTime() + "\n\n"));
+
+ return result;
+ }
+ else
+ {
+ String result = "\nThe current backup information : \n";
+
+ BackupConfigBean configBean = info.getBackupConfig();
+
+ result +=
+ ("\t\tbackup id : "
+ + info.getBackupId()
+ + "\n"
+ + "\t\tbackup folder : "
+ + configBean.getBackupDir()
+ + "\n"
+ + "\t\trepository name : "
+ + info.getRepositoryName()
+ + "\n"
+ + (info.getWorkspaceName().equals("") ? "" : "\t\tworkspace name : "
+ + info.getWorkspaceName() + "\n")
+ + "\t\tbackup type : "
+ + (configBean.getBackupType() == BackupManager.FULL_AND_INCREMENTAL ? "full + incremetal"
+ : "full only") + "\n" + "\t\tfull backup state : " + getState(info
+ .getState()))
+ + "\n"
+ + (info.getBackupType() == BackupManager.FULL_BACKUP_ONLY ? ""
+ : "\t\tincremental backup state : " + "working" + "\n")
+ + "\t\tstarted time : "
+ + info.getStartedTime()
+ + "\n"
+ + (info.getFinishedTime().equals("") ? "\n" : "\t\tfinished time : "
+ + info.getFinishedTime() + "\n\n");
+
+ return result;
+ }
}
-
- String result = "\nThe completed (ready to restore) backups information : \n";
-
- if (infoList.getBackups().size() == 0)
- result += "\tNo completed backups.\n\n";
-
- int count = 1;
- for (ShortInfo shortInfo : infoList.getBackups()) {
- result += "\t" + count + ") Backup with id " + shortInfo.getBackupId() + " :\n";
-
- result += ("\t\trepository name : " + shortInfo.getRepositoryName() + "\n"
- + "\t\tworkspace name : " + shortInfo.getWorkspaceName() + "\n"
- + "\t\tbackup type : " + (shortInfo.getBackupType() == BackupManager.FULL_AND_INCREMENTAL ? "full + incremetal" : "full only") + "\n"
- + "\t\tstarted time : " + shortInfo.getStartedTime() + "\n"
- + (shortInfo.getFinishedTime().equals("") ? "\n" :
- "\t\tfinished time : " + shortInfo.getFinishedTime() + "\n"));
- count++;
- }
-
- return result;
- } else {
- return failureProcessing(response);
- }
- }
+ else
+ {
+ return failureProcessing(response);
+ }
+ }
- /**
- * {@inheritDoc}
- */
- public String restores(String repositoryName, String workspaceName) throws IOException, BackupExecuteException {
- String sURL = path + HTTPBackupAgent.Constants.BASE_URL +
- HTTPBackupAgent.Constants.OperationType.CURRENT_RESTORE_INFO_ON_WS +
- "/" + repositoryName +
- "/" + workspaceName;
- BackupAgentResponse response = transport.executeGET(sURL);
-
- if (response.getStatus() == Response.Status.OK.getStatusCode()) {
- DetailedInfo info;
- try {
- info = (DetailedInfo) getObject(DetailedInfo.class, response.getResponseData());
- } catch (Exception e) {
- throw new RuntimeException("Can not get DetailedInfo from responce.", e);
+ /**
+ * {@inheritDoc}
+ */
+ public String stop(String backupId) throws IOException, BackupExecuteException
+ {
+ // first try to find current repository backup
+ String sURL =
+ path + HTTPBackupAgent.Constants.BASE_URL
+ + HTTPBackupAgent.Constants.OperationType.CURRENT_BACKUPS_REPOSITORY_INFO;
+
+ BackupAgentResponse repositoryResponse = transport.executeGET(sURL);
+
+ if (repositoryResponse.getStatus() == Response.Status.OK.getStatusCode())
+ {
+ ShortInfoList repositoryInfoList;
+ try
+ {
+ repositoryInfoList = (ShortInfoList) getObject(ShortInfoList.class, repositoryResponse.getResponseData());
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Can not get ShortInfoList from responce.", e);
+ }
+
+ for (ShortInfo info : repositoryInfoList.getBackups())
+ {
+ if (info.getBackupId().equals(backupId))
+ {
+ // repository backup
+ sURL =
+ path + HTTPBackupAgent.Constants.BASE_URL
+ + HTTPBackupAgent.Constants.OperationType.STOP_BACKUP_REPOSITORY + "/" + backupId;
+ BackupAgentResponse response = transport.executeGET(sURL);
+
+ if (response.getStatus() == Response.Status.OK.getStatusCode())
+ {
+ return "\nSuccessful : \n" + "\tstatus code = " + response.getStatus() + "\n";
+ }
+ else
+ {
+ return failureProcessing(response);
+ }
+ }
+ }
}
-
-
- String result = "\nThe current restores information : \n";
-
- result += "\tRestore with id " + info.getBackupId() + ":\n";
-
- BackupConfigBean configBean = info.getBackupConfig();
-
- result += ("\t\tbackup folder : " + configBean.getBackupDir() + "\n"
- + "\t\trepository name : " + info.getRepositoryName() + "\n"
- + "\t\tworkspace name : " + info.getWorkspaceName() + "\n"
- + "\t\tbackup type : " + (configBean.getBackupType() == BackupManager.FULL_AND_INCREMENTAL ? "full + incremetal" : "full only") + "\n"
- + "\t\trestore state : " + getRestoreState(info.getState()) + "\n"
- + "\t\tstarted time : " + info.getStartedTime() + "\n"
- + (info.getFinishedTime().equals("") ? "\n" :
- "\t\tfinished time : " + info.getFinishedTime() + "\n\n"));
-
- return result;
- } else {
- return failureProcessing(response);
- }
- }
-
-
- /**
- * Will be created the Object from JSON binary data.
- *
- * @param cl
- * Class
- * @param data
- * binary data (JSON)
- * @return Object
- * @throws Exception
- * will be generated Exception
- */
- private Object getObject(Class cl, byte[] data) throws Exception {
- JsonHandler jsonHandler = new JsonDefaultHandler();
- JsonParser jsonParser = new JsonParserImpl();
- InputStream inputStream = new ByteArrayInputStream(data);
- jsonParser.parse(inputStream, jsonHandler);
- JsonValue jsonValue = jsonHandler.getJsonObject();
- return new BeanBuilder().createObject(cl, jsonValue);
- }
-
-
- private String getRestoreState(int restoreState) {
- String state = "unknown sate of restore";
-
- switch (restoreState) {
- case JobWorkspaceRestore.RESTORE_INITIALIZED:
- state = "initialized";
- break;
-
- case JobWorkspaceRestore.RESTORE_STARTED:
- state = "started";
- break;
-
- case JobWorkspaceRestore.RESTORE_SUCCESSFUL:
- state = "successful";
- break;
-
- case JobWorkspaceRestore.RESTORE_FAIL:
- state = "fail";
- break;
+ // then try to find current workspace backup
+ sURL = path + HTTPBackupAgent.Constants.BASE_URL + HTTPBackupAgent.Constants.OperationType.CURRENT_BACKUPS_INFO;
- default:
- break;
- }
-
- return state;
- }
-
- /**
- * getState.
- *
- * @param state
- * value of state
- * @return String sate
- */
- private String getState(int state) {
- String st = "";
- switch (state) {
+ BackupAgentResponse workspaceResponse = transport.executeGET(sURL);
+ if (workspaceResponse.getStatus() == Response.Status.OK.getStatusCode())
+ {
+ ShortInfoList workspaceInfoList;
+ try
+ {
+ workspaceInfoList = (ShortInfoList) getObject(ShortInfoList.class, workspaceResponse.getResponseData());
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Can not get ShortInfoList from responce.", e);
+ }
- case BackupJob.FINISHED:
- st = "finished";
- break;
+ for (ShortInfo info : workspaceInfoList.getBackups())
+ {
+ if (info.getBackupId().equals(backupId))
+ {
+ // workspace backup
+ sURL =
+ path + HTTPBackupAgent.Constants.BASE_URL + HTTPBackupAgent.Constants.OperationType.STOP_BACKUP
+ + "/" + backupId;
- case BackupJob.WORKING:
- st = "working";
- break;
+ BackupAgentResponse response = transport.executeGET(sURL);
- case BackupJob.WAITING:
- st = "waiting";
- break;
+ if (response.getStatus() == Response.Status.OK.getStatusCode())
+ {
+ return "\nSuccessful : \n" + "\tstatus code = " + response.getStatus() + "\n";
+ }
+ else
+ {
+ return failureProcessing(response);
+ }
+ }
+ }
+ }
- case BackupJob.STARTING:
- st = "starting";
- break;
- default:
- break;
- }
+ return "\nFailure :\n" + "\tmessage : There are no active backup with id " + backupId;
+ }
- return st;
- }
-
- /**
- * failureProcessing.
- *
- * @param data
- * response data
- * @return String
- * result
- * @throws BackupExecuteException
- * will be generated BackupExecuteException
- */
- private String failureProcessing(BackupAgentResponse response) throws BackupExecuteException {
- try {
- String result = "\nFailure :\n"
- + "\tsatatus code : " + response.getStatus() + "\n"
- + "\tmessage : " + new String(response.getResponseData(), "UTF-8") + "\n\n";
-
- return result;
- } catch (UnsupportedEncodingException e) {
- throw new BackupExecuteException("Can not encoded the responce : " + e.getMessage(), e);
- }
- }
-
- /**
- * getWorkspaceEntry.
- *
- * @param wEntryStream
- * InputStream, the workspace configuration
- * @param workspaceName
- * String, the workspace name
- * @return WorkspaceEntry
- * return the workspace entry
- * @throws FileNotFoundException
- * will be generated the FileNotFoundException
- * @throws JiBXException
- * will be generated the JiBXException
- * @throws RepositoryConfigurationException
- * will be generated the RepositoryConfigurationException
- */
- private WorkspaceEntry getWorkspaceEntry(InputStream wEntryStream, String repositoryName, String workspaceName) throws FileNotFoundException,
- JiBXException,
- RepositoryConfigurationException {
- WorkspaceEntry wsEntry = null;
+ /**
+ * {@inheritDoc}
+ */
+ public String restore(String repositoryName, String workspaceName, String backupId, InputStream config)
+ throws IOException, BackupExecuteException
+ {
+ if (workspaceName != null)
+ {
+ String sURL =
+ path + HTTPBackupAgent.Constants.BASE_URL + HTTPBackupAgent.Constants.OperationType.RESTORE + "/"
+ + repositoryName + "/" + backupId;
- IBindingFactory factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
- IUnmarshallingContext uctx = factory.createUnmarshallingContext();
- RepositoryServiceConfiguration conf = (RepositoryServiceConfiguration) uctx.unmarshalDocument(wEntryStream,
- null);
- RepositoryEntry rEntry = conf.getRepositoryConfiguration(repositoryName);
-
- for (WorkspaceEntry wEntry : rEntry.getWorkspaceEntries())
- if (wEntry.getName().equals(workspaceName))
- wsEntry = wEntry;
-
+ WorkspaceEntry wEntry = null;
+ try
+ {
+ wEntry = getWorkspaceEntry(config, repositoryName, workspaceName);
+ }
+ catch (Throwable e)
+ {
+ throw new BackupExecuteException("Can not get WorkspaceEntry for workspace '" + workspaceName
+ + "' from config.", e);
+ }
- if (wsEntry == null)
- throw new RuntimeException("Can not find the workspace '" + workspaceName
- + "' in configuration.");
+ JsonGeneratorImpl generatorImpl = new JsonGeneratorImpl();
+ JsonValue json;
- return wsEntry;
- }
+ try
+ {
+ json = generatorImpl.createJsonObject(wEntry);
+ }
+ catch (JsonException e)
+ {
+ throw new BackupExecuteException("Can not get json from : " + wEntry.getClass().toString(), e);
+ }
+
+ BackupAgentResponse response = transport.executePOST(sURL, json.toString());
+
+ if (response.getStatus() == Response.Status.OK.getStatusCode())
+ {
+ return "\nSuccessful : \n" + "\tstatus code = " + response.getStatus() + "\n";
+ }
+ else
+ {
+ return failureProcessing(response);
+ }
+ }
+ else
+ {
+ String sURL =
+ path + HTTPBackupAgent.Constants.BASE_URL
+ + HTTPBackupAgent.Constants.OperationType.RESTORE_REPOSITORY + "/" + backupId;
+
+ RepositoryEntry wEntry = null;
+ try
+ {
+ wEntry = getRepositoryEntry(config, repositoryName);
+ }
+ catch (Throwable e)
+ {
+ throw new BackupExecuteException("Can not get RepositoryEntry for repository '" + repositoryName
+ + "' from config.", e);
+ }
+
+ JsonGeneratorImpl generatorImpl = new JsonGeneratorImpl();
+ JsonValue json;
+
+ try
+ {
+ json = generatorImpl.createJsonObject(wEntry);
+ }
+ catch (JsonException e)
+ {
+ throw new BackupExecuteException("Can not get json from : " + wEntry.getClass().toString(), e);
+ }
+
+ BackupAgentResponse response = transport.executePOST(sURL, json.toString());
+
+ if (response.getStatus() == Response.Status.OK.getStatusCode())
+ {
+ return "\nSuccessful : \n" + "\tstatus code = " + response.getStatus() + "\n";
+ }
+ else
+ {
+ return failureProcessing(response);
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String drop(boolean forceClose, String repositoryName, String workspaceName) throws IOException,
+ BackupExecuteException
+ {
+ if (workspaceName != null)
+ {
+ String sURL =
+ path + HTTPBackupAgent.Constants.BASE_URL + HTTPBackupAgent.Constants.OperationType.DROP_WORKSPACE
+ + "/" + repositoryName + "/" + workspaceName + "/" + forceClose;
+
+ BackupAgentResponse response = transport.executeGET(sURL);
+
+ if (response.getStatus() == Response.Status.OK.getStatusCode())
+ {
+ return "\nSuccessful : \n" + "\tstatus code = " + response.getStatus() + "\n";
+ }
+ else
+ {
+ return failureProcessing(response);
+ }
+ }
+ else
+ {
+ String sURL =
+ path + RestRepositoryService.Constants.BASE_URL
+ + RestRepositoryService.Constants.OperationType.REMOVE_REPOSITORY + "/" + repositoryName
+ + "/" + forceClose;
+
+ BackupAgentResponse response = transport.executeGET(sURL);
+
+ if (response.getStatus() == Response.Status.OK.getStatusCode())
+ {
+ return "\nSuccessful : \n" + "\tstatus code = " + response.getStatus() + "\n";
+ }
+ else
+ {
+ return failureProcessing(response);
+ }
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String info() throws IOException, BackupExecuteException
+ {
+ String sURL =
+ path + HTTPBackupAgent.Constants.BASE_URL + HTTPBackupAgent.Constants.OperationType.BACKUP_SERVICE_INFO;
+ BackupAgentResponse response = transport.executeGET(sURL);
+
+ if (response.getStatus() == Response.Status.OK.getStatusCode())
+ {
+ BackupServiceInfoBean info;
+ try
+ {
+ info = (BackupServiceInfoBean) getObject(BackupServiceInfoBean.class, response.getResponseData());
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Can not get BackupServiceInfoBean from responce.", e);
+ }
+
+ String result =
+ "\nThe backup service information : \n" + "\tfull backup type : "
+ + info.getFullBackupType() + "\n" + "\tincremetal backup type : "
+ + info.getIncrementalBackupType() + "\n" + "\tbackup log folder : "
+ + info.getBackupLogDir() + "\n" + "\tdefault incremental job period : "
+ + info.getDefaultIncrementalJobPeriod() + "\n\n";
+
+ return result;
+ }
+ else
+ {
+ return failureProcessing(response);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String list() throws IOException, BackupExecuteException
+ {
+
+ String sURL =
+ path + HTTPBackupAgent.Constants.BASE_URL
+ + HTTPBackupAgent.Constants.OperationType.CURRENT_BACKUPS_REPOSITORY_INFO;
+ BackupAgentResponse repositoryResponse = transport.executeGET(sURL);
+
+ sURL = path + HTTPBackupAgent.Constants.BASE_URL + HTTPBackupAgent.Constants.OperationType.CURRENT_BACKUPS_INFO;
+ BackupAgentResponse workspaceResponse = transport.executeGET(sURL);
+
+ if ((repositoryResponse.getStatus() == Response.Status.OK.getStatusCode())
+ && (workspaceResponse.getStatus() == Response.Status.OK.getStatusCode()))
+ {
+ ShortInfoList repositoryInfoList;
+ try
+ {
+ repositoryInfoList = (ShortInfoList) getObject(ShortInfoList.class, repositoryResponse.getResponseData());
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Can not get ShortInfoList from responce.", e);
+ }
+
+ ShortInfoList workspaceInfoList;
+ try
+ {
+ workspaceInfoList = (ShortInfoList) getObject(ShortInfoList.class, workspaceResponse.getResponseData());
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Can not get ShortInfoList from responce.", e);
+ }
+
+ String result = "\nThe current backups information : \n";
+
+ if ((repositoryInfoList.getBackups().size() == 0) && (workspaceInfoList.getBackups().size() == 0))
+ {
+ result += "\tNo active backups.\n\n";
+ }
+
+ int count = 1;
+ for (ShortInfo shortInfo : repositoryInfoList.getBackups())
+ {
+ result += "\t" + count + ") Repository backup with id " + shortInfo.getBackupId() + " :\n";
+
+ result +=
+ ("\t\trepository name : "
+ + shortInfo.getRepositoryName()
+ + "\n"
+ + "\t\tbackup type : "
+ + (shortInfo.getBackupType() == BackupManager.FULL_AND_INCREMENTAL ? "full + incremetal"
+ : "full only") + "\n" + "\t\tfull backups state : " + getRepositoryBackupToFullState(shortInfo
+ .getState()))
+ + "\n"
+ + (shortInfo.getBackupType() == BackupManager.FULL_BACKUP_ONLY ? ""
+ : "\t\tincremental backups state : " + "working" + "\n")
+ + "\t\tstarted time : "
+ + shortInfo.getStartedTime()
+ + "\n"
+ + (shortInfo.getFinishedTime().equals("") ? "" : "\t\tfinished time : "
+ + shortInfo.getFinishedTime() + "\n");
+ count++;
+ }
+
+ for (ShortInfo shortInfo : workspaceInfoList.getBackups())
+ {
+ result += "\t" + count + ") Workspace backup with id " + shortInfo.getBackupId() + " :\n";
+
+ result +=
+ ("\t\trepository name : "
+ + shortInfo.getRepositoryName()
+ + "\n"
+ + "\t\tworkspace name : "
+ + shortInfo.getWorkspaceName()
+ + "\n"
+ + "\t\tbackup type : "
+ + (shortInfo.getBackupType() == BackupManager.FULL_AND_INCREMENTAL ? "full + incremetal"
+ : "full only") + "\n" + "\t\tfull backup state : " + getState(shortInfo
+ .getState()))
+ + "\n"
+ + (shortInfo.getBackupType() == BackupManager.FULL_BACKUP_ONLY ? ""
+ : "\t\tincremental backup state : " + "working" + "\n")
+ + "\t\tstarted time : "
+ + shortInfo.getStartedTime()
+ + "\n"
+ + (shortInfo.getFinishedTime().equals("") ? "" : "\t\tfinished time : "
+ + shortInfo.getFinishedTime() + "\n");
+ count++;
+ }
+
+ return result;
+ }
+ else
+ {
+ return failureProcessing(workspaceResponse);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String listCompleted() throws IOException, BackupExecuteException
+ {
+ String sURL =
+ path + HTTPBackupAgent.Constants.BASE_URL
+ + HTTPBackupAgent.Constants.OperationType.COMPLETED_BACKUPS_REPOSITORY_INFO;
+ BackupAgentResponse repositoryResponse = transport.executeGET(sURL);
+
+ sURL = path + HTTPBackupAgent.Constants.BASE_URL + HTTPBackupAgent.Constants.OperationType.COMPLETED_BACKUPS_INFO;
+ BackupAgentResponse workspaceResponse = transport.executeGET(sURL);
+
+ if ((workspaceResponse.getStatus() == Response.Status.OK.getStatusCode())
+ && (repositoryResponse.getStatus() == Response.Status.OK.getStatusCode()))
+ {
+
+ ShortInfoList repositoryInfoList;
+ try
+ {
+ repositoryInfoList = (ShortInfoList) getObject(ShortInfoList.class, repositoryResponse.getResponseData());
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Can not get ShortInfoList from responce.", e);
+ }
+
+ ShortInfoList workspaceInfoList;
+ try
+ {
+ workspaceInfoList = (ShortInfoList) getObject(ShortInfoList.class, workspaceResponse.getResponseData());
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Can not get ShortInfoList from responce.", e);
+ }
+
+ String result = "\nThe completed (ready to restore) backups information : \n";
+
+ if ((repositoryInfoList.getBackups().size() == 0) && (workspaceInfoList.getBackups().size() == 0))
+ {
+ result += "\tNo completed backups.\n\n";
+ }
+
+ int count = 1;
+ for (ShortInfo shortInfo : repositoryInfoList.getBackups())
+ {
+ result += "\t" + count + ") Repository backup with id " + shortInfo.getBackupId() + " :\n";
+
+ result +=
+ ("\t\trepository name : "
+ + shortInfo.getRepositoryName()
+ + "\n"
+ + "\t\tbackup type : "
+ + (shortInfo.getBackupType() == BackupManager.FULL_AND_INCREMENTAL ? "full + incremetal"
+ : "full only") + "\n" + "\t\tstarted time : "
+ + shortInfo.getStartedTime() + "\n" + (shortInfo.getFinishedTime().equals("") ? "\n"
+ : "\t\tfinished time : " + shortInfo.getFinishedTime() + "\n"));
+ count++;
+ }
+
+ for (ShortInfo shortInfo : workspaceInfoList.getBackups())
+ {
+ result += "\t" + count + ") Workspace backup with id " + shortInfo.getBackupId() + " :\n";
+
+ result +=
+ ("\t\trepository name : "
+ + shortInfo.getRepositoryName()
+ + "\n"
+ + "\t\tworkspace name : "
+ + shortInfo.getWorkspaceName()
+ + "\n"
+ + "\t\tbackup type : "
+ + (shortInfo.getBackupType() == BackupManager.FULL_AND_INCREMENTAL ? "full + incremetal"
+ : "full only") + "\n" + "\t\tstarted time : "
+ + shortInfo.getStartedTime() + "\n" + (shortInfo.getFinishedTime().equals("") ? "\n"
+ : "\t\tfinished time : " + shortInfo.getFinishedTime() + "\n"));
+ count++;
+ }
+
+ return result;
+ }
+ else
+ {
+ return failureProcessing(workspaceResponse);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public String restores(String repositoryName, String workspaceName) throws IOException, BackupExecuteException
+ {
+ if (workspaceName != null)
+ {
+ String sURL =
+ path + HTTPBackupAgent.Constants.BASE_URL
+ + HTTPBackupAgent.Constants.OperationType.CURRENT_RESTORE_INFO_ON_WS + "/" + repositoryName
+ + "/" + workspaceName;
+ BackupAgentResponse response = transport.executeGET(sURL);
+
+ if (response.getStatus() == Response.Status.OK.getStatusCode())
+ {
+ DetailedInfo info;
+ try
+ {
+ info = (DetailedInfo) getObject(DetailedInfo.class, response.getResponseData());
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Can not get DetailedInfo from responce.", e);
+ }
+
+ String result = "\nThe current restores information : \n";
+
+ result += "\tWorkspace restore with id " + info.getBackupId() + ":\n";
+
+ BackupConfigBean configBean = info.getBackupConfig();
+
+ result +=
+ ("\t\tbackup folder : "
+ + configBean.getBackupDir()
+ + "\n"
+ + "\t\trepository name : "
+ + info.getRepositoryName()
+ + "\n"
+ + "\t\tworkspace name : "
+ + info.getWorkspaceName()
+ + "\n"
+ + "\t\tbackup type : "
+ + (configBean.getBackupType() == BackupManager.FULL_AND_INCREMENTAL ? "full + incremetal"
+ : "full only") + "\n" + "\t\trestore state : "
+ + getRestoreState(info.getState()) + "\n" + "\t\tstarted time : "
+ + info.getStartedTime() + "\n" + (info.getFinishedTime().equals("") ? "\n"
+ : "\t\tfinished time : " + info.getFinishedTime() + "\n\n"));
+
+ return result;
+ }
+ else
+ {
+ return failureProcessing(response);
+ }
+ }
+ else
+ {
+ String sURL =
+ path + HTTPBackupAgent.Constants.BASE_URL
+ + HTTPBackupAgent.Constants.OperationType.CURRENT_RESTORE_INFO_ON_REPOSITORY + "/"
+ + repositoryName;
+
+ BackupAgentResponse response = transport.executeGET(sURL);
+
+ if (response.getStatus() == Response.Status.OK.getStatusCode())
+ {
+ DetailedInfo info;
+ try
+ {
+ info = (DetailedInfo) getObject(DetailedInfo.class, response.getResponseData());
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Can not get DetailedInfo from responce.", e);
+ }
+
+ String result = "\nThe current restores information : \n";
+
+ result += "\tRepository restore with id " + info.getBackupId() + ":\n";
+
+ BackupConfigBean configBean = info.getBackupConfig();
+
+ result +=
+ ("\t\tbackup folder : "
+ + configBean.getBackupDir()
+ + "\n"
+ + "\t\trepository name : "
+ + info.getRepositoryName()
+ + "\n"
+ + "\t\tbackup type : "
+ + (configBean.getBackupType() == BackupManager.FULL_AND_INCREMENTAL ? "full + incremetal"
+ : "full only") + "\n" + "\t\trestore state : "
+ + getRepositoryRestoreState(info.getState()) + "\n" + "\t\tstarted time : "
+ + info.getStartedTime() + "\n" + (info.getFinishedTime().equals("") ? "\n"
+ : "\t\tfinished time : " + info.getFinishedTime() + "\n\n"));
+
+ return result;
+ }
+ else
+ {
+ return failureProcessing(response);
+ }
+ }
+ }
+
+ /**
+ * Will be created the Object from JSON binary data.
+ *
+ * @param cl
+ * Class
+ * @param data
+ * binary data (JSON)
+ * @return Object
+ * @throws Exception
+ * will be generated Exception
+ */
+ private Object getObject(Class cl, byte[] data) throws Exception
+ {
+ JsonHandler jsonHandler = new JsonDefaultHandler();
+ JsonParser jsonParser = new JsonParserImpl();
+ InputStream inputStream = new ByteArrayInputStream(data);
+ jsonParser.parse(inputStream, jsonHandler);
+ JsonValue jsonValue = jsonHandler.getJsonObject();
+
+ return new BeanBuilder().createObject(cl, jsonValue);
+ }
+
+ private String getRestoreState(int restoreState)
+ {
+ String state = "unknown sate of restore";
+
+ switch (restoreState)
+ {
+ case JobWorkspaceRestore.RESTORE_INITIALIZED :
+ state = "initialized";
+ break;
+
+ case JobWorkspaceRestore.RESTORE_STARTED :
+ state = "started";
+ break;
+
+ case JobWorkspaceRestore.RESTORE_SUCCESSFUL :
+ state = "successful";
+ break;
+
+ case JobWorkspaceRestore.RESTORE_FAIL :
+ state = "fail";
+ break;
+
+ default :
+ break;
+ }
+
+ return state;
+ }
+
+ private String getRepositoryRestoreState(int restoreState)
+ {
+ String state = "unknown sate of restore";
+
+ switch (restoreState)
+ {
+ case JobRepositoryRestore.REPOSITORY_RESTORE_INITIALIZED :
+ state = "initialized";
+ break;
+
+ case JobRepositoryRestore.REPOSITORY_RESTORE_STARTED :
+ state = "started";
+ break;
+
+ case JobRepositoryRestore.REPOSITORY_RESTORE_SUCCESSFUL :
+ state = "successful";
+ break;
+
+ case JobRepositoryRestore.REPOSITORY_RESTORE_FAIL :
+ state = "fail";
+ break;
+
+ default :
+ break;
+ }
+
+ return state;
+ }
+
+ /**
+ * getState.
+ *
+ * @param state
+ * value of state
+ * @return String sate
+ */
+ private String getState(int state)
+ {
+ String st = "";
+ switch (state)
+ {
+
+ case BackupJob.FINISHED :
+ st = "finished";
+ break;
+
+ case BackupJob.WORKING :
+ st = "working";
+ break;
+
+ case BackupJob.WAITING :
+ st = "waiting";
+ break;
+
+ case BackupJob.STARTING :
+ st = "starting";
+ break;
+ default :
+ break;
+ }
+
+ return st;
+ }
+
+ /**
+ * getState.
+ *
+ * @param state
+ * value of state
+ * @return String sate
+ */
+ private String getRepositoryBackupToFullState(int state)
+ {
+ String st = "";
+ switch (state)
+ {
+
+ case RepositoryBackupChain.FINISHED :
+ st = "finished";
+ break;
+
+ case RepositoryBackupChain.WORKING :
+ st = "working";
+ break;
+
+ case RepositoryBackupChain.INITIALIZED :
+ st = "initialized";
+ break;
+
+ case RepositoryBackupChain.FULL_BACKUP_FINISHED_INCREMENTAL_BACKUP_WORKING :
+ st = "finished";
+ break;
+ default :
+ break;
+ }
+
+ return st;
+ }
+
+ /**
+ * failureProcessing.
+ *
+ * @param data
+ * response data
+ * @return String
+ * result
+ * @throws BackupExecuteException
+ * will be generated BackupExecuteException
+ */
+ private String failureProcessing(BackupAgentResponse response) throws BackupExecuteException
+ {
+ try
+ {
+ String result =
+ "\nFailure :\n" + "\tstatus code : " + response.getStatus() + "\n" + "\tmessage : "
+ + new String(response.getResponseData(), "UTF-8") + "\n\n";
+
+ return result;
+ }
+ catch (UnsupportedEncodingException e)
+ {
+ throw new BackupExecuteException("Can not encoded the responce : " + e.getMessage(), e);
+ }
+ }
+
+ /**
+ * getRepositoryEntry.
+ *
+ * @param wEntryStream
+ * InputStream, the workspace configuration
+ * @return RepositoryEntry
+ * return the workspace entry
+ * @throws FileNotFoundException
+ * will be generated the FileNotFoundException
+ * @throws JiBXException
+ * will be generated the JiBXException
+ * @throws RepositoryConfigurationException
+ * will be generated the RepositoryConfigurationException
+ */
+ private RepositoryEntry getRepositoryEntry(InputStream wEntryStream, String repositoryName)
+ throws FileNotFoundException, JiBXException, RepositoryConfigurationException
+ {
+ IBindingFactory factory = BindingDirectory.getFactory(RepositoryServiceConfiguration.class);
+ IUnmarshallingContext uctx = factory.createUnmarshallingContext();
+ RepositoryServiceConfiguration conf = (RepositoryServiceConfiguration) uctx.unmarshalDocument(wEntryStream, null);
+ RepositoryEntry rEntry = conf.getRepositoryConfiguration(repositoryName);
+
+ return rEntry;
+ }
+
+ /**
+ * getWorkspaceEntry.
+ *
+ * @param wEntryStream
+ * InputStream, the workspace configuration
+ * @param workspaceName
+ * String, the workspace name
+ * @return WorkspaceEntry
+ * return the workspace entry
+ * @throws FileNotFoundException
+ * will be generated the FileNotFoundException
+ * @throws JiBXException
+ * will be generated the JiBXException
+ * @throws RepositoryConfigurationException
+ * will be generated the RepositoryConfigurationException
+ */
+ private WorkspaceEntry getWorkspaceEntry(InputStream wEntryStream, String repositoryName, String workspaceName)
+ throws FileNotFoundException, JiBXException, RepositoryConfigurationException
+ {
+ RepositoryEntry rEntry = getRepositoryEntry(wEntryStream, repositoryName);
+
+ WorkspaceEntry wsEntry = null;
+
+ for (WorkspaceEntry wEntry : rEntry.getWorkspaceEntries())
+ if (wEntry.getName().equals(workspaceName))
+ wsEntry = wEntry;
+
+ if (wsEntry == null)
+ throw new RuntimeException("Can not find the workspace '" + workspaceName + "' in configuration.");
+
+ return wsEntry;
+ }
+
}
Modified: jcr/branches/1.12.x/applications/exo.jcr.applications.backupconsole/src/main/java/org/exoplatform/jcr/backupconsole/BackupConsole.java
===================================================================
--- jcr/branches/1.12.x/applications/exo.jcr.applications.backupconsole/src/main/java/org/exoplatform/jcr/backupconsole/BackupConsole.java 2010-10-20 08:10:23 UTC (rev 3304)
+++ jcr/branches/1.12.x/applications/exo.jcr.applications.backupconsole/src/main/java/org/exoplatform/jcr/backupconsole/BackupConsole.java 2010-10-20 13:24:47 UTC (rev 3305)
@@ -58,25 +58,33 @@
*/
private static final String HELP_INFO =
"Help info:\n" + " <url> <cmd> \n" + " <url> : http(s)//login:password@host:port/<context> \n"
- + " <cmd> : start <repo/ws> <backup_dir> [<incr>] \n" + " stop <backup_id> \n"
- + " status <backup_id> \n" + " restores <repo/ws> \n"
- + " restore <repo/ws> <backup_id> <pathToConfigFile> \n" + " list [completed] \n"
- + " info \n" + " drop [force-close-session] <repo/ws> \n" + " help \n\n"
+ + " <cmd> : start <repo[/ws]> <backup_dir> [<incr>] \n"
+ + " stop <backup_id> \n"
+ + " status <backup_id> \n"
+ + " restores <repo[/ws]> \n"
+ + " restore <repo[/ws]> <backup_id> <pathToConfigFile> \n"
+ + " list [completed] \n"
+ + " info \n"
+ + " drop [force-close-session] <repo[/ws]> \n"
+ + " help \n\n"
- + " start - start backup \n" + " stop - stop backup \n"
+ + " start - start backup of repositpry or workspace \n"
+ + " stop - stop backup \n"
+ " status - information about the current or completed backup by 'backup_id' \n"
- + " restores - information about the last restore on specific workspace \n"
- + " restore - restore the workspace from specific backup \n"
+ + " restores - information about the last restore on specific repository or workspace \n"
+ + " restore - restore the repository or workspace from specific backup \n"
+ " list - information about the current backups (in progress) \n"
+ " list completed - information about the completed (ready to restore) backups \n"
- + " info - information about the service backup \n" + " drop - delete the workspace \n"
+ + " info - information about the service backup \n"
+ + " drop - delete the repository or workspace \n"
+ " help - print help information about backup console \n\n"
- + " <repo/ws> - /<reponsitory-name>/<workspace-name> the workspace \n"
+ + " <repo[/ws]> - /<reponsitory-name>[/<workspace-name>] the repository or workspace \n"
+ " <backup_dir> - path to folder for backup on remote server \n"
- + " <backup_id> - the identifier for backup \n" + " <incr> - incemental job period \n"
- + " <pathToConfigFile> - path (local) to workspace configuration \n"
- + " force-close-session - close opened sessions on workspace. \n\n";
+ + " <backup_id> - the identifier for backup \n"
+ + " <incr> - incemental job period \n"
+ + " <pathToConfigFile> - path (local) to repository or workspace configuration \n"
+ + " force-close-session - close opened sessions on repositpry or workspace. \n\n";
/**
* Main.
@@ -157,7 +165,7 @@
return;
String repositoryName = getRepositoryName(pathToWS);
- String workspaceName = getWorkspaceName(pathToWS);
+ String workspaceName = (pathToWS.split("/").length == 3 ? getWorkspaceName(pathToWS) : null);
if (curArg == args.length)
{
@@ -233,7 +241,7 @@
return;
String repositoryName = getRepositoryName(pathToWS);
- String workspaceName = getWorkspaceName(pathToWS);
+ String workspaceName = (pathToWS.split("/").length == 3 ? getWorkspaceName(pathToWS) : null);
if (curArg < args.length)
{
@@ -276,7 +284,7 @@
return;
String repositoryName = getRepositoryName(pathToWS);
- String workspaceName = getWorkspaceName(pathToWS);
+ String workspaceName = (pathToWS.split("/").length == 3 ? getWorkspaceName(pathToWS) : null);;
if (curArg < args.length)
{
@@ -321,7 +329,7 @@
return;
String repositoryName = getRepositoryName(pathToWS);
- String workspaceName = getWorkspaceName(pathToWS);
+ String workspaceName = (pathToWS.split("/").length == 3 ? getWorkspaceName(pathToWS) : null);
// backup id
if (curArg == args.length)
@@ -415,7 +423,7 @@
String repWS = args[curArg];
repWS = repWS.replaceAll("\\\\", "/");
- if (!repWS.matches("[/][^/]+[/][^/]+"))
+ if ( !repWS.matches("[/][^/]+") && !repWS.matches("[/][^/]+[/][^/]+"))
{
System.out.println(INCORRECT_PARAM + "There is incorrect path to workspace parameter: " + repWS);
return null;
Modified: jcr/branches/1.12.x/applications/exo.jcr.applications.backupconsole/src/main/java/org/exoplatform/jcr/backupconsole/ClientTransportImpl.java
===================================================================
--- jcr/branches/1.12.x/applications/exo.jcr.applications.backupconsole/src/main/java/org/exoplatform/jcr/backupconsole/ClientTransportImpl.java 2010-10-20 08:10:23 UTC (rev 3304)
+++ jcr/branches/1.12.x/applications/exo.jcr.applications.backupconsole/src/main/java/org/exoplatform/jcr/backupconsole/ClientTransportImpl.java 2010-10-20 13:24:47 UTC (rev 3305)
@@ -57,6 +57,16 @@
* Flag is SSL.
*/
private final String protocol;
+
+ /**
+ * Is realm get.
+ */
+ private boolean isRealmGet = false;
+
+ /**
+ * Realm to connection
+ */
+ private String realm;
/**
* Constructor.
@@ -124,7 +134,13 @@
HTTPConnection connection = new HTTPConnection(url);
connection.removeModule(CookieModule.class);
- connection.addBasicAuthorization(getRealm(complURL), login, password);
+ if (!isRealmGet)
+ {
+ realm = getRealm(complURL);
+ isRealmGet = true;
+ }
+
+ connection.addBasicAuthorization(realm, login, password);
HTTPResponse resp;
if (postData == null)
@@ -164,7 +180,13 @@
HTTPConnection connection = new HTTPConnection(url);
connection.removeModule(CookieModule.class);
- connection.addBasicAuthorization(getRealm(complURL), login, password);
+ if (!isRealmGet)
+ {
+ realm = getRealm(complURL);
+ isRealmGet = true;
+ }
+
+ connection.addBasicAuthorization(realm, login, password);
HTTPResponse resp = connection.Get(url.getFile());
Modified: jcr/branches/1.12.x/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/RestRepositoryService.java
===================================================================
--- jcr/branches/1.12.x/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/RestRepositoryService.java 2010-10-20 08:10:23 UTC (rev 3304)
+++ jcr/branches/1.12.x/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/repository/RestRepositoryService.java 2010-10-20 13:24:47 UTC (rev 3305)
@@ -18,20 +18,6 @@
*/
package org.exoplatform.services.jcr.ext.repository;
-import org.exoplatform.common.http.HTTPStatus;
-import org.exoplatform.services.jcr.RepositoryService;
-import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
-import org.exoplatform.services.jcr.config.RepositoryEntry;
-import org.exoplatform.services.jcr.config.RepositoryServiceConfiguration;
-import org.exoplatform.services.jcr.config.WorkspaceEntry;
-import org.exoplatform.services.jcr.core.ManageableRepository;
-import org.exoplatform.services.jcr.core.WorkspaceContainerFacade;
-import org.exoplatform.services.jcr.impl.core.RepositoryImpl;
-import org.exoplatform.services.jcr.impl.core.SessionRegistry;
-import org.exoplatform.services.log.ExoLogger;
-import org.exoplatform.services.log.Log;
-import org.exoplatform.services.rest.resource.ResourceContainer;
-
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
@@ -51,6 +37,20 @@
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.core.Response.Status;
+import org.exoplatform.services.jcr.RepositoryService;
+import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
+import org.exoplatform.services.jcr.config.RepositoryEntry;
+import org.exoplatform.services.jcr.config.RepositoryServiceConfiguration;
+import org.exoplatform.services.jcr.config.WorkspaceEntry;
+import org.exoplatform.services.jcr.core.ManageableRepository;
+import org.exoplatform.services.jcr.core.WorkspaceContainerFacade;
+import org.exoplatform.services.jcr.impl.RepositoryServiceImpl;
+import org.exoplatform.services.jcr.impl.core.RepositoryImpl;
+import org.exoplatform.services.jcr.impl.core.SessionRegistry;
+import org.exoplatform.services.log.ExoLogger;
+import org.exoplatform.services.log.Log;
+import org.exoplatform.services.rest.resource.ResourceContainer;
+
/**
* Created by The eXo Platform SAS.
*
@@ -370,7 +370,7 @@
* @return Response
* return the Response
*/
- @POST
+ @GET
@RolesAllowed("administrators")
@Path("/remove-repository/{repositoryName}/{forseSessionClose}")
public Response removeRepository(@Context UriInfo uriInfo, @PathParam("repositoryName") String repositoryName,
@@ -390,14 +390,16 @@
}
}
- if (repositoryService.canRemoveRepository(repositoryName))
+ if (repositoryService.getDefaultRepository().getConfiguration().getName().equals(repositoryName))
{
+ ((RepositoryServiceImpl) repositoryService).removeDefaultRepository();
+ }
+ else
+ {
repositoryService.removeRepository(repositoryName);
- repositoryService.getConfig().retain(); // save configuration to persistence (file or persister)
- return Response.noContent().build();
}
- return Response.status(HTTPStatus.CONFLICT).entity("Can't remove repository " + repositoryName).cacheControl(
- NO_CACHE).build();
+ repositoryService.getConfig().retain(); // save configuration to persistence (file or persister)
+ return Response.ok().build();
}
catch (RepositoryException e)
{
Modified: jcr/branches/1.12.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/backup-client.xml
===================================================================
--- jcr/branches/1.12.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/backup-client.xml 2010-10-20 08:10:23 UTC (rev 3304)
+++ jcr/branches/1.12.x/exo.jcr.docs/exo.jcr.docs.developer/en/src/main/docbook/en-US/modules/jcr/backup/backup-client.xml 2010-10-20 13:24:47 UTC (rev 3305)
@@ -938,33 +938,33 @@
<programlisting>Help info:
<url> <cmd>
<url> : http(s)//login:password@host:port/<context>
- <cmd> : start <repo/ws> <backup_dir> [<incr>]
+ <cmd> : start <repo[/ws]> <backup_dir> [<incr>]
stop <backup_id>
status <backup_id>
- restores <repo/ws>
- restore <repo/ws> <backup_id> <pathToConfigFile>
+ restores <repo[/ws]>
+ restore <repo[/ws]> <backup_id> <pathToConfigFile>
list [completed]
info
- drop [force-close-session] <repo/ws>
+ drop [force-close-session] <repo[/ws]>
help
- start - start backup
+ start - start backup of repository or workspace
stop - stop backup
status - information about the current or completed backup by 'backup_id'
- restores - information about the last restore on specific workspace
- restore - restore the workspace from specific backup
+ restores - information about the last restore on specific repository or workspace
+ restore - restore the repository or workspace from specific backup
list - information about the current backups (in progress)
list completed - information about the completed (ready to restore) backups
info - information about the service backup
- drop - delete the workspace
+ drop - delete the repository or workspace
help - print help information about backup console
- <repo/ws> - /<reponsitory-name>/<workspace-name> the workspace
+ <repo[/ws]> - /<reponsitory-name>[/<workspace-name>] the repository or workspace
<backup_dir> - path to folder for backup on remote server
<backup_id> - the identifier for backup
<incr> - incemental job period
- <pathToConfigFile> - path (local) to workspace configuration
- force-close-session - close opened sessions on workspace.</programlisting>
+ <pathToConfigFile> - path (local) to repository or workspace configuration
+ force-close-session - close opened sessions on repositpry or workspace</programlisting>
</section>
<section>
@@ -991,7 +991,8 @@
</itemizedlist>
<note>
- <para><emphasis role="bold">${JCR-SRC-HOME}</emphasis> the path where eXo JCR sources located</para>
+ <para><emphasis role="bold">${JCR-SRC-HOME}</emphasis> the path where
+ eXo JCR sources located</para>
</note>
</section>
@@ -1323,4 +1324,244 @@
finished time : Fri, 17 Apr 2009 16:38:00 EEST</programlisting>
</section>
</section>
+
+ <section>
+ <title>Full example about creating backup and restoring it for repository
+ 'repository'</title>
+
+ <section>
+ <title>Creating backup</title>
+
+ <programlisting>jcrbackup http://root:exo@127.0.0.1:8080 start /repository ../temp/backup 10000</programlisting>
+
+ <para>Return :</para>
+
+ <programlisting>Successful :
+ status code = 200</programlisting>
+ </section>
+
+ <section>
+ <title>Getting information about current backups</title>
+
+ <programlisting>jcrbackup http://root:exo@127.0.0.1:8080 list</programlisting>
+
+ <para>Return :</para>
+
+ <programlisting>The current backups information :
+ 1) Repository backup with id 9a4d40fb7f0000012ec8f0a4ec70b3da :
+ repository name : repository
+ backup type : full + incremetal
+ full backups state : finished
+ incremental backups state : working
+ started time : Mon, 11 Oct 2010 10:59:35 EEST</programlisting>
+ </section>
+
+ <section>
+ <title>Stopping backup by id</title>
+
+ <para>Stop backup with id 9a4d40fb7f0000012ec8f0a4ec70b3da :</para>
+
+ <programlisting>jcrbackup http://root:exo@127.0.0.1:8080 stop 9a4d40fb7f0000012ec8f0a4ec70b3da</programlisting>
+
+ <para>Return :</para>
+
+ <programlisting>Successful :
+ status code = 200</programlisting>
+ </section>
+
+ <section>
+ <title>Deleting the repository "repository" and close all opened
+ sessions</title>
+
+ <programlisting>jcrbackup http://root:exo@127.0.0.1:8080 drop force-close-session /repository</programlisting>
+
+ <para>Return :</para>
+
+ <programlisting>Successful :
+ status code = 200</programlisting>
+ </section>
+
+ <section>
+ <title>Restoring the workspace "backup"</title>
+
+ <itemizedlist>
+ <listitem>
+ <para>Delete/clean the database for workspace <emphasis
+ role="bold">"repository"</emphasis> : When we use "single-db", then
+ we will run the SQL queries for clean database :<programlisting> drop table JCR_SREF;
+ drop table JCR_SVALUE;
+ drop table JCR_SITEM;</programlisting></para>
+ </listitem>
+
+ <listitem>
+ <para>Delete the value storage for repository <emphasis
+ role="bold">"repository"</emphasis>;</para>
+ </listitem>
+
+ <listitem>
+ <para>Delete the index data for repository <emphasis
+ role="bold">"repository"</emphasis>;</para>
+ </listitem>
+
+ <listitem>
+ <para>Restore:<programlisting>jcrbackup http://root:exo@127.0.0.1:8080 restore /repository/backup 9a6dba327f000001325dfb228a181b07 /home/rainf0x/exo-jcr-config_backup.xml</programlisting>Return
+ :<programlisting>Successful :
+ status code = 200</programlisting>The
+ /home/rainf0x/exo-jcr-config_backup.xml content the configuration
+ for restored repository <emphasis
+ role="bold">"repository"</emphasis> :<programlisting><repository-service default-repository="repository">
+ <repositories>
+ <repository name="repository" system-workspace="production" default-workspace="production">
+ <security-domain>exo-domain</security-domain>
+ <access-control>optional</access-control>
+ <authentication-policy>org.exoplatform.services.jcr.impl.core.access.JAASAuthenticator</authentication-policy>
+ <workspaces>
+ <workspace name="production">
+ <!-- for system storage -->
+ <container class="org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer">
+ <properties>
+ <property name="source-name" value="jdbcjcr" />
+ <property name="multi-db" value="false" />
+ <property name="update-storage" value="false" />
+ <property name="max-buffer-size" value="200k" />
+ <property name="swap-directory" value="../temp/swap/production" />
+ </properties>
+ <value-storages>
+ <value-storage id="system" class="org.exoplatform.services.jcr.impl.storage.value.fs.TreeFileValueStorage">
+ <properties>
+ <property name="path" value="../temp/values/production" />
+ </properties>
+ <filters>
+ <filter property-type="Binary" />
+ </filters>
+ </value-storage>
+ </value-storages>
+ </container>
+ <initializer class="org.exoplatform.services.jcr.impl.core.ScratchWorkspaceInitializer">
+ <properties>
+ <property name="root-nodetype" value="nt:unstructured" />
+ </properties>
+ </initializer>
+ <cache enabled="true" class="org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl">
+ <properties>
+ <property name="max-size" value="10k" />
+ <property name="live-time" value="1h" />
+ </properties>
+ </cache>
+ <query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
+ <properties>
+ <property name="index-dir" value="../temp/jcrlucenedb/production" />
+ </properties>
+ </query-handler>
+ <lock-manager>
+ <time-out>15m</time-out>
+ <persister class="org.exoplatform.services.jcr.impl.core.lock.FileSystemLockPersister">
+ <properties>
+ <property name="path" value="../temp/lock/system" />
+ </properties>
+ </persister>
+ </lock-manager>
+ </workspace>
+
+ <workspace name="backup">
+ <container class="org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer">
+ <properties>
+ <property name="source-name" value="jdbcjcr" />
+ <property name="multi-db" value="false" />
+ <property name="update-storage" value="false" />
+ <property name="max-buffer-size" value="200k" />
+ <property name="swap-directory" value="../temp/swap/backup" />
+ </properties>
+ <value-storages>
+ <value-storage id="draft" class="org.exoplatform.services.jcr.impl.storage.value.fs.TreeFileValueStorage">
+ <properties>
+ <property name="path" value="../temp/values/backup" />
+ </properties>
+ <filters>
+ <filter property-type="Binary" />
+ </filters>
+ </value-storage>
+ </value-storages>
+ </container>
+ <initializer class="org.exoplatform.services.jcr.impl.core.ScratchWorkspaceInitializer">
+ <properties>
+ <property name="root-nodetype" value="nt:unstructured" />
+ </properties>
+ </initializer>
+ <cache enabled="true" class="org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl">
+ <properties>
+ <property name="max-size" value="10k" />
+ <property name="live-time" value="1h" />
+ </properties>
+ </cache>
+ <query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
+ <properties>
+ <property name="index-dir" value="../temp/jcrlucenedb/backup" />
+ </properties>
+ </query-handler>
+ </workspace>
+
+ <workspace name="digital-assets">
+ <container class="org.exoplatform.services.jcr.impl.storage.jdbc.optimisation.CQJDBCWorkspaceDataContainer">
+ <properties>
+ <property name="source-name" value="jdbcjcr" />
+ <property name="multi-db" value="false" />
+ <property name="update-storage" value="false" />
+ <property name="max-buffer-size" value="200k" />
+ <property name="swap-directory" value="../temp/swap/digital-assets" />
+ </properties>
+ <value-storages>
+ <value-storage id="digital-assets" class="org.exoplatform.services.jcr.impl.storage.value.fs.TreeFileValueStorage">
+ <properties>
+ <property name="path" value="../temp/values/digital-assets" />
+ </properties>
+ <filters>
+ <filter property-type="Binary" />
+ </filters>
+ </value-storage>
+ </value-storages>
+ </container>
+ <initializer class="org.exoplatform.services.jcr.impl.core.ScratchWorkspaceInitializer">
+ <properties>
+ <property name="root-nodetype" value="nt:folder" />
+ </properties>
+ </initializer>
+ <cache enabled="true" class="org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl">
+ <properties>
+ <property name="max-size" value="5k" />
+ <property name="live-time" value="15m" />
+ </properties>
+ </cache>
+ <query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex">
+ <properties>
+ <property name="index-dir" value="../temp/jcrlucenedb/digital-assets" />
+ </properties>
+ </query-handler>
+ </workspace>
+ </workspaces>
+ </repository>
+ </repositories>
+</repository-service>
+</programlisting></para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section>
+ <title>Getting information about restore for repository
+ 'repository'</title>
+
+ <programlisting>jcrbackup http://root:exo@127.0.0.1:8080 restores /repository</programlisting>
+
+ <para>Return:</para>
+
+ <programlisting> Repository restore with id 9a6dba327f000001325dfb228a181b07:
+ backup folder : /home/rainf0x/java/exo-working/JCR-1459/exo-tomcat/bin/../temp/backup/repository_repository_backup_1286786103858
+ repository name : repository
+ backup type : full + incremetal
+ restore state : successful
+ started time : Mon, 11 Oct 2010 11:51:15 EEST
+ finished time : Mon, 11 Oct 2010 11:51:17 EEST</programlisting>
+ </section>
+ </section>
</chapter>
15 years, 9 months
exo-jcr SVN: r3304 - in jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl: core and 1 other directory.
by do-not-reply@jboss.org
Author: sergiykarpenko
Date: 2010-10-20 04:10:23 -0400 (Wed, 20 Oct 2010)
New Revision: 3304
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SysViewWorkspaceInitializer.java
Log:
EXOJCR-999: make BackupWorkspaceInitializer and SysViewWorkspaceInitializer use ValueFactory.getFileCleaner(); WorkspaceFileCleanerHolder is per-repository now;
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java 2010-10-20 07:53:13 UTC (rev 3303)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/RepositoryContainer.java 2010-10-20 08:10:23 UTC (rev 3304)
@@ -253,8 +253,8 @@
workspaceContainer.registerComponentImplementation(containerType);
if (isSystem)
{
- registerComponentInstance(new SystemDataContainerHolder(
- (WorkspaceDataContainer)workspaceContainer.getComponentInstanceOfType(WorkspaceDataContainer.class)));
+ registerComponentInstance(new SystemDataContainerHolder((WorkspaceDataContainer)workspaceContainer
+ .getComponentInstanceOfType(WorkspaceDataContainer.class)));
}
}
catch (ClassNotFoundException e)
@@ -369,7 +369,6 @@
}
workspaceContainer.registerComponentImplementation(initilizerType);
workspaceContainer.registerComponentImplementation(SessionFactory.class);
- workspaceContainer.registerComponentImplementation(WorkspaceFileCleanerHolder.class);
LocalWorkspaceDataManagerStub wsDataManager =
(LocalWorkspaceDataManagerStub)workspaceContainer
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java 2010-10-20 07:53:13 UTC (rev 3303)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/BackupWorkspaceInitializer.java 2010-10-20 08:10:23 UTC (rev 3304)
@@ -90,7 +90,7 @@
super(config, repConfig, dataManager, namespaceRegistry, locationFactory, nodeTypeManager, valueFactory,
accessManager);
- this.fileCleaner = new FileCleaner();
+ this.fileCleaner = valueFactory.getFileCleaner();
restoreDir = restorePath;
@@ -366,8 +366,6 @@
restoreChangesLog.restore();
- TransactionChangesLog log = restoreChangesLog.getItemDataChangesLog();
-
}
else if (changesLogType == RestoreChangesLog.Type.ItemDataChangesLog_without_Streams)
{
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SysViewWorkspaceInitializer.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SysViewWorkspaceInitializer.java 2010-10-20 07:53:13 UTC (rev 3303)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/SysViewWorkspaceInitializer.java 2010-10-20 08:10:23 UTC (rev 3304)
@@ -405,7 +405,7 @@
this.namespaceRegistry = namespaceRegistry;
this.locationFactory = locationFactory;
- this.fileCleaner = new FileCleaner(false); // cleaner should be started!
+ this.fileCleaner = valueFactory.getFileCleaner();
this.maxBufferSize =
config.getContainer().getParameterInteger(WorkspaceDataContainer.MAXBUFFERSIZE_PROP,
WorkspaceDataContainer.DEF_MAXBUFFERSIZE);
@@ -457,7 +457,7 @@
this.namespaceRegistry = namespaceRegistry;
this.locationFactory = locationFactory;
- this.fileCleaner = new FileCleaner(false); // cleaner should be started!
+ this.fileCleaner = valueFactory.getFileCleaner();
this.maxBufferSize =
config.getContainer().getParameterInteger(WorkspaceDataContainer.MAXBUFFERSIZE_PROP,
WorkspaceDataContainer.DEF_MAXBUFFERSIZE);
@@ -819,7 +819,6 @@
public void start()
{
- fileCleaner.start();
}
public void stop()
15 years, 9 months
exo-jcr SVN: r3303 - in jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent: jbosscache and 1 other directory.
by do-not-reply@jboss.org
Author: dkuleshov
Date: 2010-10-20 03:53:13 -0400 (Wed, 20 Oct 2010)
New Revision: 3303
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
Log:
EXOJCR-965: added disable/enable cache feature support
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java 2010-10-19 14:26:53 UTC (rev 3302)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/CacheableWorkspaceDataManager.java 2010-10-20 07:53:13 UTC (rev 3303)
@@ -18,6 +18,14 @@
*/
package org.exoplatform.services.jcr.impl.dataflow.persistent;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import java.util.concurrent.CountDownLatch;
+
+import javax.jcr.RepositoryException;
+import javax.transaction.TransactionManager;
+
import org.exoplatform.services.jcr.dataflow.ItemStateChangesLog;
import org.exoplatform.services.jcr.dataflow.persistent.WorkspaceStorageCache;
import org.exoplatform.services.jcr.datamodel.ItemData;
@@ -33,14 +41,6 @@
import org.exoplatform.services.jcr.storage.WorkspaceDataContainer;
import org.exoplatform.services.transaction.TransactionService;
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.CountDownLatch;
-
-import javax.jcr.RepositoryException;
-import javax.transaction.TransactionManager;
-
/**
* Created by The eXo Platform SAS.
*
@@ -393,83 +393,97 @@
@Override
public ItemData getItemData(NodeData parentData, QPathEntry name, ItemType itemType) throws RepositoryException
{
-
- // 1. Try from cache
- ItemData data = getCachedItemData(parentData, name, itemType);
-
- // 2. Try from container
- if (data == null)
+ if (cache.isEnabled())
{
- final DataRequest request = new DataRequest(parentData.getIdentifier(), name);
+ // 1. Try from cache
+ ItemData data = getCachedItemData(parentData, name, itemType);
- try
+ // 2. Try from container
+ if (data == null)
{
- request.start();
- // Try first to get the value from the cache since a
- // request could have been launched just before
- data = getCachedItemData(parentData, name, itemType);
- if (data == null)
+ final DataRequest request = new DataRequest(parentData.getIdentifier(), name);
+
+ try
{
- data = getPersistedItemData(parentData, name, itemType);
+ request.start();
+ // Try first to get the value from the cache since a
+ // request could have been launched just before
+ data = getCachedItemData(parentData, name, itemType);
+ if (data == null)
+ {
+ data = getPersistedItemData(parentData, name, itemType);
+ }
+ else if (!data.isNode())
+ {
+ fixPropertyValues((PropertyData)data);
+ }
}
- else if (!data.isNode())
+ finally
{
- fixPropertyValues((PropertyData)data);
+ request.done();
}
}
- finally
+ else if (!data.isNode())
{
- request.done();
+ fixPropertyValues((PropertyData)data);
}
+
+ return data instanceof NullNodeData ? null : data;
}
- else if (!data.isNode())
+ else
{
- fixPropertyValues((PropertyData)data);
+ return super.getItemData(parentData, name, itemType);
}
-
- return data instanceof NullNodeData ? null : data;
}
+
/**
* {@inheritDoc}
*/
@Override
public ItemData getItemData(String identifier) throws RepositoryException
{
- // 1. Try from cache
- ItemData data = getCachedItemData(identifier);
-
- // 2 Try from container
- if (data == null)
+ if (cache.isEnabled())
{
- final DataRequest request = new DataRequest(identifier);
+ // 1. Try from cache
+ ItemData data = getCachedItemData(identifier);
- try
+ // 2 Try from container
+ if (data == null)
{
- request.start();
- // Try first to get the value from the cache since a
- // request could have been launched just before
- data = getCachedItemData(identifier);
- if (data == null)
+ final DataRequest request = new DataRequest(identifier);
+
+ try
{
- data = getPersistedItemData(identifier);
+ request.start();
+ // Try first to get the value from the cache since a
+ // request could have been launched just before
+ data = getCachedItemData(identifier);
+ if (data == null)
+ {
+ data = getPersistedItemData(identifier);
+ }
+ else if (!data.isNode())
+ {
+ fixPropertyValues((PropertyData)data);
+ }
}
- else if (!data.isNode())
+ finally
{
- fixPropertyValues((PropertyData)data);
+ request.done();
}
}
- finally
+ else if (!data.isNode())
{
- request.done();
+ fixPropertyValues((PropertyData)data);
}
+
+ return data instanceof NullNodeData ? null : data;
}
- else if (!data.isNode())
+ else
{
- fixPropertyValues((PropertyData)data);
+ return super.getItemData(identifier);
}
-
- return data instanceof NullNodeData ? null : data;
}
/**
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java 2010-10-19 14:26:53 UTC (rev 3302)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/dataflow/persistent/jbosscache/JBossCacheWorkspaceStorageCache.java 2010-10-20 07:53:13 UTC (rev 3303)
@@ -18,6 +18,19 @@
*/
package org.exoplatform.services.jcr.impl.dataflow.persistent.jbosscache;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.NoSuchElementException;
+import java.util.Set;
+
+import javax.jcr.RepositoryException;
+import javax.transaction.TransactionManager;
+
import org.exoplatform.container.configuration.ConfigurationManager;
import org.exoplatform.services.jcr.access.AccessControlList;
import org.exoplatform.services.jcr.config.RepositoryConfigurationException;
@@ -48,19 +61,6 @@
import org.jboss.cache.config.EvictionRegionConfig;
import org.jboss.cache.eviction.ExpirationAlgorithmConfig;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-import java.util.Set;
-
-import javax.jcr.RepositoryException;
-import javax.transaction.TransactionManager;
-
/**
* Created by The eXo Platform SAS.<p/>
*
@@ -98,6 +98,8 @@
private static final Log LOG = ExoLogger.getLogger("exo.jcr.component.core.JBossCacheWorkspaceStorageCache");
+ private final boolean enabled;
+
public static final String JBOSSCACHE_CONFIG = "jbosscache-configuration";
public static final String JBOSSCACHE_EXPIRATION = "jbosscache-expiration-time";
@@ -283,6 +285,8 @@
throw new RepositoryConfigurationException("Cache configuration not found");
}
+ enabled = wsConfig.getCache().isEnabled();
+
// create cache using custom factory
ExoJBossCacheFactory<Serializable, Object> factory;
@@ -791,7 +795,7 @@
*/
public boolean isEnabled()
{
- return true;
+ return enabled;
}
// non-public members
15 years, 9 months
exo-jcr SVN: r3302 - in jcr/branches/1.12.x/exo.jcr.component.core/src: test/java/org/exoplatform/services/jcr/api/lock and 1 other directory.
by do-not-reply@jboss.org
Author: tolusha
Date: 2010-10-19 10:26:53 -0400 (Tue, 19 Oct 2010)
New Revision: 3302
Modified:
jcr/branches/1.12.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/ControllerCacheLoader.java
jcr/branches/1.12.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/lock/TestLock.java
Log:
JCR-1482: Fix issue when after restarting JCR doesn't retrieve all lock data from DB. After restarting server node will remain locked as expected.
Modified: jcr/branches/1.12.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/ControllerCacheLoader.java
===================================================================
--- jcr/branches/1.12.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/ControllerCacheLoader.java 2010-10-19 13:55:03 UTC (rev 3301)
+++ jcr/branches/1.12.x/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/lock/jbosscache/ControllerCacheLoader.java 2010-10-19 14:26:53 UTC (rev 3302)
@@ -140,14 +140,7 @@
*/
public Set<?> getChildrenNames(Fqn fqn) throws Exception
{
- if (cache.getCacheStatus() == CacheStatus.STARTING)
- {
- // Try to get the list of children name from the nested cache loader
- return cl.getChildrenNames(fqn);
- }
- // All the data is loaded at startup, so no need to call the nested cache loader for another
- // cache status other than CacheStatus.STARTING
- return null;
+ return cl.getChildrenNames(fqn);
}
/**
Modified: jcr/branches/1.12.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/lock/TestLock.java
===================================================================
--- jcr/branches/1.12.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/lock/TestLock.java 2010-10-19 13:55:03 UTC (rev 3301)
+++ jcr/branches/1.12.x/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/api/lock/TestLock.java 2010-10-19 14:26:53 UTC (rev 3302)
@@ -42,6 +42,7 @@
private Node lockedNode = null;
+ @Override
public void setUp() throws Exception
{
@@ -428,4 +429,26 @@
assertFalse(childLockNode.isLocked());
}
+
+ /**
+ * Test indicate if locked node after restarting still locked.
+ */
+ public void testLockWithoutDBClean() throws Exception
+ {
+ String locNodeName = "TestLockNode";
+ if (session.getRootNode().hasNode(locNodeName))
+ {
+ Node node = session.getRootNode().getNode(locNodeName);
+ assertTrue(node.isLocked());
+ }
+ else
+ {
+ Node node = session.getRootNode().addNode(locNodeName);
+ node.addMixin("mix:lockable");
+ session.save();
+
+ node.lock(false, true);
+ }
+ }
+
}
15 years, 9 months
exo-jcr SVN: r3301 - in jcr/branches/1.12.x/exo.jcr.component.webdav/src: main/java/org/exoplatform/services/jcr/webdav/command and 2 other directories.
by do-not-reply@jboss.org
Author: dkuleshov
Date: 2010-10-19 09:55:03 -0400 (Tue, 19 Oct 2010)
New Revision: 3301
Modified:
jcr/branches/1.12.x/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavConst.java
jcr/branches/1.12.x/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/GetCommand.java
jcr/branches/1.12.x/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/resource/VersionResource.java
jcr/branches/1.12.x/exo.jcr.component.webdav/src/test/java/org/exoplatform/services/jcr/webdav/command/TestGet.java
Log:
JCR-1470: fixed date parsing during if-modified-since header usage
Modified: jcr/branches/1.12.x/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavConst.java
===================================================================
--- jcr/branches/1.12.x/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavConst.java 2010-10-19 12:50:39 UTC (rev 3300)
+++ jcr/branches/1.12.x/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/WebDavConst.java 2010-10-19 13:55:03 UTC (rev 3301)
@@ -18,10 +18,10 @@
*/
package org.exoplatform.services.jcr.webdav;
+import java.util.Hashtable;
+
import org.exoplatform.common.http.HTTPStatus;
-import java.util.Hashtable;
-
/**
* Constants used for webdav service implemetation.
*
@@ -468,7 +468,7 @@
/**
* If-Modified-Since date psttern.
*/
- public static final String IF_MODIFIED_SINCE_PATTERN = "EEE, d MMM yyyy HH:mm:ss z";
+ public static final String IF_MODIFIED_SINCE_PATTERN = "EEE, dd MMM yyyy HH:mm:ss z";
}
/**
Modified: jcr/branches/1.12.x/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/GetCommand.java
===================================================================
--- jcr/branches/1.12.x/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/GetCommand.java 2010-10-19 12:50:39 UTC (rev 3300)
+++ jcr/branches/1.12.x/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/command/GetCommand.java 2010-10-19 13:55:03 UTC (rev 3301)
@@ -18,6 +18,26 @@
*/
package org.exoplatform.services.jcr.webdav.command;
+import java.io.InputStream;
+import java.net.URI;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+
+import javax.jcr.Node;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.xml.transform.stream.StreamSource;
+
import org.exoplatform.common.http.HTTPStatus;
import org.exoplatform.common.util.HierarchicalProperty;
import org.exoplatform.services.jcr.webdav.Range;
@@ -39,26 +59,6 @@
import org.exoplatform.services.rest.ext.provider.XSLTStreamingOutput;
import org.exoplatform.services.rest.impl.header.MediaTypeHelper;
-import java.io.InputStream;
-import java.net.URI;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Locale;
-
-import javax.jcr.Node;
-import javax.jcr.PathNotFoundException;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.ws.rs.core.HttpHeaders;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import javax.xml.transform.stream.StreamSource;
-
/**
* Created by The eXo Platform SAS Author : <a
* href="gavrikvetal(a)gmail.com">Vitaly Guly</a>.
@@ -118,7 +118,7 @@
VersionedResource versionedFile = new VersionedFileResource(uri, node, nsContext);
resource = versionedFile.getVersionHistory().getVersion(version);
- lastModifiedProperty = resource.getProperty(FileResource.CREATIONDATE);
+ lastModifiedProperty = resource.getProperty(FileResource.GETLASTMODIFIED);
istream = ((VersionResource)resource).getContentAsStream();
}
else
@@ -132,10 +132,10 @@
// check before any other reads
if (ifModifiedSince != null)
{
- DateFormat dateFormat = new SimpleDateFormat(WebDavConst.DateFormat.IF_MODIFIED_SINCE_PATTERN, Locale.US);
+ DateFormat dateFormat = new SimpleDateFormat(WebDavConst.DateFormat.MODIFICATION, Locale.US);
Date lastModifiedDate = dateFormat.parse(lastModifiedProperty.getValue());
- dateFormat = new SimpleDateFormat(WebDavConst.DateFormat.MODIFICATION, Locale.US);
+ dateFormat = new SimpleDateFormat(WebDavConst.DateFormat.IF_MODIFIED_SINCE_PATTERN, Locale.US);
Date ifModifiedSinceDate = dateFormat.parse(ifModifiedSince);
if(ifModifiedSinceDate.getTime() >= lastModifiedDate.getTime()){
Modified: jcr/branches/1.12.x/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/resource/VersionResource.java
===================================================================
--- jcr/branches/1.12.x/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/resource/VersionResource.java 2010-10-19 12:50:39 UTC (rev 3300)
+++ jcr/branches/1.12.x/exo.jcr.component.webdav/src/main/java/org/exoplatform/services/jcr/webdav/resource/VersionResource.java 2010-10-19 13:55:03 UTC (rev 3301)
@@ -18,10 +18,6 @@
*/
package org.exoplatform.services.jcr.webdav.resource;
-import org.exoplatform.common.util.HierarchicalProperty;
-import org.exoplatform.services.jcr.webdav.util.DeltaVConstants;
-import org.exoplatform.services.jcr.webdav.xml.WebDavNamespaceContext;
-
import java.io.InputStream;
import java.net.URI;
import java.util.Calendar;
@@ -34,6 +30,10 @@
import javax.jcr.version.Version;
import javax.xml.namespace.QName;
+import org.exoplatform.common.util.HierarchicalProperty;
+import org.exoplatform.services.jcr.webdav.util.DeltaVConstants;
+import org.exoplatform.services.jcr.webdav.xml.WebDavNamespaceContext;
+
/**
* Created by The eXo Platform SARL .<br/>
*
@@ -174,6 +174,14 @@
return creationDate;
}
+ else if (DeltaVConstants.GETLASTMODIFIED.equals(name))
+ {
+ Calendar created = version.getNode("jcr:frozenNode").getProperty("jcr:created").getDate();
+ HierarchicalProperty creationDate = new HierarchicalProperty(name, created, MODIFICATION_PATTERN);
+ creationDate.setAttribute("b:dt", "dateTime.rfc1123");
+ return creationDate;
+
+ }
else
{
throw new PathNotFoundException();
Modified: jcr/branches/1.12.x/exo.jcr.component.webdav/src/test/java/org/exoplatform/services/jcr/webdav/command/TestGet.java
===================================================================
--- jcr/branches/1.12.x/exo.jcr.component.webdav/src/test/java/org/exoplatform/services/jcr/webdav/command/TestGet.java 2010-10-19 12:50:39 UTC (rev 3300)
+++ jcr/branches/1.12.x/exo.jcr.component.webdav/src/test/java/org/exoplatform/services/jcr/webdav/command/TestGet.java 2010-10-19 13:55:03 UTC (rev 3301)
@@ -18,29 +18,32 @@
*/
package org.exoplatform.services.jcr.webdav.command;
-import org.exoplatform.common.http.HTTPStatus;
-import org.exoplatform.services.jcr.core.nodetype.ExtendedNodeTypeManager;
-import org.exoplatform.services.jcr.core.nodetype.NodeTypeDataManager;
-import org.exoplatform.services.jcr.impl.core.version.VersionImpl;
-import org.exoplatform.services.jcr.webdav.BaseStandaloneTest;
-import org.exoplatform.services.jcr.webdav.WebDavConstants.WebDAVMethods;
-import org.exoplatform.services.jcr.webdav.utils.TestUtils;
-import org.exoplatform.services.rest.ext.provider.XSLTStreamingOutput;
-import org.exoplatform.services.rest.impl.ContainerResponse;
-
import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
-import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.StringWriter;
+import java.text.SimpleDateFormat;
import java.util.Calendar;
+import java.util.Locale;
import javax.jcr.Node;
+import javax.ws.rs.core.MultivaluedMap;
+import org.exoplatform.common.http.HTTPStatus;
+import org.exoplatform.services.jcr.core.nodetype.ExtendedNodeTypeManager;
+import org.exoplatform.services.jcr.core.nodetype.NodeTypeDataManager;
+import org.exoplatform.services.jcr.impl.core.version.VersionImpl;
+import org.exoplatform.services.jcr.webdav.BaseStandaloneTest;
+import org.exoplatform.services.jcr.webdav.WebDavConst;
+import org.exoplatform.services.jcr.webdav.WebDavConstants.WebDAVMethods;
+import org.exoplatform.services.jcr.webdav.utils.TestUtils;
+import org.exoplatform.services.rest.ExtHttpHeaders;
+import org.exoplatform.services.rest.impl.ContainerResponse;
+import org.exoplatform.services.rest.impl.MultivaluedMapImpl;
+
/**
* Created by The eXo Platform SAS Author : Dmytro Katayev
* work.visor.ck(a)gmail.com Aug 13, 2008
@@ -124,6 +127,52 @@
}
+
+ /**
+ * Tests if date passed through header If-modified-since of GET method parsed correctly.
+ * Details can be found here: http://jira.exoplatform.org/browse/JCR-1470
+ * @throws Exception
+ */
+ public void testIfModifiedSinceDateParsing() throws Exception
+ {
+ Node fileNode = session.getRootNode().addNode("node", "nt:file");
+ fileNode.addMixin("mix:versionable");
+
+ Node contentNode = fileNode.addNode("jcr:content", "nt:resource");
+ contentNode.setProperty("jcr:mimeType", "text/plain");
+
+ Calendar creationDate = Calendar.getInstance();
+ Calendar IfModifiedSince = Calendar.getInstance();
+ IfModifiedSince.add(Calendar.HOUR, -2);
+ creationDate.add(Calendar.HOUR, -1);
+ contentNode.setProperty("jcr:data", creationDate);
+ contentNode.setProperty("jcr:lastModified", creationDate);
+
+ session.save();
+
+ fileNode.checkin();
+ fileNode.checkout();
+
+ String path =
+ getPathWS() + "/" + fileNode.getName() + "?time=" + IfModifiedSince.getTimeInMillis() + "&version=1";
+
+ SimpleDateFormat dateFormat = new SimpleDateFormat(WebDavConst.DateFormat.IF_MODIFIED_SINCE_PATTERN, Locale.US);
+ String ifModifiedSinceDate = dateFormat.format(IfModifiedSince.getTime());
+
+ MultivaluedMap<String, String> headers = new MultivaluedMapImpl();
+ headers.add(ExtHttpHeaders.IF_MODIFIED_SINCE, ifModifiedSinceDate);
+ ContainerResponse response = service(WebDAVMethods.GET, path, "", headers, null);
+ assertEquals(HTTPStatus.OK, response.getStatus());
+
+ headers.clear();
+
+ IfModifiedSince.add(Calendar.HOUR, +4);
+ ifModifiedSinceDate = dateFormat.format(IfModifiedSince.getTime());
+ headers.add(ExtHttpHeaders.IF_MODIFIED_SINCE, ifModifiedSinceDate);
+ response = service(WebDAVMethods.GET, path, "", headers, null);
+ assertEquals(HTTPStatus.NOT_MODIFIED, response.getStatus());
+ }
+
@Override
protected String getRepositoryName()
{
15 years, 9 months