Author: [email protected]
Date: Fri Feb 10 09:12:57 2012
New Revision: 2076

Log:
[AMDATUCASSANDRA-150] Part 3: 
- Made the cassandra server packages in the cassandra-application bundle private
- Embedded and exposed the Thrift API packages in the cassandra-client bundle
- Changed the cassandra server package dependencies in the Hector PM to optional
- Removed dependencies with cassandra server packages from most bundles

Added:
   
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/CassandraServerConfigurationService.java
      - copied, changed from r2075, 
/trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/CassandraConfigurationService.java
   
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraServerConfigurationServiceImpl.java
      - copied, changed from r2075, 
/trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraConfigurationServiceImpl.java
Modified:
   trunk/amdatu-cassandra/cassandra-application/pom.xml
   
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/CassandraConfigurationService.java
   
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/osgi/Activator.java
   
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraConfigurationServiceImpl.java
   
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraDaemonActivatorImpl.java
   
trunk/amdatu-cassandra/cassandra-application/src/test/java/org/amdatu/cassandra/test/unit/application/CassandraUnitTestBase.java
   trunk/amdatu-cassandra/cassandra-client/pom.xml
   
trunk/amdatu-cassandra/cassandra-client/src/main/java/org/amdatu/cassandra/client/service/CassandraClientActivatorServiceImpl.java
   
trunk/amdatu-cassandra/cassandra-client/src/main/java/org/amdatu/cassandra/client/service/CassandraClientServiceImpl.java
   
trunk/amdatu-cassandra/cassandra-client/src/test/java/org/amdatu/cassandra/test/unit/client/CRUDOperationsTest.java
   
trunk/amdatu-cassandra/cassandra-client/src/test/java/org/amdatu/cassandra/test/unit/client/CassandraUnitTestBase.java
   
trunk/amdatu-cassandra/cassandra-client/src/test/java/org/amdatu/cassandra/test/unit/client/mock/LogServiceMock.java
   trunk/amdatu-cassandra/cassandra-listener/pom.xml
   
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/ColumnFamilyDefinition.java
   
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/osgi/Activator.java
   
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/CassandraUpdateListenerImpl.java
   
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/ColumnFamilyHandler.java
   
trunk/amdatu-cassandra/cassandra-listener/src/test/java/org/amdatu/cassandra/test/unit/listener/ListenerTest.java
   trunk/amdatu-cassandra/cassandra-persistencemanager-hector/pom.xml
   
trunk/amdatu-cassandra/test-integration/base/src/main/java/org/amdatu/cassandra/test/integration/base/CassandraFixture.java

Modified: trunk/amdatu-cassandra/cassandra-application/pom.xml
==============================================================================
--- trunk/amdatu-cassandra/cassandra-application/pom.xml        (original)
+++ trunk/amdatu-cassandra/cassandra-application/pom.xml        Fri Feb 10 
09:12:57 2012
@@ -99,6 +99,11 @@
             
<Bundle-SymbolicName>org.amdatu.cassandra.application</Bundle-SymbolicName>
             
<Embed-Dependency>!apache-cassandra|apache-cassandra-thrift|libthrift;scope=compile</Embed-Dependency>
             <Embed-Transitive>true</Embed-Transitive>
+            <Private-Package>
+              org.apache.cassandra.*,
+              org.apache.thrift.*,
+              org.amdatu.cassandra.application.*
+            </Private-Package>
             <Import-Package>
               !com.ibm.uvm.tools,
               !com.sun.jdmk.comm,
@@ -108,33 +113,30 @@
               !javax.jmdns,
               !javax.jms,
               !javax.mail.*,
+              !javax.servlet.jsp,
               !javax.swing.*,
               !jline,
               !joptsimple,
               !junit.framework,
+              !org.apache.commons.cli,
+              !org.apache.commons.codec.*,
+              !org.apache.commons.httpclient.*,
+              !org.apache.commons.logging.*,
+              !org.apache.commons.net.ftp,
               !org.apache.http.*,
+              !org.apache.jasper.*,
               !org.apache.tools.ant.*,
               !org.apache.velocity.*,
               !org.jboss.netty.*,
               !org.joda.time,
               !org.znerd.xmlenc,
               !org.mortbay.*,
-              !org.apache.commons.cli,
-              !org.apache.commons.codec.*,
               !org.kosmix.kosmosfs.access,
-              !org.apache.commons.httpclient.*,
               !org.jets3t.*,
-              !org.apache.jasper.*,
-              !org.apache.commons.logging.*,
-              !org.apache.commons.net.ftp,
-              !javax.servlet.jsp,
               *
             </Import-Package>
             <Export-Package>
-              org.amdatu.cassandra.*;version="1.0.0",
-              
org.apache.cassandra.thrift;-split-package:=merge-first;version="1.0.0",
-              org.apache.cassandra.*;version="1.0.0",
-              org.apache.thrift.*;version="1.0.0",
+              org.amdatu.cassandra.application;version="1.0.0"
             </Export-Package>
           </instructions>
         </configuration>

Copied: 
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/CassandraServerConfigurationService.java
 (from r2075, 
/trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/CassandraConfigurationService.java)
==============================================================================
--- 
/trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/CassandraConfigurationService.java
     (original)
