[exo-jcr-commits] exo-jcr SVN: r544 - jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache.

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Nov 10 05:46:45 EST 2009


Author: areshetnyak
Date: 2009-11-10 05:46:45 -0500 (Tue, 10 Nov 2009)
New Revision: 544

Modified:
   jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JDBCCacheLoaderTest.java
Log:
EXOJCR-201 : test JDBCCacheLoadetTest.

Modified: jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JDBCCacheLoaderTest.java
===================================================================
--- jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JDBCCacheLoaderTest.java	2009-11-10 10:32:38 UTC (rev 543)
+++ jcr/branches/1.12.0-JBC/component/core/src/test/java/org/exoplatform/services/jcr/impl/storage/jbosscache/JDBCCacheLoaderTest.java	2009-11-10 10:46:45 UTC (rev 544)
@@ -19,13 +19,28 @@
 package org.exoplatform.services.jcr.impl.storage.jbosscache;
 
 import java.io.Serializable;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Properties;
 
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.sql.DataSource;
+
+import org.apache.commons.dbcp.BasicDataSourceFactory;
 import org.exoplatform.services.idgenerator.impl.IDGeneratorServiceImpl;
+import org.exoplatform.services.jcr.config.CacheEntry;
 import org.exoplatform.services.jcr.config.ContainerEntry;
+import org.exoplatform.services.jcr.config.LockManagerEntry;
+import org.exoplatform.services.jcr.config.LockPersisterEntry;
+import org.exoplatform.services.jcr.config.QueryHandlerEntry;
 import org.exoplatform.services.jcr.config.RepositoryEntry;
 import org.exoplatform.services.jcr.config.SimpleParameterEntry;
+import org.exoplatform.services.jcr.config.ValueStorageEntry;
+import org.exoplatform.services.jcr.config.ValueStorageFilterEntry;
 import org.exoplatform.services.jcr.config.WorkspaceEntry;
 import org.exoplatform.services.jcr.datamodel.NodeData;
 import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer;
@@ -35,6 +50,7 @@
 import org.exoplatform.services.jcr.storage.value.ValueStoragePluginProvider;
 import org.exoplatform.services.jcr.util.ConfigurationHelper;
 import org.exoplatform.services.jcr.util.IdGenerator;
+import org.exoplatform.services.naming.InitialContextInitializer;
 import org.jboss.cache.CacheSPI;
 
 
@@ -71,8 +87,6 @@
       //WorkspaceDataContainer persistentContainer = new JDBCWorkspaceDataContainerTester();
       
       // Create WorkspaceEntry
-      ConfigurationHelper configurationHelper = ConfigurationHelper.getInstence();
-      
       ContainerEntry containerEntry = new ContainerEntry();
       List<SimpleParameterEntry> params = new ArrayList<SimpleParameterEntry>();
       params.add(new SimpleParameterEntry(JDBCWorkspaceDataContainer.DB_DIALECT, "hsqldb"));
@@ -81,13 +95,20 @@
       
       // Initialize id generator.
       new IdGenerator(new IDGeneratorServiceImpl());
+      
+      // Set system property Context.INITIAL_CONTEXT_FACTORY to initial context. 
+      System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.exoplatform.services.naming.SimpleContextFactory");
+      
+      // Create data source. Will be created new data source to new test. 
+      String dataSourceName = "jdbcjcr_" + IdGenerator.generate();
+      createNewDataSource(dataSourceName);
             
-      WorkspaceEntry ws = configurationHelper.getNewWs("ws_to_jbdc_cache_loader", true, "data-source", "/target/temp/ws_to_jbdc_cache_loader/lalues", containerEntry);
+      WorkspaceEntry ws = getNewWs("ws_to_jbdc_cache_loader", true, dataSourceName, "/target/temp/ws_to_jbdc_cache_loader/lalues", containerEntry);
       
       RepositoryEntry re = new RepositoryEntry();
       re.addWorkspace(ws);
       
-      ValueStoragePluginProvider  valueStoragePluginProvider = new StandaloneStoragePluginProvider(ws); 
+      ValueStoragePluginProvider  valueStoragePluginProvider = new StandaloneStoragePluginProvider(ws);
       
       persistentContainer = new JDBCWorkspaceDataContainer(ws, re, null, valueStoragePluginProvider);
 
@@ -124,5 +145,121 @@
       // tests it
       
    }
