From a1844cef2abdbf671690e8ac450d4d96434fdc4e Mon Sep 17 00:00:00 2001 From: sameira Date: Sun, 29 Nov 2015 20:34:40 +0530 Subject: [PATCH 1/7] Adding initial files --- spring-data-cassandra/pom.xml | 89 +++++++++++++++++++ .../src/main/java/org/baeldung/App.java | 13 +++ .../src/test/java/org/baeldung/AppTest.java | 38 ++++++++ 3 files changed, 140 insertions(+) create mode 100644 spring-data-cassandra/pom.xml create mode 100644 spring-data-cassandra/src/main/java/org/baeldung/App.java create mode 100644 spring-data-cassandra/src/test/java/org/baeldung/AppTest.java diff --git a/spring-data-cassandra/pom.xml b/spring-data-cassandra/pom.xml new file mode 100644 index 0000000000..fec2ed6a47 --- /dev/null +++ b/spring-data-cassandra/pom.xml @@ -0,0 +1,89 @@ + + 4.0.0 + + org.baeldung + spring-data-cassandra + 0.0.1-SNAPSHOT + jar + + spring-data-cassandra + + + UTF-8 + 1.3.1.RELEASE + 4.2.2.RELEASE + 1.3 + 4.11 + 1.7.12 + 1.1.3 + + + + + + org.springframework.data + spring-data-cassandra + ${org.springframework.data.version} + + + + org.springframework + spring-core + ${org.springframework.version} + + + + junit + junit-dep + ${junit.version} + test + + + + org.hamcrest + hamcrest-core + ${org.hamcrest.version} + test + + + + org.hamcrest + hamcrest-library + ${org.hamcrest.version} + test + + + + org.springframework + spring-test + ${org.springframework.version} + test + + + + org.slf4j + slf4j-api + ${org.slf4j.version} + + + + ch.qos.logback + logback-classic + ${logback.version} + + + + org.slf4j + jcl-over-slf4j + ${org.slf4j.version} + + + + org.slf4j + log4j-over-slf4j + ${org.slf4j.version} + + + + diff --git a/spring-data-cassandra/src/main/java/org/baeldung/App.java b/spring-data-cassandra/src/main/java/org/baeldung/App.java new file mode 100644 index 0000000000..4cc2703b88 --- /dev/null +++ b/spring-data-cassandra/src/main/java/org/baeldung/App.java @@ -0,0 +1,13 @@ +package org.baeldung; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git a/spring-data-cassandra/src/test/java/org/baeldung/AppTest.java b/spring-data-cassandra/src/test/java/org/baeldung/AppTest.java new file mode 100644 index 0000000000..8f5bb20f75 --- /dev/null +++ b/spring-data-cassandra/src/test/java/org/baeldung/AppTest.java @@ -0,0 +1,38 @@ +package org.baeldung; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} From 609fdc67caa8944d8d5f87ed62fa6c97055c1218 Mon Sep 17 00:00:00 2001 From: sameira Date: Mon, 30 Nov 2015 02:09:10 +0530 Subject: [PATCH 2/7] Adding initial files --- spring-data-cassandra/pom.xml | 39 +++++++++++-------- .../src/main/java/org/baeldung/App.java | 13 ------- .../src/test/java/org/baeldung/AppTest.java | 38 ------------------ 3 files changed, 22 insertions(+), 68 deletions(-) delete mode 100644 spring-data-cassandra/src/main/java/org/baeldung/App.java delete mode 100644 spring-data-cassandra/src/test/java/org/baeldung/AppTest.java diff --git a/spring-data-cassandra/pom.xml b/spring-data-cassandra/pom.xml index fec2ed6a47..0ce25dc038 100644 --- a/spring-data-cassandra/pom.xml +++ b/spring-data-cassandra/pom.xml @@ -11,9 +11,8 @@ UTF-8 - 1.3.1.RELEASE - 4.2.2.RELEASE - 1.3 + 1.1.0.RELEASE + 4.0.7.RELEASE 4.11 1.7.12 1.1.3 @@ -40,20 +39,6 @@ test - - org.hamcrest - hamcrest-core - ${org.hamcrest.version} - test - - - - org.hamcrest - hamcrest-library - ${org.hamcrest.version} - test - - org.springframework spring-test @@ -61,6 +46,13 @@ test + + org.cassandraunit + cassandra-unit-spring + 2.1.3.1 + test + + org.slf4j slf4j-api @@ -86,4 +78,17 @@ + + + + maven-compiler-plugin + 2.3.2 + + 1.8 + 1.8 + + + + + diff --git a/spring-data-cassandra/src/main/java/org/baeldung/App.java b/spring-data-cassandra/src/main/java/org/baeldung/App.java deleted file mode 100644 index 4cc2703b88..0000000000 --- a/spring-data-cassandra/src/main/java/org/baeldung/App.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.baeldung; - -/** - * Hello world! - * - */ -public class App -{ - public static void main( String[] args ) - { - System.out.println( "Hello World!" ); - } -} diff --git a/spring-data-cassandra/src/test/java/org/baeldung/AppTest.java b/spring-data-cassandra/src/test/java/org/baeldung/AppTest.java deleted file mode 100644 index 8f5bb20f75..0000000000 --- a/spring-data-cassandra/src/test/java/org/baeldung/AppTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.baeldung; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -/** - * Unit test for simple App. - */ -public class AppTest - extends TestCase -{ - /** - * Create the test case - * - * @param testName name of the test case - */ - public AppTest( String testName ) - { - super( testName ); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() - { - return new TestSuite( AppTest.class ); - } - - /** - * Rigourous Test :-) - */ - public void testApp() - { - assertTrue( true ); - } -} From 24094c838a751ddb6ee3ccbc2bef3592944c695e Mon Sep 17 00:00:00 2001 From: sameira Date: Mon, 30 Nov 2015 02:10:05 +0530 Subject: [PATCH 3/7] Adding initial files --- .../cassandra/config/CassandraConfig.java | 33 ++++++++ .../spring/data/cassandra/model/Event.java | 46 +++++++++++ .../cassandra/repository/EventRepository.java | 14 ++++ .../src/main/resources/beans.xml | 20 +++++ .../src/main/resources/logback.xml | 20 +++++ .../src/main/resources/test.png | Bin 0 -> 855 bytes .../cassandra/config/CassandraTestConfig.java | 66 ++++++++++++++++ .../EventRepositoryIntegrationTest.java | 73 ++++++++++++++++++ 8 files changed, 272 insertions(+) create mode 100644 spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/config/CassandraConfig.java create mode 100644 spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Event.java create mode 100644 spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/EventRepository.java create mode 100644 spring-data-cassandra/src/main/resources/beans.xml create mode 100644 spring-data-cassandra/src/main/resources/logback.xml create mode 100644 spring-data-cassandra/src/main/resources/test.png create mode 100644 spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/config/CassandraTestConfig.java create mode 100644 spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/repository/EventRepositoryIntegrationTest.java diff --git a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/config/CassandraConfig.java b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/config/CassandraConfig.java new file mode 100644 index 0000000000..254de23eb6 --- /dev/null +++ b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/config/CassandraConfig.java @@ -0,0 +1,33 @@ +package org.baeldung.spring.data.cassandra.config; + + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.cassandra.config.CassandraClusterFactoryBean; +import org.springframework.data.cassandra.config.java.AbstractCassandraConfiguration; +import org.springframework.data.cassandra.mapping.BasicCassandraMappingContext; +import org.springframework.data.cassandra.mapping.CassandraMappingContext; +import org.springframework.data.cassandra.repository.config.EnableCassandraRepositories; + +@Configuration +@EnableCassandraRepositories(basePackages = "org.baeldung.spring.data.cassandra.repository") +public class CassandraConfig extends AbstractCassandraConfiguration { + + @Override + protected String getKeyspaceName() { + return "event"; + } + + @Bean + public CassandraClusterFactoryBean cluster() { + CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean(); + cluster.setContactPoints("127.0.0.1"); + cluster.setPort(9142); + return cluster; + } + + @Bean + public CassandraMappingContext cassandraMapping() throws ClassNotFoundException { + return new BasicCassandraMappingContext(); + } +} \ No newline at end of file diff --git a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Event.java b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Event.java new file mode 100644 index 0000000000..dd81fa071c --- /dev/null +++ b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Event.java @@ -0,0 +1,46 @@ +package org.baeldung.spring.data.cassandra.model; + +import org.springframework.cassandra.core.Ordering; +import org.springframework.cassandra.core.PrimaryKeyType; +import org.springframework.data.cassandra.mapping.Column; +import org.springframework.data.cassandra.mapping.PrimaryKeyColumn; +import org.springframework.data.cassandra.mapping.Table; + +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + +@Table +public class Event { + @PrimaryKeyColumn(name = "id", ordinal = 2, type = PrimaryKeyType.CLUSTERED, ordering = Ordering.DESCENDING) + private UUID id; + @PrimaryKeyColumn(name = "type", ordinal = 0, type = PrimaryKeyType.PARTITIONED) + private String type; + @PrimaryKeyColumn(name = "bucket", ordinal = 1, type = PrimaryKeyType.PARTITIONED) + private String bucket; + @Column + private Set tags = new HashSet(); + + public Event(UUID id, String type, String bucket, Set tags) { + this.id = id; + this.type = type; + this.bucket = bucket; + this.tags.addAll(tags); + } + + public UUID getId() { + return id; + } + + public String getType() { + return type; + } + + public String getBucket() { + return bucket; + } + + public Set getTags() { + return tags; + } +} diff --git a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/EventRepository.java b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/EventRepository.java new file mode 100644 index 0000000000..73b96ae2ec --- /dev/null +++ b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/EventRepository.java @@ -0,0 +1,14 @@ +package org.baeldung.spring.data.cassandra.repository; + + +import org.baeldung.spring.data.cassandra.model.Event; +import org.springframework.data.cassandra.repository.CassandraRepository; +import org.springframework.data.cassandra.repository.Query; +import org.springframework.stereotype.Repository; + +@Repository +public interface EventRepository extends CassandraRepository { + @Query("select * from event where type = ?0 and bucket=?1") + Iterable findByTypeAndBucket(String type, String bucket); +} + diff --git a/spring-data-cassandra/src/main/resources/beans.xml b/spring-data-cassandra/src/main/resources/beans.xml new file mode 100644 index 0000000000..fc1fb36ee2 --- /dev/null +++ b/spring-data-cassandra/src/main/resources/beans.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-data-cassandra/src/main/resources/logback.xml b/spring-data-cassandra/src/main/resources/logback.xml new file mode 100644 index 0000000000..215eeede64 --- /dev/null +++ b/spring-data-cassandra/src/main/resources/logback.xml @@ -0,0 +1,20 @@ + + + + + web - %date [%thread] %-5level %logger{36} - %message%n + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-data-cassandra/src/main/resources/test.png b/spring-data-cassandra/src/main/resources/test.png new file mode 100644 index 0000000000000000000000000000000000000000..c3b5e8027635ff4f0a0b10c0a9a6aa7a014e6086 GIT binary patch literal 855 zcmex=6kE^cmKJ|O{KK0!WiZUHd? zL17V5QBfX#aS1UI2_X?t5k_Vf7B*H^PBu0!em)*P5fKr7L0%pn0bT(feo-D?UVdI4 zpg0dNAHM*Q$HT+J$HNcg@q#%Zh5rvQ2y!sUFvu`73NkPWGBOJ?{y)MX0rV0OKpYGv zIoQ})S%5M+0t`%y%uFn-%&bsZMkb)c1=$oC*g1rh3>^~-jRG5mMVuBM1ge%|WME=O zF^8Fjk%^U!0Vt;gv=3+$3p2tNMkYaKCBqLwfr*X6ijMzpG4L=04G?4&WUyx___R78 z`bEZ3n*%y$c1p?=OzsY{vOIcDRID^@mH5k5n_VmCLN*tlQtc~BqmaI3acZm^A1dHBrChNRU-KfIG`3a9F1Z+JCT zaBkFRt*1+W!zihZ}s%F&cxn?h~EIRD%9;ni-#KyOjOZ3l7 z_6Ks(XSKVYPbdvPm!tpIJj%Ot(S2`WC0AaXj1Ds{Yc~e@JYj`ND^=I^G)#%-Q1qX7 z;Q8}@p=SNS>z3K2PrXivv`$()); + Event event1 = new Event(UUIDs.timeBased(), "type1", TIME_BUCKET, ImmutableSet.of("tag1", "tag2")); + Event event2 = new Event(UUIDs.timeBased(), "type1", TIME_BUCKET, ImmutableSet.of("tag3")); + eventRepository.save(ImmutableSet.of(event1, event2)); + + Iterable events = eventRepository.findByTypeAndBucket("type1", TIME_BUCKET); + + assertThat(events, hasItem(event1)); + assertThat(events, hasItem(event2)); + } + + // @Test + public void repositoryDeletesStoredEvents() { + Event event1 = new Event(UUIDs.timeBased(), "type1", TIME_BUCKET, ImmutableSet.of("tag1", "tag2")); + Event event2 = new Event(UUIDs.timeBased(), "type1", TIME_BUCKET, ImmutableSet.of("tag3")); + eventRepository.save(ImmutableSet.of(event1, event2)); + + eventRepository.delete(event1); + eventRepository.delete(event2); + + Iterable events = eventRepository.findByTypeAndBucket("type1", TIME_BUCKET); + + assertThat(events, not(hasItem(event1))); + assertThat(events, not(hasItem(event2))); + } + +} From 51649533eedb38b76c7466cfb113aca4c8008a0c Mon Sep 17 00:00:00 2001 From: sameira Date: Mon, 30 Nov 2015 22:46:32 +0530 Subject: [PATCH 4/7] Adding tests with embedded cassandra support --- spring-data-cassandra/pom.xml | 54 +++++++++-- .../cassandra/config/CassandraConfig.java | 19 +++- .../spring/data/cassandra/model/Book.java | 46 ++++++++++ .../spring/data/cassandra/model/Event.java | 46 ---------- .../cassandra/repository/BookRepository.java | 14 +++ .../cassandra/repository/EventRepository.java | 14 --- .../src/main/resources/beans.xml | 20 ----- .../src/main/resources/cassandra.properties | 3 + .../cassandra/config/CassandraTestConfig.java | 66 -------------- .../BookRepositoryIntegrationTest.java | 89 +++++++++++++++++++ .../EventRepositoryIntegrationTest.java | 73 --------------- 11 files changed, 216 insertions(+), 228 deletions(-) create mode 100644 spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Book.java delete mode 100644 spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Event.java create mode 100644 spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/BookRepository.java delete mode 100644 spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/EventRepository.java delete mode 100644 spring-data-cassandra/src/main/resources/beans.xml create mode 100644 spring-data-cassandra/src/main/resources/cassandra.properties delete mode 100644 spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/config/CassandraTestConfig.java create mode 100644 spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/repository/BookRepositoryIntegrationTest.java delete mode 100644 spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/repository/EventRepositoryIntegrationTest.java diff --git a/spring-data-cassandra/pom.xml b/spring-data-cassandra/pom.xml index 0ce25dc038..80aeb6a83f 100644 --- a/spring-data-cassandra/pom.xml +++ b/spring-data-cassandra/pom.xml @@ -11,8 +11,8 @@ UTF-8 - 1.1.0.RELEASE - 4.0.7.RELEASE + 1.3.1.RELEASE + 4.2.2.RELEASE 4.11 1.7.12 1.1.3 @@ -49,9 +49,53 @@ org.cassandraunit cassandra-unit-spring - 2.1.3.1 + 2.1.9.2 + test + + + org.cassandraunit + cassandra-unit + + + + + org.cassandraunit + cassandra-unit-shaded + 2.1.9.2 test + + org.hectorclient + hector-core + 2.0-0 + + + + + + + + + + + + + + + + + com.datastax.cassandra + cassandra-driver-core + 2.1.5 + true + + + + + + + + org.slf4j @@ -84,8 +128,8 @@ maven-compiler-plugin 2.3.2 - 1.8 - 1.8 + 1.7 + 1.7 diff --git a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/config/CassandraConfig.java b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/config/CassandraConfig.java index 254de23eb6..9dda322ca3 100644 --- a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/config/CassandraConfig.java +++ b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/config/CassandraConfig.java @@ -1,8 +1,12 @@ package org.baeldung.spring.data.cassandra.config; - +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; import org.springframework.data.cassandra.config.CassandraClusterFactoryBean; import org.springframework.data.cassandra.config.java.AbstractCassandraConfiguration; import org.springframework.data.cassandra.mapping.BasicCassandraMappingContext; @@ -10,19 +14,26 @@ import org.springframework.data.cassandra.mapping.CassandraMappingContext; import org.springframework.data.cassandra.repository.config.EnableCassandraRepositories; @Configuration +@PropertySource(value = { "classpath:cassandra.properties" }) @EnableCassandraRepositories(basePackages = "org.baeldung.spring.data.cassandra.repository") public class CassandraConfig extends AbstractCassandraConfiguration { + private static final Log LOGGER = LogFactory.getLog(CassandraConfig.class); + @Autowired + private Environment environment; + @Override protected String getKeyspaceName() { - return "event"; + return environment.getProperty("cassandra.keyspace"); } @Bean public CassandraClusterFactoryBean cluster() { CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean(); - cluster.setContactPoints("127.0.0.1"); - cluster.setPort(9142); + cluster.setContactPoints(environment.getProperty("cassandra.contactpoints")); + cluster.setPort(Integer.parseInt(environment.getProperty("cassandra.port"))); + LOGGER.info("Cluster created with contact points ["+ environment.getProperty("cassandra.contactpoints") +"] " + + "& port [" + Integer.parseInt(environment.getProperty("cassandra.port")) + "]."); return cluster; } diff --git a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Book.java b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Book.java new file mode 100644 index 0000000000..74ea5c812b --- /dev/null +++ b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Book.java @@ -0,0 +1,46 @@ +package org.baeldung.spring.data.cassandra.model; + +import org.springframework.cassandra.core.Ordering; +import org.springframework.cassandra.core.PrimaryKeyType; +import org.springframework.data.cassandra.mapping.Column; +import org.springframework.data.cassandra.mapping.PrimaryKeyColumn; +import org.springframework.data.cassandra.mapping.Table; + +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + +@Table +public class Book { + @PrimaryKeyColumn(name = "isbn", ordinal = 2, type = PrimaryKeyType.CLUSTERED, ordering = Ordering.DESCENDING) + private UUID id; + @PrimaryKeyColumn(name = "title", ordinal = 0, type = PrimaryKeyType.PARTITIONED) + private String title; + @PrimaryKeyColumn(name = "publisher", ordinal = 1, type = PrimaryKeyType.PARTITIONED) + private String publisher; + @Column + private Set tags = new HashSet<>(); + + public Book(UUID id, String title, String publisher, Set tags) { + this.id = id; + this.title = title; + this.publisher = publisher; + this.tags.addAll(tags); + } + + public UUID getId() { + return id; + } + + public String getTitle() { + return title; + } + + public String getPublisher() { + return publisher; + } + + public Set getTags() { + return tags; + } +} diff --git a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Event.java b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Event.java deleted file mode 100644 index dd81fa071c..0000000000 --- a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Event.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.baeldung.spring.data.cassandra.model; - -import org.springframework.cassandra.core.Ordering; -import org.springframework.cassandra.core.PrimaryKeyType; -import org.springframework.data.cassandra.mapping.Column; -import org.springframework.data.cassandra.mapping.PrimaryKeyColumn; -import org.springframework.data.cassandra.mapping.Table; - -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; - -@Table -public class Event { - @PrimaryKeyColumn(name = "id", ordinal = 2, type = PrimaryKeyType.CLUSTERED, ordering = Ordering.DESCENDING) - private UUID id; - @PrimaryKeyColumn(name = "type", ordinal = 0, type = PrimaryKeyType.PARTITIONED) - private String type; - @PrimaryKeyColumn(name = "bucket", ordinal = 1, type = PrimaryKeyType.PARTITIONED) - private String bucket; - @Column - private Set tags = new HashSet(); - - public Event(UUID id, String type, String bucket, Set tags) { - this.id = id; - this.type = type; - this.bucket = bucket; - this.tags.addAll(tags); - } - - public UUID getId() { - return id; - } - - public String getType() { - return type; - } - - public String getBucket() { - return bucket; - } - - public Set getTags() { - return tags; - } -} diff --git a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/BookRepository.java b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/BookRepository.java new file mode 100644 index 0000000000..dee1f9ef88 --- /dev/null +++ b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/BookRepository.java @@ -0,0 +1,14 @@ +package org.baeldung.spring.data.cassandra.repository; + + +import org.baeldung.spring.data.cassandra.model.Book; +import org.springframework.data.cassandra.repository.CassandraRepository; +import org.springframework.data.cassandra.repository.Query; +import org.springframework.stereotype.Repository; + +@Repository +public interface BookRepository extends CassandraRepository { + @Query("select * from book where title = ?0 and publisher=?1") + Iterable findByTitleAndPublisher(String title, String publisher); +} + diff --git a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/EventRepository.java b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/EventRepository.java deleted file mode 100644 index 73b96ae2ec..0000000000 --- a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/EventRepository.java +++ /dev/null @@ -1,14 +0,0 @@ -package org.baeldung.spring.data.cassandra.repository; - - -import org.baeldung.spring.data.cassandra.model.Event; -import org.springframework.data.cassandra.repository.CassandraRepository; -import org.springframework.data.cassandra.repository.Query; -import org.springframework.stereotype.Repository; - -@Repository -public interface EventRepository extends CassandraRepository { - @Query("select * from event where type = ?0 and bucket=?1") - Iterable findByTypeAndBucket(String type, String bucket); -} - diff --git a/spring-data-cassandra/src/main/resources/beans.xml b/spring-data-cassandra/src/main/resources/beans.xml deleted file mode 100644 index fc1fb36ee2..0000000000 --- a/spring-data-cassandra/src/main/resources/beans.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/spring-data-cassandra/src/main/resources/cassandra.properties b/spring-data-cassandra/src/main/resources/cassandra.properties new file mode 100644 index 0000000000..1550cdea4e --- /dev/null +++ b/spring-data-cassandra/src/main/resources/cassandra.properties @@ -0,0 +1,3 @@ +cassandra.contactpoints=127.0.0.1 +cassandra.port=9142 +cassandra.keyspace=testKeySpace \ No newline at end of file diff --git a/spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/config/CassandraTestConfig.java b/spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/config/CassandraTestConfig.java deleted file mode 100644 index facc6b43f3..0000000000 --- a/spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/config/CassandraTestConfig.java +++ /dev/null @@ -1,66 +0,0 @@ -package org.baeldung.spring.data.cassandra.config; - -import com.datastax.driver.core.Cluster; -import com.datastax.driver.core.Session; -import org.apache.cassandra.exceptions.ConfigurationException; -import org.apache.thrift.transport.TTransportException; -import org.cassandraunit.utils.EmbeddedCassandraServerHelper; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.cassandra.config.CassandraSessionFactoryBean; -import org.springframework.data.cassandra.config.SchemaAction; -import org.springframework.data.cassandra.convert.CassandraConverter; -import org.springframework.data.cassandra.convert.MappingCassandraConverter; -import org.springframework.data.cassandra.core.CassandraOperations; -import org.springframework.data.cassandra.core.CassandraTemplate; -import org.springframework.data.cassandra.mapping.BasicCassandraMappingContext; -import org.springframework.data.cassandra.mapping.CassandraMappingContext; -import org.springframework.data.cassandra.repository.config.EnableCassandraRepositories; - -import java.io.IOException; - -@Configuration -@EnableCassandraRepositories(basePackages = "org.baeldung.spring.data.cassandra.repository") -public class CassandraTestConfig{ - - @Bean(destroyMethod = "close") - public Cluster cluster() throws ConfigurationException, TTransportException, IOException, InterruptedException{ - EmbeddedCassandraServerHelper.startEmbeddedCassandra(); - Cluster cluster = Cluster.builder().addContactPoints("127.0.0.1").withPort(9142).build(); - Session session = cluster.connect(); - session.execute("CREATE KEYSPACE IF NOT EXISTS testKeySpace WITH replication = {" - + " 'class': 'SimpleStrategy', " - + " 'replication_factor': '3' " - + "};" ); -// session.execute("CREATE KEYSPACE testKeySpace WITH replication={'class' : 'SimpleStrategy', 'replication_factor':1}"); -// session.execute("USE testKeySpace"); - return cluster; - } - - @Bean - public CassandraMappingContext mappingContext() { - return new BasicCassandraMappingContext(); - } - - @Bean - public CassandraConverter converter() { - return new MappingCassandraConverter(mappingContext()); - } - - @Bean - public CassandraSessionFactoryBean session() throws Exception { - - CassandraSessionFactoryBean session = new CassandraSessionFactoryBean(); - session.setCluster(cluster()); - session.setKeyspaceName("testKeySpace"); - session.setConverter(converter()); - session.setSchemaAction(SchemaAction.NONE); - - return session; - } - - @Bean - public CassandraOperations cassandraTemplate() throws Exception { - return new CassandraTemplate(session().getObject()); - } -} diff --git a/spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/repository/BookRepositoryIntegrationTest.java b/spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/repository/BookRepositoryIntegrationTest.java new file mode 100644 index 0000000000..215c6b3824 --- /dev/null +++ b/spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/repository/BookRepositoryIntegrationTest.java @@ -0,0 +1,89 @@ +package org.baeldung.spring.data.cassandra.repository; + +import com.datastax.driver.core.Cluster; +import com.datastax.driver.core.Session; +import com.datastax.driver.core.utils.UUIDs; +import com.google.common.collect.ImmutableSet; +import org.apache.cassandra.exceptions.ConfigurationException; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.thrift.transport.TTransportException; +import org.baeldung.spring.data.cassandra.config.CassandraConfig; +import org.baeldung.spring.data.cassandra.model.Book; +import org.cassandraunit.utils.EmbeddedCassandraServerHelper; +import org.junit.*; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cassandra.core.cql.CqlIdentifier; +import org.springframework.data.cassandra.core.CassandraAdminOperations; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import java.io.IOException; +import java.util.HashMap; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = CassandraConfig.class) +public class BookRepositoryIntegrationTest { + + private static final Log LOGGER = LogFactory.getLog(BookRepositoryIntegrationTest.class); + + public static final String KEYSPACE_CREATION_QUERY = + "CREATE KEYSPACE IF NOT EXISTS testKeySpace WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': '3' };"; + + public static final String KEYSPACE_ACTIVATE_QUERY = "USE testKeySpace;"; + + public static final String DATA_TABLE_NAME = "book"; + + @Autowired private BookRepository bookRepository; + + @Autowired private CassandraAdminOperations adminTemplate; + + @BeforeClass + public static void startCassandraEmbedded() + throws InterruptedException, TTransportException, ConfigurationException, IOException { + EmbeddedCassandraServerHelper.startEmbeddedCassandra(); + Cluster cluster = Cluster.builder().addContactPoints("127.0.0.1").withPort(9142).build(); + LOGGER.info("Server Started at 127.0.0.1:9142... "); + Session session = cluster.connect(); + session.execute(KEYSPACE_CREATION_QUERY); + session.execute(KEYSPACE_ACTIVATE_QUERY); + LOGGER.info("KeySpace created and activated."); + } + + @Before + public void resetKeySpace() + throws InterruptedException, TTransportException, ConfigurationException, IOException { + adminTemplate.createTable(true, CqlIdentifier.cqlId(DATA_TABLE_NAME), Book.class, new HashMap()); + } + + @Test + public void whenSavingBooks_thenAvailableOnRetrieval() { + Book javaBook = new Book(UUIDs.timeBased(), "Head First Java", "O'Reilly Media", ImmutableSet.of("Computer", "Software")); + bookRepository.save(ImmutableSet.of(javaBook)); + Iterable books = bookRepository.findByTitleAndPublisher("Head First Java", "O'Reilly Media"); + assertEquals(javaBook.getId(), books.iterator().next().getId()); + } + + @Test(expected = java.util.NoSuchElementException.class) + public void whenDeletingExistingBooks_thenNotAvailableOnRetrieval() { + Book javaBook = new Book(UUIDs.timeBased(), "Head First Java", "O'Reilly Media", ImmutableSet.of("Computer", "Software")); + bookRepository.save(ImmutableSet.of(javaBook)); + bookRepository.delete(javaBook); + Iterable books = bookRepository.findByTitleAndPublisher("type1", "O'Reilly Media"); + assertNotEquals(javaBook.getId(), books.iterator().next().getId()); + } + + @After + public void cleanTable() { + adminTemplate.dropTable(CqlIdentifier.cqlId(DATA_TABLE_NAME)); + } + + @AfterClass + public static void stopCassandraEmbedded() { + EmbeddedCassandraServerHelper.cleanEmbeddedCassandra(); + } +} diff --git a/spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/repository/EventRepositoryIntegrationTest.java b/spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/repository/EventRepositoryIntegrationTest.java deleted file mode 100644 index c1fb162570..0000000000 --- a/spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/repository/EventRepositoryIntegrationTest.java +++ /dev/null @@ -1,73 +0,0 @@ -package org.baeldung.spring.data.cassandra.repository; - -import com.datastax.driver.core.utils.UUIDs; -import com.google.common.collect.ImmutableSet; -import org.apache.cassandra.exceptions.ConfigurationException; -import org.apache.thrift.transport.TTransportException; -import org.baeldung.spring.data.cassandra.config.CassandraConfig; -import org.baeldung.spring.data.cassandra.model.Event; -import org.cassandraunit.spring.CassandraUnitTestExecutionListener; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cassandra.core.cql.CqlIdentifier; -import org.springframework.data.cassandra.core.CassandraAdminOperations; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.TestExecutionListeners; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; - -import java.io.IOException; -import java.util.HashMap; - -import static org.hamcrest.CoreMatchers.hasItem; -import static org.hamcrest.CoreMatchers.not; -import static org.junit.Assert.assertThat; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = {CassandraConfig.class}) -@TestExecutionListeners({CassandraUnitTestExecutionListener.class, DependencyInjectionTestExecutionListener.class}) -public class EventRepositoryIntegrationTest { - - public static final String TIME_BUCKET = "2014-01-01"; - - @Autowired - private EventRepository eventRepository; - - @Autowired - private CassandraAdminOperations adminTemplate; - - @Test - public void repositoryStoresAndRetrievesEvents() throws InterruptedException, TTransportException, ConfigurationException, IOException { - adminTemplate.execute("CREATE KEYSPACE IF NOT EXISTS testKeySpace WITH replication = {" - + " 'class': 'SimpleStrategy', " - + " 'replication_factor': '3' " - + "};" ); - adminTemplate.dropTable(CqlIdentifier.cqlId("event")); - adminTemplate.createTable(true, CqlIdentifier.cqlId("event"), Event.class, new HashMap()); - Event event1 = new Event(UUIDs.timeBased(), "type1", TIME_BUCKET, ImmutableSet.of("tag1", "tag2")); - Event event2 = new Event(UUIDs.timeBased(), "type1", TIME_BUCKET, ImmutableSet.of("tag3")); - eventRepository.save(ImmutableSet.of(event1, event2)); - - Iterable events = eventRepository.findByTypeAndBucket("type1", TIME_BUCKET); - - assertThat(events, hasItem(event1)); - assertThat(events, hasItem(event2)); - } - - // @Test - public void repositoryDeletesStoredEvents() { - Event event1 = new Event(UUIDs.timeBased(), "type1", TIME_BUCKET, ImmutableSet.of("tag1", "tag2")); - Event event2 = new Event(UUIDs.timeBased(), "type1", TIME_BUCKET, ImmutableSet.of("tag3")); - eventRepository.save(ImmutableSet.of(event1, event2)); - - eventRepository.delete(event1); - eventRepository.delete(event2); - - Iterable events = eventRepository.findByTypeAndBucket("type1", TIME_BUCKET); - - assertThat(events, not(hasItem(event1))); - assertThat(events, not(hasItem(event2))); - } - -} From d76fb0f66d9d934896fa8cf939235bfff569620a Mon Sep 17 00:00:00 2001 From: sameira Date: Mon, 30 Nov 2015 23:24:07 +0530 Subject: [PATCH 5/7] Adding eclipse formattings --- spring-data-cassandra/pom.xml | 236 ++++++++---------- .../cassandra/config/CassandraConfig.java | 3 +- .../cassandra/repository/BookRepository.java | 2 - .../BookRepositoryIntegrationTest.java | 15 +- 4 files changed, 112 insertions(+), 144 deletions(-) diff --git a/spring-data-cassandra/pom.xml b/spring-data-cassandra/pom.xml index 80aeb6a83f..13c5c18529 100644 --- a/spring-data-cassandra/pom.xml +++ b/spring-data-cassandra/pom.xml @@ -1,138 +1,110 @@ - 4.0.0 + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 - org.baeldung - spring-data-cassandra - 0.0.1-SNAPSHOT - jar + org.baeldung + spring-data-cassandra + 0.0.1-SNAPSHOT + jar - spring-data-cassandra + spring-data-cassandra - - UTF-8 - 1.3.1.RELEASE - 4.2.2.RELEASE - 4.11 - 1.7.12 - 1.1.3 - - - - - - org.springframework.data - spring-data-cassandra - ${org.springframework.data.version} - - - - org.springframework - spring-core - ${org.springframework.version} - - - - junit - junit-dep - ${junit.version} - test - - - - org.springframework - spring-test - ${org.springframework.version} - test - - - - org.cassandraunit - cassandra-unit-spring - 2.1.9.2 - test - - - org.cassandraunit - cassandra-unit - - - - - org.cassandraunit - cassandra-unit-shaded - 2.1.9.2 - test - - - org.hectorclient - hector-core - 2.0-0 - - - - - - - - - - - - - - - - - com.datastax.cassandra - cassandra-driver-core - 2.1.5 - true - - - - - - - - - - - org.slf4j - slf4j-api - ${org.slf4j.version} - - - - ch.qos.logback - logback-classic - ${logback.version} - - - - org.slf4j - jcl-over-slf4j - ${org.slf4j.version} - - - - org.slf4j - log4j-over-slf4j - ${org.slf4j.version} - - - - - - - maven-compiler-plugin - 2.3.2 - - 1.7 - 1.7 - - - - + + UTF-8 + 1.3.1.RELEASE + 4.2.2.RELEASE + 4.11 + 1.7.12 + 1.1.3 + 2.1.5 + 2.1.9.2 + 2.1.9.2 + 2.0-0 + + + + org.springframework.data + spring-data-cassandra + ${org.springframework.data.version} + + + org.springframework + spring-core + ${org.springframework.version} + + + junit + junit-dep + ${junit.version} + test + + + org.springframework + spring-test + ${org.springframework.version} + test + + + org.cassandraunit + cassandra-unit-spring + ${cassandra-unit-spring.version} + test + + + org.cassandraunit + cassandra-unit + + + + + org.cassandraunit + cassandra-unit-shaded + ${cassandra-unit-shaded} + test + + + org.hectorclient + hector-core + ${hector-core.version} + + + com.datastax.cassandra + cassandra-driver-core + ${cassandra-driver-core.version} + true + + + org.slf4j + slf4j-api + ${org.slf4j.version} + + + ch.qos.logback + logback-classic + ${logback.version} + + + org.slf4j + jcl-over-slf4j + ${org.slf4j.version} + + + org.slf4j + log4j-over-slf4j + ${org.slf4j.version} + + + + + + maven-compiler-plugin + 2.3.2 + + 1.7 + 1.7 + + + + diff --git a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/config/CassandraConfig.java b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/config/CassandraConfig.java index 9dda322ca3..5f2c4c6d47 100644 --- a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/config/CassandraConfig.java +++ b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/config/CassandraConfig.java @@ -32,8 +32,7 @@ public class CassandraConfig extends AbstractCassandraConfiguration { CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean(); cluster.setContactPoints(environment.getProperty("cassandra.contactpoints")); cluster.setPort(Integer.parseInt(environment.getProperty("cassandra.port"))); - LOGGER.info("Cluster created with contact points ["+ environment.getProperty("cassandra.contactpoints") +"] " + - "& port [" + Integer.parseInt(environment.getProperty("cassandra.port")) + "]."); + LOGGER.info("Cluster created with contact points [" + environment.getProperty("cassandra.contactpoints") + "] " + "& port [" + Integer.parseInt(environment.getProperty("cassandra.port")) + "]."); return cluster; } diff --git a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/BookRepository.java b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/BookRepository.java index dee1f9ef88..e37ae78b59 100644 --- a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/BookRepository.java +++ b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/repository/BookRepository.java @@ -1,6 +1,5 @@ package org.baeldung.spring.data.cassandra.repository; - import org.baeldung.spring.data.cassandra.model.Book; import org.springframework.data.cassandra.repository.CassandraRepository; import org.springframework.data.cassandra.repository.Query; @@ -11,4 +10,3 @@ public interface BookRepository extends CassandraRepository { @Query("select * from book where title = ?0 and publisher=?1") Iterable findByTitleAndPublisher(String title, String publisher); } - diff --git a/spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/repository/BookRepositoryIntegrationTest.java b/spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/repository/BookRepositoryIntegrationTest.java index 215c6b3824..f6937d10cd 100644 --- a/spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/repository/BookRepositoryIntegrationTest.java +++ b/spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/repository/BookRepositoryIntegrationTest.java @@ -31,20 +31,20 @@ public class BookRepositoryIntegrationTest { private static final Log LOGGER = LogFactory.getLog(BookRepositoryIntegrationTest.class); - public static final String KEYSPACE_CREATION_QUERY = - "CREATE KEYSPACE IF NOT EXISTS testKeySpace WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': '3' };"; + public static final String KEYSPACE_CREATION_QUERY = "CREATE KEYSPACE IF NOT EXISTS testKeySpace WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': '3' };"; public static final String KEYSPACE_ACTIVATE_QUERY = "USE testKeySpace;"; public static final String DATA_TABLE_NAME = "book"; - @Autowired private BookRepository bookRepository; + @Autowired + private BookRepository bookRepository; - @Autowired private CassandraAdminOperations adminTemplate; + @Autowired + private CassandraAdminOperations adminTemplate; @BeforeClass - public static void startCassandraEmbedded() - throws InterruptedException, TTransportException, ConfigurationException, IOException { + public static void startCassandraEmbedded() throws InterruptedException, TTransportException, ConfigurationException, IOException { EmbeddedCassandraServerHelper.startEmbeddedCassandra(); Cluster cluster = Cluster.builder().addContactPoints("127.0.0.1").withPort(9142).build(); LOGGER.info("Server Started at 127.0.0.1:9142... "); @@ -55,8 +55,7 @@ public class BookRepositoryIntegrationTest { } @Before - public void resetKeySpace() - throws InterruptedException, TTransportException, ConfigurationException, IOException { + public void resetKeySpace() throws InterruptedException, TTransportException, ConfigurationException, IOException { adminTemplate.createTable(true, CqlIdentifier.cqlId(DATA_TABLE_NAME), Book.class, new HashMap()); } From de70a8595cbf891e5885be2220f5a3ecd5a623f8 Mon Sep 17 00:00:00 2001 From: DOHA Date: Thu, 3 Dec 2015 21:58:00 +0200 Subject: [PATCH 6/7] minor fix --- .../main/java/org/baeldung/config/ServerSecurityConfig.java | 2 +- .../src/main/java/org/baeldung/config/UiWebConfig.java | 3 ++- .../src/main/resources/templates/header.html | 2 +- .../src/main/java/org/baeldung/config/UiWebConfig.java | 1 + 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/spring-security-oauth/spring-security-oauth-server/src/main/java/org/baeldung/config/ServerSecurityConfig.java b/spring-security-oauth/spring-security-oauth-server/src/main/java/org/baeldung/config/ServerSecurityConfig.java index 5a09bb7e03..3e1a8a8ccb 100644 --- a/spring-security-oauth/spring-security-oauth-server/src/main/java/org/baeldung/config/ServerSecurityConfig.java +++ b/spring-security-oauth/spring-security-oauth-server/src/main/java/org/baeldung/config/ServerSecurityConfig.java @@ -28,7 +28,7 @@ public class ServerSecurityConfig extends WebSecurityConfigurerAdapter { http.authorizeRequests() .antMatchers("/login").permitAll() .anyRequest().authenticated() - // .and().formLogin().permitAll() + .and().formLogin().permitAll() ; // @formatter:on } diff --git a/spring-security-oauth/spring-security-oauth-ui-implicit/src/main/java/org/baeldung/config/UiWebConfig.java b/spring-security-oauth/spring-security-oauth-ui-implicit/src/main/java/org/baeldung/config/UiWebConfig.java index 2ee0585615..71197ce5d2 100644 --- a/spring-security-oauth/spring-security-oauth-ui-implicit/src/main/java/org/baeldung/config/UiWebConfig.java +++ b/spring-security-oauth/spring-security-oauth-ui-implicit/src/main/java/org/baeldung/config/UiWebConfig.java @@ -26,8 +26,9 @@ public class UiWebConfig extends WebMvcConfigurerAdapter { @Override public void addViewControllers(final ViewControllerRegistry registry) { super.addViewControllers(registry); - registry.addViewController("/index"); + registry.addViewController("/").setViewName("forward:/index"); registry.addViewController("/oauthTemp"); + registry.addViewController("/index"); } @Override diff --git a/spring-security-oauth/spring-security-oauth-ui-implicit/src/main/resources/templates/header.html b/spring-security-oauth/spring-security-oauth-ui-implicit/src/main/resources/templates/header.html index f56ff0ce99..a62bce9747 100644 --- a/spring-security-oauth/spring-security-oauth-ui-implicit/src/main/resources/templates/header.html +++ b/spring-security-oauth/spring-security-oauth-ui-implicit/src/main/resources/templates/header.html @@ -12,7 +12,7 @@ diff --git a/spring-security-oauth/spring-security-oauth-ui-password/src/main/java/org/baeldung/config/UiWebConfig.java b/spring-security-oauth/spring-security-oauth-ui-password/src/main/java/org/baeldung/config/UiWebConfig.java index 46e7f6db42..0732182354 100644 --- a/spring-security-oauth/spring-security-oauth-ui-password/src/main/java/org/baeldung/config/UiWebConfig.java +++ b/spring-security-oauth/spring-security-oauth-ui-password/src/main/java/org/baeldung/config/UiWebConfig.java @@ -26,6 +26,7 @@ public class UiWebConfig extends WebMvcConfigurerAdapter { @Override public void addViewControllers(final ViewControllerRegistry registry) { super.addViewControllers(registry); + registry.addViewController("/").setViewName("forward:/index"); registry.addViewController("/index"); registry.addViewController("/login"); } From 68c7e8623c4e8f804c46f021438543ffc7509180 Mon Sep 17 00:00:00 2001 From: sameira Date: Sat, 5 Dec 2015 02:04:06 +0530 Subject: [PATCH 7/7] Updated test cases --- .../spring/data/cassandra/model/Book.java | 17 ++++++++ .../BookRepositoryIntegrationTest.java | 43 ++++++++++++++++--- 2 files changed, 53 insertions(+), 7 deletions(-) diff --git a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Book.java b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Book.java index 74ea5c812b..ebb619c456 100644 --- a/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Book.java +++ b/spring-data-cassandra/src/main/java/org/baeldung/spring/data/cassandra/model/Book.java @@ -16,6 +16,7 @@ public class Book { private UUID id; @PrimaryKeyColumn(name = "title", ordinal = 0, type = PrimaryKeyType.PARTITIONED) private String title; + @PrimaryKeyColumn(name = "publisher", ordinal = 1, type = PrimaryKeyType.PARTITIONED) private String publisher; @Column @@ -43,4 +44,20 @@ public class Book { public Set getTags() { return tags; } + + public void setId(UUID id) { + this.id = id; + } + + public void setTitle(String title) { + this.title = title; + } + + public void setPublisher(String publisher) { + this.publisher = publisher; + } + + public void setTags(Set tags) { + this.tags = tags; + } } diff --git a/spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/repository/BookRepositoryIntegrationTest.java b/spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/repository/BookRepositoryIntegrationTest.java index f6937d10cd..2451f14f4a 100644 --- a/spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/repository/BookRepositoryIntegrationTest.java +++ b/spring-data-cassandra/src/test/java/org/baeldung/spring/data/cassandra/repository/BookRepositoryIntegrationTest.java @@ -46,39 +46,68 @@ public class BookRepositoryIntegrationTest { @BeforeClass public static void startCassandraEmbedded() throws InterruptedException, TTransportException, ConfigurationException, IOException { EmbeddedCassandraServerHelper.startEmbeddedCassandra(); - Cluster cluster = Cluster.builder().addContactPoints("127.0.0.1").withPort(9142).build(); + Cluster cluster = Cluster.builder().addContactPoints("127.0.0.1") + .withPort(9142).build(); LOGGER.info("Server Started at 127.0.0.1:9142... "); Session session = cluster.connect(); session.execute(KEYSPACE_CREATION_QUERY); session.execute(KEYSPACE_ACTIVATE_QUERY); + LOGGER.info(session.execute("Select * from Book").all().toArray()); + Thread.sleep(5000); LOGGER.info("KeySpace created and activated."); } @Before - public void resetKeySpace() throws InterruptedException, TTransportException, ConfigurationException, IOException { + public void createTable() throws InterruptedException, TTransportException, ConfigurationException, IOException { adminTemplate.createTable(true, CqlIdentifier.cqlId(DATA_TABLE_NAME), Book.class, new HashMap()); } @Test - public void whenSavingBooks_thenAvailableOnRetrieval() { - Book javaBook = new Book(UUIDs.timeBased(), "Head First Java", "O'Reilly Media", ImmutableSet.of("Computer", "Software")); + public void whenSavingBook_thenAvailableOnRetrieval() { + Book javaBook = new Book(UUIDs.timeBased(), "Head First Java", + "O'Reilly Media", ImmutableSet.of("Computer", "Software")); bookRepository.save(ImmutableSet.of(javaBook)); Iterable books = bookRepository.findByTitleAndPublisher("Head First Java", "O'Reilly Media"); assertEquals(javaBook.getId(), books.iterator().next().getId()); } + @Test + public void whenUpdatingBooks_thenAvailableOnRetrieval() { + Book javaBook = new Book(UUIDs.timeBased(), "Head First Java", "O'Reilly Media", ImmutableSet.of("Computer", "Software")); + bookRepository.save(ImmutableSet.of(javaBook)); + Iterable books = bookRepository.findByTitleAndPublisher("Head First Java", "O'Reilly Media"); + javaBook.setTitle("Head First Java Second Edition"); + bookRepository.save(ImmutableSet.of(javaBook)); + Iterable updateBooks = bookRepository.findByTitleAndPublisher("Head First Java Second Edition", "O'Reilly Media"); + assertEquals(javaBook.getTitle(), updateBooks.iterator().next().getTitle()); + } + @Test(expected = java.util.NoSuchElementException.class) public void whenDeletingExistingBooks_thenNotAvailableOnRetrieval() { Book javaBook = new Book(UUIDs.timeBased(), "Head First Java", "O'Reilly Media", ImmutableSet.of("Computer", "Software")); bookRepository.save(ImmutableSet.of(javaBook)); bookRepository.delete(javaBook); - Iterable books = bookRepository.findByTitleAndPublisher("type1", "O'Reilly Media"); + Iterable books = bookRepository.findByTitleAndPublisher("Head First Java", "O'Reilly Media"); assertNotEquals(javaBook.getId(), books.iterator().next().getId()); } + @Test + public void whenSavingBooks_thenAllShouldAvailableOnRetrieval() { + Book javaBook = new Book(UUIDs.timeBased(), "Head First Java", + "O'Reilly Media", ImmutableSet.of("Computer", "Software")); + Book dPatternBook = new Book(UUIDs.timeBased(), "Head Design Patterns", + "O'Reilly Media", ImmutableSet.of("Computer", "Software")); + bookRepository.save(ImmutableSet.of(javaBook)); + bookRepository.save(ImmutableSet.of(dPatternBook)); + Iterable books = bookRepository.findAll(); + int bookCount = 0; + for (Book book : books) bookCount++; + assertEquals(bookCount, 2); + } + @After - public void cleanTable() { - adminTemplate.dropTable(CqlIdentifier.cqlId(DATA_TABLE_NAME)); + public void dropTable() { + adminTemplate.dropTable(CqlIdentifier.cqlId(DATA_TABLE_NAME)); } @AfterClass