|
From: <die...@us...> - 2012-03-14 09:24:00
|
Revision: 3788
http://openutils.svn.sourceforge.net/openutils/?rev=3788&view=rev
Author: diego_schivo
Date: 2012-03-14 09:23:48 +0000 (Wed, 14 Mar 2012)
Log Message:
-----------
AbstractRepositoryTestcase.initDefaultImplementations() (MgnlTestCase)
Modified Paths:
--------------
magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/test/AbstractRepositoryTestcase.java
Modified: magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/test/AbstractRepositoryTestcase.java
===================================================================
--- magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/test/AbstractRepositoryTestcase.java 2012-03-14 08:21:25 UTC (rev 3787)
+++ magnoliamodules/trunk/openutils-mgnlutils/src/main/java/it/openutils/mgnlutils/test/AbstractRepositoryTestcase.java 2012-03-14 09:23:48 UTC (rev 3788)
@@ -27,13 +27,43 @@
import info.magnolia.cms.util.ClasspathResourcesUtil;
import info.magnolia.cms.util.ContentUtil;
import info.magnolia.content2bean.Content2BeanException;
+import info.magnolia.content2bean.Content2BeanProcessor;
import info.magnolia.content2bean.Content2BeanUtil;
+import info.magnolia.content2bean.TypeMapping;
+import info.magnolia.content2bean.impl.Content2BeanProcessorImpl;
+import info.magnolia.content2bean.impl.TypeMappingImpl;
import info.magnolia.context.MgnlContext;
import info.magnolia.context.SystemContext;
import info.magnolia.context.SystemRepositoryStrategy;
import info.magnolia.importexport.BootstrapUtil;
+import info.magnolia.init.MagnoliaConfigurationProperties;
+import info.magnolia.init.properties.ClasspathPropertySource;
+import info.magnolia.init.properties.InitPathsPropertySource;
+import info.magnolia.init.properties.ModulePropertiesSource;
import info.magnolia.module.ModuleLifecycle;
+import info.magnolia.module.ModuleManagementException;
+import info.magnolia.module.ModuleManager;
+import info.magnolia.module.ModuleManagerImpl;
import info.magnolia.module.ModuleRegistry;
+import info.magnolia.module.ModuleRegistryImpl;
+import info.magnolia.module.model.ModuleDefinition;
+import info.magnolia.module.model.reader.BetwixtModuleDefinitionReader;
+import info.magnolia.module.model.reader.DependencyCheckerImpl;
+import info.magnolia.objectfactory.Components;
+import info.magnolia.objectfactory.DefaultComponentProvider;
+import info.magnolia.objectfactory.configuration.ComponentConfiguration;
+import info.magnolia.objectfactory.configuration.ComponentProviderConfiguration;
+import info.magnolia.objectfactory.configuration.ComponentProviderConfigurationBuilder;
+import info.magnolia.objectfactory.configuration.ConfiguredComponentConfiguration;
+import info.magnolia.objectfactory.configuration.ImplementationConfiguration;
+import info.magnolia.objectfactory.configuration.InstanceConfiguration;
+import info.magnolia.objectfactory.configuration.ProviderConfiguration;
+import info.magnolia.repository.DefaultRepositoryManager;
+import info.magnolia.repository.RepositoryManager;
+import info.magnolia.test.ComponentsTestUtil;
+import info.magnolia.test.FixedModuleDefinitionReader;
+import info.magnolia.test.TestMagnoliaConfigurationProperties;
+import info.magnolia.test.TestMagnoliaInitPaths;
import info.magnolia.test.mock.MockContext;
import info.magnolia.test.mock.MockUtil;
@@ -43,6 +73,7 @@
import java.io.InputStream;
import java.lang.reflect.Field;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -169,13 +200,68 @@
MgnlContext.setInstance(null);
}
- private void initDefaultImplementations() throws IOException
- {
- PropertiesInitializer.getInstance().loadBeanProperties();
- PropertiesInitializer.getInstance().loadAllModuleProperties();
+ // info.magnolia.test.MgnlTestCase.initDefaultImplementations()
+ private void initDefaultImplementations() throws IOException, ModuleManagementException {
+ final List<ModuleDefinition> modules = getModuleDefinitionsForTests();
+ final ModuleRegistry mr = new ModuleRegistryImpl();
+ ModuleManagerImpl mm = new ModuleManagerImpl(null, new FixedModuleDefinitionReader(modules), mr, new DependencyCheckerImpl());
+ mm.loadDefinitions();
+
+ final TestMagnoliaConfigurationProperties configurationProperties = new TestMagnoliaConfigurationProperties(
+ new ModulePropertiesSource(mr),
+ new ClasspathPropertySource("/test-magnolia.properties"),
+ new InitPathsPropertySource(new TestMagnoliaInitPaths())
+ );
+ SystemProperty.setMagnoliaConfigurationProperties(configurationProperties);
+
+ ComponentsTestUtil.setInstance(ModuleManager.class, mm);
+ ComponentsTestUtil.setInstance(ModuleRegistry.class, mr);
+ ComponentsTestUtil.setInstance(MagnoliaConfigurationProperties.class, configurationProperties);
+
+ ComponentsTestUtil.setImplementation(RepositoryManager.class, DefaultRepositoryManager.class);
+
+ ComponentProviderConfigurationBuilder configurationBuilder = new ComponentProviderConfigurationBuilder();
+ ComponentProviderConfiguration configuration = configurationBuilder.getComponentsFromModules("system", mr.getModuleDefinitions());
+ configuration.combine(configurationBuilder.getComponentsFromModules("main", mr.getModuleDefinitions()));
+
+ // Content2BeanProcessorImpl uses dependency injection and since we don't have that with MockComponentProvider we
+ // need to manually create this object and replace the component configuration read from core.xml
+ final TypeMappingImpl typeMapping = new TypeMappingImpl();
+ configuration.registerInstance(TypeMapping.class, typeMapping);
+ configuration.registerInstance(Content2BeanProcessor.class, new Content2BeanProcessorImpl(typeMapping));
+
+ for (Map.Entry<Class, ComponentConfiguration> entry : configuration.getComponents().entrySet()) {
+ ComponentConfiguration value = entry.getValue();
+ if (value instanceof ImplementationConfiguration) {
+ ImplementationConfiguration config = (ImplementationConfiguration) value;
+ ComponentsTestUtil.setImplementation(config.getType(), config.getImplementation());
+ } else if (value instanceof InstanceConfiguration) {
+ InstanceConfiguration config = (InstanceConfiguration) value;
+ ComponentsTestUtil.setInstance(config.getType(), config.getInstance());
+ } else if (value instanceof ProviderConfiguration) {
+ ProviderConfiguration config = (ProviderConfiguration) value;
+ ComponentsTestUtil.setImplementation(config.getType(), config.getProviderClass());
+ } else if (value instanceof ConfiguredComponentConfiguration) {
+ ConfiguredComponentConfiguration config = (ConfiguredComponentConfiguration) value;
+ ComponentsTestUtil.setConfigured(config.getType(), config.getWorkspace(), config.getPath(), config.isObserved());
+ }
+ }
+
+ for (Map.Entry<Class<?>, Class<?>> entry : configuration.getTypeMapping().entrySet()) {
+ ComponentsTestUtil.setImplementation((Class)entry.getKey(), (Class)entry.getValue());
+ }
}
+ // info.magnolia.test.MgnlTestCase.getModuleDefinitionsForTests()
/**
+ * Override this method to provide the appropriate list of modules your tests need.
+ */
+ protected List<ModuleDefinition> getModuleDefinitionsForTests() throws ModuleManagementException {
+ final ModuleDefinition core = new BetwixtModuleDefinitionReader().readFromResource("/META-INF/magnolia/core.xml");
+ return Collections.singletonList(core);
+ }
+
+ /**
* Workaround for JCR-1778.
*/
@SuppressWarnings("unchecked")
@@ -209,7 +295,8 @@
protected void modifyContextesToUseRealRepository()
{
SystemContext systemContext = MgnlContext.getSystemContext();
- SystemRepositoryStrategy repositoryStrategy = new SystemRepositoryStrategy(systemContext);
+ RepositoryManager repositoryManager = Components.getComponent(RepositoryManager.class);
+ SystemRepositoryStrategy repositoryStrategy = new SystemRepositoryStrategy(repositoryManager);
((MockContext) systemContext).setRepositoryStrategy(repositoryStrategy);
((MockContext) MgnlContext.getInstance()).setRepositoryStrategy(repositoryStrategy);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|