+   
+   public WorkspaceEntry getNewWs(String wsName, boolean isMultiDb, String dsName, String vsPath, ContainerEntry entry)
+            throws Exception
+   {
+
+      List params = new ArrayList();
+
+      params.add(new SimpleParameterEntry("sourceName", dsName));
+      params.add(new SimpleParameterEntry("db-type", "generic"));
+      params.add(new SimpleParameterEntry("multi-db", isMultiDb ? "true" : "false"));
+      params.add(new SimpleParameterEntry("update-storage", "true"));
+      params.add(new SimpleParameterEntry("max-buffer-size", "204800"));
+
+      if (entry.getParameterValue(JDBCWorkspaceDataContainer.DB_DIALECT) != null)
+      {
+         params.add(new SimpleParameterEntry(JDBCWorkspaceDataContainer.DB_DIALECT, entry
+                  .getParameterValue(JDBCWorkspaceDataContainer.DB_DIALECT)));
+      }
+
+      String oldSwap = entry.getParameterValue("swap-directory");
+      String newSwap = oldSwap.substring(0, oldSwap.lastIndexOf('/')) + '/' + wsName;
+
+      params.add(new SimpleParameterEntry("swap-directory", newSwap));
+
+      ContainerEntry containerEntry =
+               new ContainerEntry("org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer",
+                        (ArrayList) params);
+      containerEntry.setParameters(params);
+
+      if (vsPath != null)
+      {
+
+         ArrayList<ValueStorageFilterEntry> vsparams = new ArrayList<ValueStorageFilterEntry>();
+         ValueStorageFilterEntry filterEntry = new ValueStorageFilterEntry();
+         filterEntry.setPropertyType("Binary");
+         vsparams.add(filterEntry);
+
+         ValueStorageEntry valueStorageEntry =
+                  new ValueStorageEntry("org.exoplatform.services.jcr.impl.storage.value.fs.SimpleFileValueStorage",
+                           vsparams);
+         ArrayList<SimpleParameterEntry> spe = new ArrayList<SimpleParameterEntry>();
+         spe.add(new SimpleParameterEntry("path", vsPath));
+         valueStorageEntry.setId(IdGenerator.generate());
+         valueStorageEntry.setParameters(spe);
+         valueStorageEntry.setFilters(vsparams);
+
+         // containerEntry.setValueStorages();
+         containerEntry.setParameters(params);
+         ArrayList list = new ArrayList(1);
+         list.add(valueStorageEntry);
+
+         containerEntry.setValueStorages(list);
+
+      }
+
+      // Indexer
+      ArrayList qParams = new ArrayList();
+      qParams.add(new SimpleParameterEntry("indexDir", "../temp/index/" + IdGenerator.generate()));
+      QueryHandlerEntry qEntry =
+               new QueryHandlerEntry("org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex", qParams);
+
+      WorkspaceEntry workspaceEntry =
+               new WorkspaceEntry(wsName != null ? wsName : IdGenerator.generate(), "nt:unstructured");
+      workspaceEntry.setContainer(containerEntry);
+
+      ArrayList cacheParams = new ArrayList();
+
+      cacheParams.add(new SimpleParameterEntry("maxSize", "2000"));
+      cacheParams.add(new SimpleParameterEntry("liveTime", "20m"));
+      CacheEntry cacheEntry = new CacheEntry(cacheParams);
+      cacheEntry.setType("org.exoplatform.services.jcr.impl.dataflow.persistent.LinkedWorkspaceStorageCacheImpl");
+
+      workspaceEntry.setCache(cacheEntry);
+
+      workspaceEntry.setQueryHandler(qEntry);
+
+      LockManagerEntry lockManagerEntry = new LockManagerEntry();
+      lockManagerEntry.setTimeout(900000);
+      LockPersisterEntry persisterEntry = new LockPersisterEntry();
+      persisterEntry.setType("org.exoplatform.services.jcr.impl.core.lock.FileSystemLockPersister");
+      ArrayList lpParams = new ArrayList();
+      lpParams.add(new SimpleParameterEntry("path", "../temp/lock"));
+      persisterEntry.setParameters(lpParams);
+      lockManagerEntry.setPersister(persisterEntry);
+      workspaceEntry.setLockManager(lockManagerEntry);
+
+      // workspaceEntry
+      return workspaceEntry;
+   }
+   
+   public void createNewDataSource(String dataSourceName) throws Exception
+   {
+
+      Properties properties = new Properties();
+
+      properties.setProperty("driverClassName", "org.hsqldb.jdbcDriver");
+      String newurl = "jdbc:hsqldb:file:target/temp/data/" + dataSourceName;
+
+      properties.setProperty("url", newurl);
+      properties.setProperty("username", "sa");
+      properties.setProperty("password", "");
+      DataSource bds = BasicDataSourceFactory.createDataSource(properties);
+      if (!newurl.contains("hsqldb"))
+      {
+         createDatabase(bds, dataSourceName);
+      }
+
+      new InitialContext().rebind(dataSourceName, bds);
+   }
+   
+   private void createDatabase(DataSource ds, String dbName) throws SQLException
+   {
+      Connection connection = ds.getConnection();
+      PreparedStatement st = connection.prepareStatement("create database " + dbName);
+      st.executeQuery();
+   }
 }
 



More information about the exo-jcr-commits mailing list