+++ 
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/CassandraServerConfigurationService.java
        Fri Feb 10 09:12:57 2012
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2010, 2011 The Amdatu Foundation
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -18,10 +18,10 @@
 
 /**
  * Interface for the Cassandra Configuration Service.
- * 
+ *
  * @author ivol
  */
-public interface CassandraConfigurationService {
+public interface CassandraServerConfigurationService {
     /**
      * The service's configuration PID.
      */
@@ -101,35 +101,35 @@
     /**
      * Returns if this Cassandra node is running in auto bootstrap mode. Auto 
bootstrap mode is
      * enabled for new nodes joining the cluster.
-     * 
+     *
      * @return true if auto bootstrap is enabled, false otherwise
      */
     boolean isAutoBootstrapMode();
 
     /**
      * Returns the RPC address to be used by Thrift clients.
-     * 
+     *
      * @return the RPC address.
      */
     String getRPCAddress();
 
     /**
      * Returns the RPC port to be used by Thrift clients.
-     * 
+     *
      * @return the RPC port.
      */
     int getRPCPort();
 
     /**
      * Returns the Storage port.
-     * 
+     *
      * @return the Storage port.
      */
     int getStoragePort();
 
     /**
      * Returns the name of the cluster that this node is part of.
-     * 
+     *
      * @return the name of the cluster that this node is part of.
      */
     String getClustername();

Modified: 
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/osgi/Activator.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/osgi/Activator.java
     (original)
+++ 
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/osgi/Activator.java
     Fri Feb 10 09:12:57 2012
@@ -15,9 +15,9 @@
  */
 package org.amdatu.cassandra.application.osgi;
 
-import org.amdatu.cassandra.application.CassandraConfigurationService;
-import 
org.amdatu.cassandra.application.service.CassandraConfigurationServiceImpl;
+import org.amdatu.cassandra.application.CassandraServerConfigurationService;
 import org.amdatu.cassandra.application.service.CassandraDaemonActivatorImpl;
+import 
org.amdatu.cassandra.application.service.CassandraServerConfigurationServiceImpl;
 import org.amdatu.core.config.templates.ConfigTemplateManager;
 
 import org.apache.felix.dm.DependencyActivatorBase;
@@ -43,18 +43,18 @@
         // Register the Cassandra configuration service
         manager.add(
             createComponent()
-                .setImplementation(CassandraConfigurationServiceImpl.class)
-                .setInterface(CassandraConfigurationService.class.getName(), 
null)
+                
.setImplementation(CassandraServerConfigurationServiceImpl.class)
+                
.setInterface(CassandraServerConfigurationService.class.getName(), null)
                 
.add(createServiceDependency().setService(LogService.class).setRequired(true))
                 
.add(createServiceDependency().setService(ConfigTemplateManager.class).setRequired(true))
-                
.add(createConfigurationDependency().setPid(CassandraConfigurationServiceImpl.PID)));
+                
.add(createConfigurationDependency().setPid(CassandraServerConfigurationService.PID)));
 
         // Register the Cassandra daemon activator
         manager.add(
             createComponent()
                 .setImplementation(CassandraDaemonActivatorImpl.class)
                 
.add(createServiceDependency().setService(LogService.class).setRequired(true))
-                
.add(createServiceDependency().setService(CassandraConfigurationService.class).setRequired(true)));
+                
.add(createServiceDependency().setService(CassandraServerConfigurationService.class).setRequired(true)));
     }
 
     /**

Modified: 
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraDaemonActivatorImpl.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraDaemonActivatorImpl.java
       (original)
+++ 
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraDaemonActivatorImpl.java
       Fri Feb 10 09:12:57 2012
@@ -15,7 +15,7 @@
  */
 package org.amdatu.cassandra.application.service;
 
