/*
 * Copyright 2014, The OpenNMS Group
 * 
 * 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
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 *     
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.opennms.newts.gsod;


import java.util.Collections;
import java.util.Properties;

import org.opennms.newts.api.DefaultSampleProcessorService;
import org.opennms.newts.api.SampleProcessor;
import org.opennms.newts.api.SampleProcessorService;
import org.opennms.newts.api.SampleRepository;
import org.opennms.newts.persistence.cassandra.CassandraSampleRepository;

import com.codahale.metrics.MetricRegistry;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import com.google.inject.name.Names;


public class Config extends AbstractModule {
    


    @Override
    protected void configure() {

        bind(SampleRepository.class).to(CassandraSampleRepository.class);

        Properties properties = new Properties();
        properties.put("cassandra.keyspace", System.getProperty("cassandra.keyspace", "newts"));
        properties.put("cassandra.hostname", System.getProperty("cassandra.host", "localhost"));
        properties.put("cassandra.port", System.getProperty("cassandra.port", "9042"));
        properties.put("cassandra.compression", System.getProperty("cassandra.compression", "NONE"));
        properties.put("samples.cassandra.time-to-live", System.getProperty("cassandra.time-to-live", "0"));
        Names.bindProperties(binder(), properties);

        bind(MetricRegistry.class).toInstance(new MetricRegistry());

    }

    @Provides
    SampleProcessorService getSampleProcessorService() {
        return new DefaultSampleProcessorService(1, Collections.<SampleProcessor>emptySet());
    }

}

@@ -898,24 +898,134 @@
 Repository;%0A
+import org.opennms.newts.cassandra.CassandraSession;%0Aimport org.opennms.newts.cassandra.CassandraSessionImpl;%0A
 import org.o
@@ -1086,16 +1086,16 @@
 sitory;%0A
-
 %0Aimport 
@@ -1419,16 +1419,85 @@
 .class);
+%0A        bind(CassandraSession.class).to(CassandraSessionImpl.class);
 %0A%0A      
@@ -1730,24 +1730,24 @@
 calhost%22));%0A
-
         prop
@@ -1818,24 +1818,305 @@
 , %229042%22));%0A
+        properties.put(%22cassandra.username%22, System.getProperty(%22cassandra.username%22, %22admin%22));%0A        properties.put(%22cassandra.password%22, System.getProperty(%22cassandra.password%22, %22admin%22));%0A        properties.put(%22cassandra.ssl%22, System.getProperty(%22cassandra.ssl%22, %22false%22));%0A
         prop

Fix missing CassandraSession error when running the GSOD example.