-import org.amdatu.cassandra.application.CassandraConfigurationService;
+import org.amdatu.cassandra.application.CassandraServerConfigurationService;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -37,7 +37,7 @@
 public class CassandraDaemonActivatorImpl {
     // Service dependencies, injected by the framework
     private volatile LogService m_logService;
-    private volatile CassandraConfigurationService m_configuration = null;
+    private volatile CassandraServerConfigurationService m_configuration = 
null;
 
     // The Cassandra daemon
     private CassandraDaemon m_daemon = null;

Copied: 
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraServerConfigurationServiceImpl.java
 (from r2075, 
/trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraConfigurationServiceImpl.java)
==============================================================================
--- 
/trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraConfigurationServiceImpl.java
 (original)
+++ 
trunk/amdatu-cassandra/cassandra-application/src/main/java/org/amdatu/cassandra/application/service/CassandraServerConfigurationServiceImpl.java
    Fri Feb 10 09:12:57 2012
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2010, 2011 The Amdatu Foundation
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -15,7 +15,7 @@
  */
 package org.amdatu.cassandra.application.service;
 
-import org.amdatu.cassandra.application.CassandraConfigurationService;
+import org.amdatu.cassandra.application.CassandraServerConfigurationService;
 import org.amdatu.core.config.templates.ConfigTemplateCallbackHandler;
 import org.amdatu.core.config.templates.ConfigTemplateManager;
 
@@ -33,10 +33,10 @@
 
 /**
  * This class provides utility methods to prepare Cassandra configuration 
before starting it.
- * 
+ *
  * @author ivol
  */
-public class CassandraConfigurationServiceImpl implements 
CassandraConfigurationService, ManagedService {
+public class CassandraServerConfigurationServiceImpl implements 
CassandraServerConfigurationService, ManagedService {
     // Statics
     private static final String STORAGE_CONF_SOURCE = "conf/cassandra.yaml";
     private static final String LOG4J_CONF_SOURCE = "conf/log4j.properties";
@@ -71,7 +71,7 @@
         // Initialize storage configuration
         // Load the URL of the storage-conf.xml and write it file using the 
config template
         // manager, which automatically replaces configuration entries in that 
file
-        File storageConfigFile = new File(m_workDir, 
CassandraConfigurationService.STORAGE_CONF_XML);
+        File storageConfigFile = new File(m_workDir, STORAGE_CONF_XML);
         Bundle bundle = m_bundleContext.getBundle();
         URL url = bundle.getResource(STORAGE_CONF_SOURCE);
         try {
@@ -86,7 +86,7 @@
         }
 
         // Initialize log4j
-        File log4jPropertiesFile = new File(m_workDir, 
CassandraConfigurationService.LOG4J_CONF_TARGET);
+        File log4jPropertiesFile = new File(m_workDir, LOG4J_CONF_TARGET);
         url = bundle.getResource(LOG4J_CONF_SOURCE);
         ClassLoader oldClassLoader = 
Thread.currentThread().getContextClassLoader();
         try {
@@ -199,12 +199,12 @@
         private String m_amdatuDir = System.getProperty("amdatu.dir");
 
         public String getValue(final String pid, final String property, final 
Object configValue) {
-            if (CassandraConfigurationService.PID.equals(pid) && m_amdatuDir 
!= null) {
-                if 
(CassandraConfigurationService.CONFIG_WORKDIR.equals(property)
-                    || 
CassandraConfigurationService.COMMITLOG_DIR.equals(property)
-                    || 
CassandraConfigurationService.DATAFILE_DIR.equals(property)
-                    || 
CassandraConfigurationService.SAVEDCACHES_DIR.equals(property)
-                    || 
CassandraConfigurationService.LOG4JLOG_DIR.equals(property)) {
+            if (PID.equals(pid) && m_amdatuDir != null) {
+                if (CONFIG_WORKDIR.equals(property)
+                    || COMMITLOG_DIR.equals(property)
+                    || DATAFILE_DIR.equals(property)
+                    || SAVEDCACHES_DIR.equals(property)
+                    || LOG4JLOG_DIR.equals(property)) {
                     // If amdatu.dir is provided as a system property, convert 
the directories to absolute directories
                     String dir = m_amdatuDir + File.separator + 
configValue.toString();
                     dir = dir.replace("\\", "/");

Modified: 
trunk/amdatu-cassandra/cassandra-application/src/test/java/org/amdatu/cassandra/test/unit/application/CassandraUnitTestBase.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-application/src/test/java/org/amdatu/cassandra/test/unit/application/CassandraUnitTestBase.java
    (original)
+++ 
trunk/amdatu-cassandra/cassandra-application/src/test/java/org/amdatu/cassandra/test/unit/application/CassandraUnitTestBase.java
    Fri Feb 10 09:12:57 2012
@@ -22,11 +22,12 @@
 import org.apache.cassandra.io.util.FileUtils;
 import org.apache.cassandra.thrift.CassandraDaemon;
 
+
 /**
  * This class implements the base class for all Unit tests of this bundle. It 
starts an
  * in-VM Cassandra to run the test against. It mocks the required service 
dependencies,
  * like the LogService, ConfigurationService and EventAdmin.
- * 
+ *
  * @author <a href=mailto:[email protected]>Amdatu Project Team</a>
  */
 public abstract class CassandraUnitTestBase {
@@ -53,7 +54,7 @@
      * If embedCassandra is true, the unit test will embed an actual Cassandra 
daemon in the persistence manager,
      * making this more a kind of integration test executed from a unit test. 
If embedCassandra is false, all
      * method calls to Cassandra will be mocked (simulated).
-     * 
+     *
      * @param embedCassandra
      */
     public void createDaemon() throws Exception {

Modified: trunk/amdatu-cassandra/cassandra-client/pom.xml
==============================================================================
--- trunk/amdatu-cassandra/cassandra-client/pom.xml     (original)
+++ trunk/amdatu-cassandra/cassandra-client/pom.xml     Fri Feb 10 09:12:57 2012
@@ -29,9 +29,34 @@
 
   <dependencies>
     <dependency>
-      <groupId>org.amdatu.cassandra</groupId>
-      <artifactId>org.amdatu.cassandra.application</artifactId>
-      <type>bundle</type>
+      <groupId>org.apache.cassandra</groupId>
+      <artifactId>cassandra-all</artifactId>
+      <version>${cassandra.version}</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.cassandra</groupId>
+      <artifactId>cassandra-thrift</artifactId>
+      <version>${cassandra.version}</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.thrift</groupId>
+      <artifactId>libthrift</artifactId>
+      <version>0.6.1</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <version>${slf4j.version}</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-jdk14</artifactId>
+      <version>${slf4j.version}</version>
+      <scope>compile</scope>
     </dependency>
   </dependencies>
 
@@ -47,8 +72,33 @@
           <instructions>
             
<Bundle-Activator>org.amdatu.cassandra.client.osgi.Activator</Bundle-Activator>
             
<Bundle-SymbolicName>org.amdatu.cassandra.client</Bundle-SymbolicName>
+            <Embed-Dependency>*;scope=compile</Embed-Dependency>
+            <Embed-Transitive>true</Embed-Transitive>
+            <Import-Package>
+              !com.ibm.uvm.tools,
+              !com.sun.jdmk.comm,
+              !com.sun.jna,
+              !com.thoughtworks.paranamer,
+              !edu.emory.mathcs.backport.java.util,
+              !javax.jmdns,
+              !javax.jms,
+              !javax.mail.*,
+              !javax.swing.*,
+              !joptsimple,
+              !junit.framework,
+              !org.apache.avalon.framework.logger,
+              !org.apache.hadoop.*,
+              !org.apache.log,
+              !org.apache.tools.ant.*,
+              !org.apache.velocity.*,
+              !org.jboss.netty.*,
+              !org.joda.time,
+              *
+            </Import-Package>
             <Export-Package>
-              org.amdatu.cassandra.client.*;version="1.0.0"
+              org.amdatu.cassandra.client;version="1.0.0",
+              
org.apache.cassandra.thrift;-split-package:=merge-first;version="1.0.0",
+              org.apache.thrift.*;version="1.0.0",
             </Export-Package>
           </instructions>
         </configuration>

Modified: 
trunk/amdatu-cassandra/cassandra-client/src/main/java/org/amdatu/cassandra/client/service/CassandraClientActivatorServiceImpl.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-client/src/main/java/org/amdatu/cassandra/client/service/CassandraClientActivatorServiceImpl.java
  (original)
+++ 
trunk/amdatu-cassandra/cassandra-client/src/main/java/org/amdatu/cassandra/client/service/CassandraClientActivatorServiceImpl.java
  Fri Feb 10 09:12:57 2012
@@ -18,11 +18,10 @@
 import org.amdatu.cassandra.client.CassandraClientConfigurationService;
 import org.amdatu.cassandra.client.CassandraDaemonAvailable;
 
-import org.apache.cassandra.service.StorageService;
 import org.apache.cassandra.thrift.Cassandra;
-import org.apache.cassandra.thrift.TBinaryProtocol;
 import org.apache.felix.dm.Component;
 import org.apache.felix.dm.DependencyManager;
+import org.apache.thrift.protocol.TBinaryProtocol;
 import org.apache.thrift.protocol.TProtocol;
 import org.apache.thrift.transport.TSocket;
 import org.apache.thrift.transport.TTransport;
@@ -44,7 +43,6 @@
     // Timeout for the initial Thrift connection
     private static final int THRIFT_RETRIES = 3;
     private static final int THRIFT_TIMEOUT = 3000;
-    private static final int DAEMON_TIMEOUT = 5000;
 
     // Service dependencies injected by the dependency manager
     private volatile DependencyManager m_dependencyManager;
@@ -67,7 +65,7 @@
         if (m_activatorThread != null && m_activatorThread.isAlive()) {
             m_activatorThread.interrupt();
         }
-        
+
         // Unregister the CassandraDaemonAvailabkle service component
         if (m_serviceAvailableComponent != null) {
             m_dependencyManager.remove(m_serviceAvailableComponent);
@@ -81,41 +79,53 @@
                 // established as soon as the daemon is running.
                 testThriftConnection();
 
+                // Register a new CassandraDaemonAvailable service
+                CassandraDaemonAvailable service = new 
CassandraDaemonAvailable() {
+                };
+
+                m_serviceAvailableComponent = 
m_dependencyManager.createComponent()
+                    .setInterface(CassandraDaemonAvailable.class.getName(), 
null)
+                    .setImplementation(service);
+                m_dependencyManager.add(m_serviceAvailableComponent);
+
+                // FIXME: In the new approach with a strict separation between 
client and server, we can no
+                // longer monitor the operation mode of the Cassandra daemon 
(Besides, there might be more then
+                // one). So the code below can no longer work. The question is 
if this does not lead to any
+                // problems, this needs to be tested thoroughly.
+
                 // Now wait until the operation mode of the daemon becomes 
"Normal". In auto bootstrap mode this can
                 // take quite a while (2 minutes minimum). In a single node 
cluster this will be almost immediately.
                 // Unfortunately the operation mode is not covered by any enum 
value.
-                String operationMode = 
StorageService.instance.getOperationMode();
-                while (!"Normal".equals(operationMode) && !isInterrupted() && 
isAlive()) {
-                    m_logService.log(LogService.LOG_INFO, "Current Cassandra 
Daemon operation mode is '"
-                                    + operationMode
-                                    + "', waiting for daemon to reach 
operation mode 'Normal'");
-                    Thread.sleep(DAEMON_TIMEOUT);
-                    operationMode = StorageService.instance.getOperationMode();
-                }
-
-                if 
("Normal".equals(StorageService.instance.getOperationMode())) {
-                    m_logService.log(LogService.LOG_INFO, "Operation mode is 
now 'Normal', continuing starting "
-                                    + "Cassandra");
-
-                    // Register a new CassandraDaemonAvailable service
-                    CassandraDaemonAvailable service = new 
CassandraDaemonAvailable() {};
-
-                    m_serviceAvailableComponent =  
m_dependencyManager.createComponent()
-                                    
.setInterface(CassandraDaemonAvailable.class.getName(), null)
-                                    .setImplementation(service);
-                    m_dependencyManager.add(m_serviceAvailableComponent);
-                }
+                /*
+                 * String operationMode = 
StorageService.instance.getOperationMode();
+                 * while (!"Normal".equals(operationMode) && !isInterrupted() 
&& isAlive()) {
+                 * m_logService.log(LogService.LOG_INFO, "Current Cassandra 
Daemon operation mode is '"
+                 * + operationMode
+                 * + "', waiting for daemon to reach operation mode 'Normal'");
+                 * Thread.sleep(DAEMON_TIMEOUT);
+                 * operationMode = "Normal";// FIXME 
StorageService.instance.getOperationMode();
+                 * }
+                 * 
+                 * if ("Normal".equals("Normal")) { // FIXME 
NORMALStorageService.instance.getOperationMode())) {
+                 * m_logService.log(LogService.LOG_INFO, "Operation mode is 
now 'Normal', continuing starting "
+                 * + "Cassandra");
+                 * 
+                 * // Register a new CassandraDaemonAvailable service
+                 * CassandraDaemonAvailable service = new 
CassandraDaemonAvailable() {};
+                 * 
+                 * m_serviceAvailableComponent = 
m_dependencyManager.createComponent()
+                 * .setInterface(CassandraDaemonAvailable.class.getName(), 
null)
+                 * .setImplementation(service);
+                 * m_dependencyManager.add(m_serviceAvailableComponent);
+                 * }
+                 */
             }
             catch (TTransportException e) {
                 m_logService.log(LogService.LOG_ERROR, "Could not establish 
Thrift connection to Cassandra daemon, "
-                                + "daemon could not be started.");
-            }
-            catch (InterruptedException e) {
-                m_logService.log(LogService.LOG_ERROR, "Starting Cassandra 
daemon interrupted.");
+                    + "daemon could not be started.");
             }
         }
 
-
         /**
          * This methods opens a Thrift connection to the Cassandra daemon and 
returns if the connection
          * has been established. This is useful to ensure that the daemon is 
running before continuing.
@@ -127,7 +137,7 @@
             try {
                 String thrift = m_configuration.getRPCAddress() + ":" + 
m_configuration.getRPCPort();
                 m_logService.log(LogService.LOG_INFO, "Establishing Thrift 
connection to the Cassandra Daemon on "
-                                + thrift);
+                    + thrift);
                 TTransport tr = new TSocket(m_configuration.getRPCAddress(), 
m_configuration.getRPCPort(),
                     THRIFT_TIMEOUT);
                 TProtocol proto = new TBinaryProtocol(tr);
@@ -146,7 +156,7 @@
                     m_logService.log(LogService.LOG_DEBUG, "Wait for Thrift 
connection interrupted");
                 }
                 m_logService.log(LogService.LOG_INFO, "Thrift connection 
cannot yet be established, retrying... ("
-                                + retry + ")");
+                    + retry + ")");
             }
             m_logService.log(LogService.LOG_INFO, "Thrift connection 
established successfully");
         }

Modified: 
trunk/amdatu-cassandra/cassandra-client/src/main/java/org/amdatu/cassandra/client/service/CassandraClientServiceImpl.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-client/src/main/java/org/amdatu/cassandra/client/service/CassandraClientServiceImpl.java
   (original)
+++ 
trunk/amdatu-cassandra/cassandra-client/src/main/java/org/amdatu/cassandra/client/service/CassandraClientServiceImpl.java
   Fri Feb 10 09:12:57 2012
@@ -26,17 +26,14 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.cassandra.db.Table;
-import org.apache.cassandra.service.StorageProxy;
-import org.apache.cassandra.service.StorageService;
 import org.apache.cassandra.thrift.Cassandra;
 import org.apache.cassandra.thrift.CfDef;
 import org.apache.cassandra.thrift.InvalidRequestException;
 import org.apache.cassandra.thrift.KsDef;
 import org.apache.cassandra.thrift.NotFoundException;
 import org.apache.cassandra.thrift.SchemaDisagreementException;
-import org.apache.cassandra.thrift.TBinaryProtocol;
 import org.apache.thrift.TException;
+import org.apache.thrift.protocol.TBinaryProtocol;
 import org.apache.thrift.protocol.TProtocol;
 import org.apache.thrift.transport.TFramedTransport;
 import org.apache.thrift.transport.TSocket;
@@ -54,7 +51,9 @@
 public class CassandraClientServiceImpl implements CassandraClientService {
     // The default placement strategy
     private static final String DEFAULT_PLACEMENT_STRATEGY = 
"org.apache.cassandra.locator.SimpleStrategy";
-
+    private static final String SYSTEM_TABLE = "system";
+    private static final String UNREACHABLE = "UNREACHABLE";
+    
     // Although this is a standard strategy option, there is no constant, enum 
or whatever defining the parameter
     // name for the replication_factor option in Cassandra (internally hard 
coded "replication_factor" is used all over
     // the place), so we define it here for internal use.
@@ -107,7 +106,11 @@
 
     private synchronized Cassandra.Iface getCassandraClient() throws 
TTransportException {
         // This returns the IP addresses of all live nodes in the ring
-        List<String> liveNodes = StorageService.instance.getLiveNodes();
+        // FIXME: with the separation of client and server we can no longer 
monitor the
+        // live nodes.
+        // Was: List<String> liveNodes = 
StorageService.instance.getLiveNodes();
+        List<String> liveNodes = new ArrayList<String>();
+        liveNodes.add(m_configuration.getRPCAddress()); // 
 
         // Sort the list and pick the first record
         Collections.sort(liveNodes);
@@ -222,7 +225,7 @@
             Map<String, List<String>> schemas = 
getCassandraClient().describe_schema_versions();
             String version = null;
             for (String key : schemas.keySet()) {
-                if (StorageProxy.UNREACHABLE.equals(key)) {
+                if (UNREACHABLE.equals(key)) {
                     m_logService.log(LogService.LOG_DEBUG, "Ignoring version 
of unreacheable node(s): " + key + "="
                                     + schemas.get(key));
                 }
@@ -334,7 +337,10 @@
 
     public synchronized void setReplicationFactor(final int replicationFactor) 
{
         try {
-            int clusterSize = StorageService.instance.getLiveNodes().size();
+            // FIXME: with the separation of client and server we can no 
longer monitor the
+            // live nodes using StorageService.
+            // was: int clusterSize = 
StorageService.instance.getLiveNodes().size();
+            int clusterSize = 1; 
             if (replicationFactor > clusterSize) {
                 throw new InvalidRequestException("Replication factor " + 
replicationFactor
                     + " may never exceed the amount of nodes "
@@ -533,7 +539,7 @@
 
         String cfName = cfDef.getName();
         cfDef.setKeyspace(keyspace);
-        if (keyspace.equals(Table.SYSTEM_TABLE)) {
+        if (keyspace.equals(SYSTEM_TABLE)) {
             throw new ThriftException("ColumnFamily's cannot be added to 
Cassandra's system keyspace");
         }
         try {
@@ -571,7 +577,7 @@
 
         String cfName = cfDef.getName();
         cfDef.setKeyspace(keyspace);
-        if (keyspace.equals(Table.SYSTEM_TABLE)) {
+        if (keyspace.equals(SYSTEM_TABLE)) {
             throw new ThriftException("ColumnFamily's cannot be updated in 
Cassandra's system keyspace");
         }
         try {

Modified: trunk/amdatu-cassandra/cassandra-listener/pom.xml
==============================================================================
--- trunk/amdatu-cassandra/cassandra-listener/pom.xml   (original)
+++ trunk/amdatu-cassandra/cassandra-listener/pom.xml   Fri Feb 10 09:12:57 2012
@@ -30,11 +30,6 @@
   <dependencies>
     <dependency>
       <groupId>org.amdatu.cassandra</groupId>
-      <artifactId>org.amdatu.cassandra.application</artifactId>
-      <type>bundle</type>
-    </dependency>
-    <dependency>
-      <groupId>org.amdatu.cassandra</groupId>
       <artifactId>org.amdatu.cassandra.client</artifactId>
       <type>bundle</type>
     </dependency>
@@ -64,7 +59,6 @@
             
<Bundle-Activator>org.amdatu.cassandra.listener.osgi.Activator</Bundle-Activator>
             
<Bundle-SymbolicName>org.amdatu.cassandra.listener</Bundle-SymbolicName>
             <Import-Package>
-              org.amdatu.cassandra.application;version="[1.0,2.0)",
               org.amdatu.cassandra.listener,
               org.apache.cassandra.thrift.*;version="[1.0,2.0)",
               org.apache.thrift.*;version="[1.0,2.0)",

Modified: 
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/ColumnFamilyDefinition.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/ColumnFamilyDefinition.java
   (original)
+++ 
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/ColumnFamilyDefinition.java
   Fri Feb 10 09:12:57 2012
@@ -15,12 +15,7 @@
  */
 package org.amdatu.cassandra.listener;
 
-import org.apache.cassandra.db.marshal.AsciiType;
-import org.apache.cassandra.db.marshal.BytesType;
-import org.apache.cassandra.db.marshal.LexicalUUIDType;
-import org.apache.cassandra.db.marshal.LongType;
-import org.apache.cassandra.db.marshal.TimeUUIDType;
-import org.apache.cassandra.db.marshal.UTF8Type;
+
 import org.apache.cassandra.thrift.CfDef;
 
 /**
@@ -73,32 +68,32 @@
         /**
          * A column or super column name comparator of type bytes.
          */
-        BYTESTYPE(BytesType.class.getName()),
+        BYTESTYPE("org.apache.cassandra.db.marshal.BytesType"),
 
             /**
              * A column or super column name comparator of type ASCII.
              */
-            ASCIITYPE(AsciiType.class.getName()),
+            ASCIITYPE("org.apache.cassandra.db.marshal.(AsciiType"),
 
             /**
              * A column or super column name comparator of type UTF-8 string.
              */
-            UTF8TYPE(UTF8Type.class.getName()),
+            UTF8TYPE("org.apache.cassandra.db.marshal.UTF8Type"),
 
             /**
              * A column or super column name non-time based comparator. It is 
compared lexically, by byte value.
              */
-            LEXICALUUIDTYPE(LexicalUUIDType.class.getName()),
+            LEXICALUUIDTYPE("org.apache.cassandra.db.marshal.LexicalUUIDType"),
             
             /**
              * A column or super column name non-time based comparator. It 
uses a version 1 UUID.
              */
-            TIMEUUIDTYPE(TimeUUIDType.class.getName()),
+            TIMEUUIDTYPE("org.apache.cassandra.db.marshal.TimeUUIDType"),
             
             /**
              * A column or super column name comparator of type Long.
              */
-            LONGTYPE(LongType.class.getName());
+            LONGTYPE("org.apache.cassandra.db.marshal.LongType");
 
         private String m_value;
 

Modified: 
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/osgi/Activator.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/osgi/Activator.java
   (original)
+++ 
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/osgi/Activator.java
   Fri Feb 10 09:12:57 2012
@@ -20,6 +20,7 @@
 import org.amdatu.cassandra.listener.service.CassandraUpdateListenerImpl;
 import org.amdatu.cassandra.listener.service.ColumnFamilyHandler;
 import 
org.amdatu.cassandra.persistencemanager.CassandraPersistenceManagerFactory;
+
 import org.apache.felix.dm.DependencyActivatorBase;
 import org.apache.felix.dm.DependencyManager;
 import org.osgi.framework.BundleContext;
@@ -41,7 +42,7 @@
 
         // Register the CassandraColumnFamilyProvider listener
         manager
-            .add(
+            .add( 
             createComponent()
                 .setImplementation(ColumnFamilyHandler.class)
                 
.add(createServiceDependency().setService(LogService.class).setRequired(true))

Modified: 
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/CassandraUpdateListenerImpl.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/CassandraUpdateListenerImpl.java
      (original)
+++ 
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/CassandraUpdateListenerImpl.java
      Fri Feb 10 09:12:57 2012
@@ -15,6 +15,13 @@
  */
 package org.amdatu.cassandra.listener.service;
 
+import org.amdatu.cassandra.client.CassandraClientService;
+import org.amdatu.cassandra.listener.ColumnFamilyAvailable;
+import org.amdatu.cassandra.listener.ColumnFamilyDefinition;
+import org.amdatu.cassandra.listener.ColumnFamilyProvider;
+import org.amdatu.cassandra.persistencemanager.CassandraPersistenceManager;
+import 
org.amdatu.cassandra.persistencemanager.CassandraPersistenceManagerFactory;
+
 import java.util.Dictionary;
 import java.util.HashMap;
 import java.util.Hashtable;
@@ -23,13 +30,6 @@
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
-import org.amdatu.cassandra.client.CassandraClientService;
-import org.amdatu.cassandra.listener.ColumnFamilyAvailable;
-import org.amdatu.cassandra.listener.ColumnFamilyDefinition;
-import org.amdatu.cassandra.listener.ColumnFamilyProvider;
-import org.amdatu.cassandra.persistencemanager.CassandraPersistenceManager;
-import 
org.amdatu.cassandra.persistencemanager.CassandraPersistenceManagerFactory;
-import org.apache.cassandra.db.Table;
 import org.apache.cassandra.thrift.InvalidRequestException;
 import org.apache.cassandra.thrift.NotFoundException;
 import org.apache.felix.dm.Component;
@@ -52,7 +52,9 @@
  *
  * @author ivol
  */
-public class CassandraUpdateListenerImpl {
+public class CassandraUpdateListenerImpl {
+    private static final String SYSTEM_TABLE = "system";
+    
     // Services injected by the dependency manager
     private volatile LogService m_logService;
     private volatile CassandraClientService m_daemonService;
@@ -163,7 +165,7 @@
             Map<String, List<String>> map = new HashMap<String, 
List<String>>();
             for (String keyspace : m_daemonService.getKeyspaces()) {
                 // Ignore the system keyspace
-                if (!Table.SYSTEM_TABLE.equals(keyspace)) {
+                if (!SYSTEM_TABLE.equals(keyspace)) {
                     map.put(keyspace, 
m_daemonService.getColumnFamilies(keyspace));
                 }
             }

Modified: 
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/ColumnFamilyHandler.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/ColumnFamilyHandler.java
      (original)
+++ 
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/ColumnFamilyHandler.java
      Fri Feb 10 09:12:57 2012
@@ -15,12 +15,12 @@
  */
 package org.amdatu.cassandra.listener.service;
 
-import java.util.List;
-
 import org.amdatu.cassandra.client.CassandraClientService;
 import org.amdatu.cassandra.listener.ColumnFamilyDefinition;
 import org.amdatu.cassandra.listener.ColumnFamilyProvider;
-import org.apache.cassandra.db.Table;
+
+import java.util.List;
+
 import org.apache.cassandra.thrift.CfDef;
 import org.apache.cassandra.thrift.InvalidRequestException;
 import org.apache.cassandra.thrift.NotFoundException;
@@ -35,6 +35,8 @@
  * data is synchronized between Cassandra nodes).
  */
 public class ColumnFamilyHandler {
+    private static final String SYSTEM_TABLE = "system";
+    
     // Service dependencies, injected by the dependency manager
     private volatile LogService m_logService;
     private volatile CassandraClientService m_daemonService;
@@ -50,7 +52,7 @@
                 if (keyspaces != null) {
                     for (String keyspace : keyspaces) {
                         // Never add ColumnFamily's to Cassandra's system 
keyspace, this is a reserved keyspace
-                        if (!Table.SYSTEM_TABLE.equals(keyspace)) {
+                        if (!SYSTEM_TABLE.equals(keyspace)) {
                             // Create if it does not yet exist
                             m_daemonService.addKeyspace(keyspace);
                             addOrUpdateColumnFamily(m_daemonService, keyspace, 
columnFamily);
@@ -66,7 +68,7 @@
                             "For more information, see 
http://jira.amdatu.org/jira/browse/AMDATUCASSANDRA-118";;
                     m_logService.log(LogService.LOG_WARNING, msg);
                     for (String keyspaceDef : keyspaceDefinitions) {
-                        if (!Table.SYSTEM_TABLE.equals(keyspaceDef)) {
+                        if (!SYSTEM_TABLE.equals(keyspaceDef)) {
                             addOrUpdateColumnFamily(m_daemonService, 
keyspaceDef, columnFamily);
                         }
                     }

Modified: 
trunk/amdatu-cassandra/cassandra-listener/src/test/java/org/amdatu/cassandra/test/unit/listener/ListenerTest.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-listener/src/test/java/org/amdatu/cassandra/test/unit/listener/ListenerTest.java
   (original)
+++ 
trunk/amdatu-cassandra/cassandra-listener/src/test/java/org/amdatu/cassandra/test/unit/listener/ListenerTest.java
   Fri Feb 10 09:12:57 2012
@@ -29,7 +29,6 @@
 
 import java.nio.ByteBuffer;
 
-import org.apache.cassandra.db.marshal.UTF8Type;
 import org.apache.cassandra.thrift.CfDef;
 import org.apache.cassandra.thrift.ColumnDef;
 import org.apache.cassandra.thrift.IndexType;
@@ -191,7 +190,7 @@
         // Add a ColumnDefinition, should succeed
         cfDef.setColumn_type(ColumnType.STANDARD.getValue());
         ByteBuffer name = ByteBuffer.wrap("indexcol".getBytes("UTF-8"));
-        ColumnDef cDef = new ColumnDef(name, UTF8Type.class.getName());
+        ColumnDef cDef = new ColumnDef(name, 
"org.apache.cassandra.db.marshal.UTF8Type");
         cDef.setIndex_type(IndexType.KEYS);
         cfDef.addToColumn_metadata(cDef);
         Assert.assertTrue(m_daemon.updateColumnFamily(TEST_KS, cfDef));

Modified: trunk/amdatu-cassandra/cassandra-persistencemanager-hector/pom.xml
==============================================================================
--- trunk/amdatu-cassandra/cassandra-persistencemanager-hector/pom.xml  
(original)
+++ trunk/amdatu-cassandra/cassandra-persistencemanager-hector/pom.xml  Fri Feb 
10 09:12:57 2012
@@ -146,7 +146,7 @@
               org.amdatu.cassandra.application;version="[1.0,2.0)",
               org.amdatu.cassandra.persistencemanager.hector,
               me.prettyprint.hector.api.*;version="[1.0,1.1)",
-              org.apache.cassandra.*;version="[1.0,2.0)",
+              org.apache.cassandra.thrift.*;version="[1.0,2.0)",
               org.apache.thrift.*;version="[1.0,2.0)",
               !com.ibm.uvm.tools,
               !com.sun.jdmk.comm,
@@ -155,6 +155,13 @@
               !javax.jms,
               !javax.mail,
               !javax.mail.internet,
+              !org.apache.cassandra.concurrent,
+              !org.apache.cassandra.config,
+              !org.apache.cassandra.db.*,
+              !org.apache.cassandra.io.util,
+              !org.apache.cassandra.locator,
+              !org.apache.cassandra.service,
+              !org.apache.cassandra.utils,
               *
             </Import-Package>
             <Export-Package>

Modified: 
trunk/amdatu-cassandra/test-integration/base/src/main/java/org/amdatu/cassandra/test/integration/base/CassandraFixture.java
==============================================================================
--- 
trunk/amdatu-cassandra/test-integration/base/src/main/java/org/amdatu/cassandra/test/integration/base/CassandraFixture.java
 (original)
+++ 
trunk/amdatu-cassandra/test-integration/base/src/main/java/org/amdatu/cassandra/test/integration/base/CassandraFixture.java
 Fri Feb 10 09:12:57 2012
@@ -18,7 +18,7 @@
 import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
 import static org.ops4j.pax.exam.CoreOptions.wrappedBundle;
 
-import org.amdatu.cassandra.application.CassandraConfigurationService;
+import org.amdatu.cassandra.application.CassandraServerConfigurationService;
 import org.amdatu.cassandra.client.CassandraClientConfigurationService;
 import org.amdatu.core.itest.base.TestContext;
 
@@ -78,7 +78,7 @@
     }
 
     public void configureCassandraDaemon(TestContext testContext) throws 
Exception {
-        testContext.updateConfig(CassandraConfigurationService.PID, 
getCassandraServerConfig());
+        testContext.updateConfig(CassandraServerConfigurationService.PID, 
getCassandraServerConfig());
         testContext.updateConfig(CassandraClientConfigurationService.PID, 
getCassandraClientConfig());
     }
 
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits

Reply via email to