getEntityInformatio
}
@Override
- @SuppressWarnings({ "rawtypes", "unchecked"})
+ @SuppressWarnings({"rawtypes", "unchecked"})
protected Object getTargetRepository(RepositoryInformation metadata) {
EntityInformation, Serializable> entityInformation = getEntityInformation(metadata.getDomainType());
Class> repositoryInterface = metadata.getRepositoryInterface();
@@ -57,7 +58,7 @@ protected Object getTargetRepository(RepositoryInformation metadata) {
}
@Override
- protected QueryLookupStrategy getQueryLookupStrategy(QueryLookupStrategy.Key key) {
+ protected QueryLookupStrategy getQueryLookupStrategy(QueryLookupStrategy.Key key, EvaluationContextProvider evaluationContextProvider) {
return OrientQueryLookupStrategy.create(operations, key);
}
@@ -70,32 +71,32 @@ protected Class> getRepositoryBaseClass(RepositoryMetadata metadata) {
}
}
- private boolean isObjectRepository(Class> repositoryInterface) {
+ private boolean isObjectRepository(Class> repositoryInterface) {
return OrientObjectRepository.class.isAssignableFrom(repositoryInterface);
}
/**
* Get Custom Cluster Name.
* Method looks for {@link org.springframework.data.orient.commons.repository.annotation.Source} and {@link org.springframework.data.orient.commons.repository.annotation.Cluster} annotation.
- *
+ *
* If {@link org.springframework.data.orient.commons.repository.annotation.Source} is not null and {@link org.springframework.data.orient.commons.repository.annotation.Source#type()} equals to
* {@link org.springframework.data.orient.commons.repository.SourceType#CLUSTER} then returns {@link org.springframework.data.orient.commons.repository.annotation.Source#value()}
- *
+ *
* If {@link org.springframework.data.orient.commons.repository.annotation.Cluster} is not null then returns {@link org.springframework.data.orient.commons.repository.annotation.Cluster#value()}
*
* @param metadata
* @return cluster name or null if it's not defined
*/
- private String getCustomCluster(RepositoryMetadata metadata){
+ private String getCustomCluster(RepositoryMetadata metadata) {
Class> repositoryInterface = metadata.getRepositoryInterface();
Source source = AnnotationUtils.getAnnotation(repositoryInterface, Source.class);
- if(source != null && SourceType.CLUSTER.equals(source.type())){
+ if (source != null && SourceType.CLUSTER.equals(source.type())) {
return source.value();
}
Cluster cluster = AnnotationUtils.getAnnotation(repositoryInterface, Cluster.class);
- if (cluster != null){
+ if (cluster != null) {
return cluster.value();
}
return null;
diff --git a/spring-data-orientdb-object/src/main/java/org/springframework/data/orient/object/repository/support/OrientObjectRepositoryFactoryBean.java b/spring-data-orientdb-object/src/main/java/org/springframework/data/orient/object/repository/support/OrientObjectRepositoryFactoryBean.java
index 32e53af..aa451b4 100644
--- a/spring-data-orientdb-object/src/main/java/org/springframework/data/orient/object/repository/support/OrientObjectRepositoryFactoryBean.java
+++ b/spring-data-orientdb-object/src/main/java/org/springframework/data/orient/object/repository/support/OrientObjectRepositoryFactoryBean.java
@@ -1,7 +1,6 @@
package org.springframework.data.orient.object.repository.support;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.orient.commons.core.OrientOperations;
import org.springframework.data.orient.object.OrientObjectOperations;
import org.springframework.data.repository.Repository;
import org.springframework.data.repository.core.support.RepositoryFactorySupport;
@@ -13,18 +12,28 @@
* Special adapter for Springs {@link org.springframework.beans.factory.FactoryBean} interface to allow easy setup of
* repository factories via Spring configuration.
*
- * @author Dzmitry_Naskou
- *
- * @param the type of the repository
- * @param the type of the entity to handle
+ * @param the type of the repository
+ * @param the type of the entity to handle
* @param the type of the entity identifier to handle
+ * @author Dzmitry_Naskou
*/
public class OrientObjectRepositoryFactoryBean, S, ID extends Serializable> extends TransactionalRepositoryFactoryBeanSupport {
- /** The orient operations. */
+ /**
+ * The orient operations.
+ */
@Autowired
private OrientObjectOperations operations;
+ /**
+ * Creates a new {@link TransactionalRepositoryFactoryBeanSupport} for the given repository interface.
+ *
+ * @param repositoryInterface must not be {@literal null}.
+ */
+ protected OrientObjectRepositoryFactoryBean(Class extends T> repositoryInterface) {
+ super(repositoryInterface);
+ }
+
@Override
protected RepositoryFactorySupport doCreateRepositoryFactory() {
return new OrientObjectRepositoryFactory(operations);
diff --git a/spring-data-orientdb-object/src/main/java/org/springframework/data/orient/object/repository/support/SimpleOrientObjectRepository.java b/spring-data-orientdb-object/src/main/java/org/springframework/data/orient/object/repository/support/SimpleOrientObjectRepository.java
index 1141dea..9df173f 100644
--- a/spring-data-orientdb-object/src/main/java/org/springframework/data/orient/object/repository/support/SimpleOrientObjectRepository.java
+++ b/spring-data-orientdb-object/src/main/java/org/springframework/data/orient/object/repository/support/SimpleOrientObjectRepository.java
@@ -31,9 +31,9 @@ public SimpleOrientObjectRepository(OrientObjectOperations operations, Class
super(operations, domainClass, cluster, repositoryInterface);
}
- public T detachAll(T entity) {
- // TODO: solve this issue
- //return ((OrientObjectOperations) super.operations).detachAll(entity, true);
- return entity;
- }
+// public T detachAll(T entity) {
+// // TODO: solve this issue
+// //return ((OrientObjectOperations) super.operations).detachAll(entity, true);
+// return entity;
+// }
}
diff --git a/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/OrientDbObjectTestConfiguration.java b/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/OrientDbObjectTestConfiguration.java
index 2f3c802..ef03bfa 100644
--- a/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/OrientDbObjectTestConfiguration.java
+++ b/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/OrientDbObjectTestConfiguration.java
@@ -19,7 +19,8 @@
@Configuration
@EnableTransactionManagement
-@EnableOrientRepositories(basePackages = "org.springframework.data.orient.object", repositoryFactoryBeanClass = OrientObjectRepositoryFactoryBean.class)
+@EnableOrientRepositories(basePackages = "org.springframework.data.orient.object",
+ repositoryFactoryBeanClass = OrientObjectRepositoryFactoryBean.class)
public class OrientDbObjectTestConfiguration {
public static final String EMPLOYEE_TMP_CLUSTER = "employee_tmp";
@@ -33,12 +34,12 @@ public class OrientDbObjectTestConfiguration {
@Bean
public OrientObjectDatabaseFactory factory() {
- OrientObjectDatabaseFactory factory = new OrientObjectDatabaseFactory();
+ OrientObjectDatabaseFactory factory = new OrientObjectDatabaseFactory();
- //factory.setUrl("plocal:target/spring-data-orientdb-db");
factory.setUrl("memory:spring-data-orientdb-db");
factory.setUsername("admin");
factory.setPassword("admin");
+ factory.setMaxPoolSize(2);
return factory;
}
@@ -71,5 +72,8 @@ public void registerEntities() {
int id = db.addCluster(EMPLOYEE_HISTORY_CLUSTER);
db.getMetadata().getSchema().getClass(Employee.class).addClusterId(id);
}
+
+ db.close();
+
}
}
diff --git a/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/OrientObjectDatabaseFactoryTest.java b/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/OrientObjectDatabaseFactoryTest.java
new file mode 100644
index 0000000..48dd2c6
--- /dev/null
+++ b/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/OrientObjectDatabaseFactoryTest.java
@@ -0,0 +1,50 @@
+package org.springframework.data.orient.object;
+
+import com.orientechnologies.orient.core.record.impl.ODocument;
+import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery;
+import com.orientechnologies.orient.object.db.OObjectDatabaseTx;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestName;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+@Transactional
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = {OrientDbObjectTestConfiguration.class})
+public class OrientObjectDatabaseFactoryTest {
+
+
+ @Autowired
+ OrientObjectDatabaseFactory factory;
+
+ @Rule
+ public TestName name = new TestName();
+
+
+ @Test
+ public void shouldCountClassElements() throws Exception {
+
+ OObjectDatabaseTx db = factory.db();
+
+ assertThat(db.countClass("OUser")).isEqualTo(3);
+ }
+
+ @Test
+ public void shouldCountClusterElements() throws Exception {
+
+ OObjectDatabaseTx db = factory.db();
+
+ assertThat(db.countClusterElements("OUser")).isEqualTo(3);
+ }
+}
\ No newline at end of file
diff --git a/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/OrientObjectTemplateTest.java b/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/OrientObjectTemplateTest.java
new file mode 100644
index 0000000..afc4b33
--- /dev/null
+++ b/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/OrientObjectTemplateTest.java
@@ -0,0 +1,67 @@
+package org.springframework.data.orient.object;
+
+import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
+import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExternalResource;
+import org.junit.rules.TestName;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+/**
+ * Created by frank on 12/10/2016.
+ */
+public class OrientObjectTemplateTest {
+
+ @Rule
+ public TestName name = new TestName();
+
+ private OrientObjectTemplate template;
+ private OrientObjectDatabaseFactory fc;
+ @Rule
+ public ExternalResource database = new ExternalResource() {
+ @Override
+ protected void before() throws Throwable {
+ fc = new OrientObjectDatabaseFactory();
+ fc.setUrl("memory:" + name.getMethodName());
+ fc.setUsername("admin");
+ fc.setPassword("admin");
+ fc.setMaxPoolSize(2);
+ //post-construct annotated method for spring
+ fc.init();
+
+ template = new OrientObjectTemplate(fc);
+
+ }
+
+ @Override
+ protected void after() {
+
+ new ODatabaseDocumentTx("memory:" + name.getMethodName()).open("admin", "admin").drop();
+ }
+ };
+
+ @Test
+ public void testClassOperations() throws Exception {
+
+ assertThat(template.countClass("OUser")).isEqualTo(3);
+
+ assertThat(template.count(new OSQLSynchQuery<>("Select count(*) from Ouser"))).isEqualTo(3);
+
+ assertThat(template.existsClass("OUser")).isTrue();
+
+
+ }
+
+ @Test
+ public void testClusterOperations() throws Exception {
+
+ assertThat(template.countClusterElements("OUser")).isEqualTo(3);
+
+ assertThat(template.existsCluster("OUser")).isTrue();
+
+ }
+
+
+}
\ No newline at end of file
diff --git a/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/context/ContextEnviromentTest.java b/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/context/ContextEnviromentTest.java
index 8bdc97f..e1acc64 100644
--- a/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/context/ContextEnviromentTest.java
+++ b/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/context/ContextEnviromentTest.java
@@ -1,5 +1,7 @@
package org.springframework.data.orient.object.context;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import org.springframework.aop.SpringProxy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
@@ -8,17 +10,16 @@
import org.springframework.data.orient.object.OrientObjectDatabaseFactory;
import org.springframework.data.orient.object.OrientObjectOperations;
import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.EnableTransactionManagement;
-import org.testng.annotations.Test;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
-@Configuration
@EnableTransactionManagement
@ContextConfiguration(classes = OrientDbObjectTestConfiguration.class)
-public class ContextEnviromentTest extends AbstractTestNGSpringContextTests{
+@RunWith(SpringJUnit4ClassRunner.class)
+public class ContextEnviromentTest {
@Autowired
ApplicationContext context;
diff --git a/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/repository/PersonRepository.java b/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/repository/PersonRepository.java
index e6dced4..de4327a 100644
--- a/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/repository/PersonRepository.java
+++ b/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/repository/PersonRepository.java
@@ -10,13 +10,14 @@
import java.util.List;
+
public interface PersonRepository extends OrientObjectRepository {
- @Query("select from person where firstName = ?")
+ // @Query("select from person where firstName = ?")
List findByFirstName(String firstName);
-
+
Page findByFirstName(String firstName, Pageable pageable);
-
+
List findByLastName(String lastName);
List findByLastNameLike(String lastName);
@@ -26,18 +27,27 @@ public interface PersonRepository extends OrientObjectRepository {
List findByFirstNameOrLastName(String firstName, String lastName);
List findByFirstNameLike(String string);
-
+
List findByFirstNameStartsWith(String firstName);
Long countByFirstName(String firstName);
- @Detach(DetachMode.ENTITY)
+ Long countByActive(Boolean active);
+
+ @Query(value = "select count(*) from person where firstName = ? and active = ?", count = true)
+ Long countByFirstNameAndActive(String firstName, Boolean active);
+
+ @Detach(DetachMode.ALL)
List findByAddress_City(String city);
@FetchPlan("*:-1")
- List findByAddress_Country(String city);
+ List findByAddress_Country(String country);
List findByActiveIsTrue();
List findByActiveIsFalse();
+
+ Long deleteByActive(Boolean active);
+
+
}
diff --git a/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/repository/PersonRepositoryTest.java b/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/repository/PersonRepositoryTest.java
index b7882ad..0839c2f 100644
--- a/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/repository/PersonRepositoryTest.java
+++ b/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/repository/PersonRepositoryTest.java
@@ -1,94 +1,109 @@
package org.springframework.data.orient.object.repository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.orient.object.OrientDbObjectTestConfiguration;
import org.springframework.data.orient.object.OrientObjectDatabaseFactory;
import org.springframework.data.orient.object.OrientObjectOperations;
import org.springframework.data.orient.object.domain.Address;
import org.springframework.data.orient.object.domain.Person;
-import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.TestExecutionListeners;
-import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
-import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
-import org.springframework.test.context.transaction.TransactionConfiguration;
-import org.springframework.transaction.annotation.Transactional;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.List;
-import static org.testng.Assert.*;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
-@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
-@TransactionConfiguration(defaultRollback = true)
-@TestExecutionListeners(
- inheritListeners = false,
- listeners = {DependencyInjectionTestExecutionListener.class})
-@ContextConfiguration(classes = OrientDbObjectTestConfiguration.class)
-@Transactional
-public class PersonRepositoryTest extends AbstractTestNGSpringContextTests {
- private static final Logger logger = LoggerFactory.getLogger(PersonRepositoryTest.class);
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = {OrientDbObjectTestConfiguration.class})
+public class PersonRepositoryTest {
+
+ @Autowired
+ OrientObjectOperations operations;
@Autowired
PersonRepository repository;
-
+
@Autowired
OrientObjectDatabaseFactory factory;
-
- @Autowired
- OrientObjectOperations operations;
-
- @BeforeClass
- public void before() {
+
+ @Before
+ public void setUp() {
+
+ //cleanup
+ operations.command("delete from Address");
+ operations.command("delete from Person");
+
Address esenina = operations.command("insert into Address (country, city, street) values ('Belarus', 'Minsk', 'Esenina')");
-
+
operations.command("insert into Person (firstName, lastName, active, address) values (?, ?, ?, ?)", "Dzmitry", "Naskou", true, esenina);
operations.command("insert into Person (firstName, lastName, active) values ('Koby', 'Eliot', true)");
operations.command("insert into Person (firstName, lastName, active) values ('Ronny', 'Carlisle', true)");
operations.command("insert into Person (firstName, lastName, active) values ('Jameson', 'Matthew', true)");
operations.command("insert into Person (firstName, lastName, active) values ('Roydon', 'Brenden', false)");
}
-
+
+
@Test
public void repositoryAutowiring() {
- assertNotNull(repository);
+ Assert.assertNotNull(repository);
}
-
+
@Test
public void savePerson() {
Person person = new Person();
person.setFirstName("Jay");
person.setLastName("Miner");
-
+
String rid = repository.save(person).getRid();
-
+
Person result = repository.findOne(rid);
-
+
assertEquals(result.getFirstName(), person.getFirstName());
assertEquals(result.getLastName(), person.getLastName());
}
@Test
public void findAllPersons() {
- assertFalse(repository.findAll().isEmpty());
+ assertThat(repository.findAll())
+ .isNotEmpty()
+ .hasSize(5);
+
}
@Test
public void countPerson() {
- assertEquals(repository.count(), 5L);
+ assertThat(repository.count()).isEqualTo(5L);
}
@Test
public void findByFirstNamePage() {
- for (Person person : repository.findByFirstName("Dzmitry", new PageRequest(1, 5)).getContent()) {
+
+ assertThat(repository.findByFirstName("Jameson")).hasSize(1);
+ Page page = repository.findByFirstName("Jameson", new PageRequest(0, 5));
+
+
+ for (Person person : repository.findByFirstName("Dzmitry", new PageRequest(0, 5)).getContent()) {
+ System.out.println(person);
assertEquals(person.getFirstName(), "Dzmitry");
}
}
+
+ @Test
+ public void findAllPaged() {
+
+ assertThat(repository.findAll(new PageRequest(0, 5)).getContent()).hasSize(5);
+ }
+
@Test
public void countByFirstName() {
assertEquals(repository.countByFirstName("Dzmitry"), Long.valueOf(1));
@@ -112,59 +127,90 @@ public void findByFirstName() {
@Test
public void findByFirstNameLike() {
- for (Person person : repository.findByFirstNameLike("Dzm%")) {
- assertTrue(person.getFirstName().startsWith("Dzm"));
- }
+
+ assertThat(repository.findByFirstNameLike("Dzm%"))
+ .hasSize(1)
+ .first()
+ .hasFieldOrPropertyWithValue("firstName", "Dzmitry");
}
@Test
public void findByLastName() {
- assertFalse(repository.findByLastName("Naskou").isEmpty());
+ assertThat(repository.findByLastName("Naskou")).hasSize(1);
}
@Test
public void findByLastNameLike() {
- for (Person person : repository.findByLastNameLike("Na%")) {
- assertTrue(person.getLastName().startsWith("Na"));
- }
+ assertThat(repository.findByLastNameLike("Na%")).hasSize(1);
}
@Test
public void findByFirstNameAndLastName() {
- for (Person person : repository.findByFirstNameOrLastName("Dzmitry", "Naskou")) {
- assertTrue(person.getFirstName().equals("Dzmitry") && person.getLastName().equals("Naskou"));
- }
+ assertThat(repository.findByFirstNameAndLastName("Dzmitry", "Naskou")).hasSize(1);
}
@Test
public void findByFirstNameOrLastName() {
- for (Person person : repository.findByFirstNameOrLastName("Dzmitry", "Eliot")) {
- assertTrue(person.getFirstName().equals("Dzmitry") || person.getLastName().equals("Eliot"));
- }
+ assertThat(repository.findByFirstNameOrLastName("Dzmitry", "Eliot")).hasSize(2);
}
@Test
public void findByActiveIsTrue() {
- for (Person person : repository.findByActiveIsTrue()) {
- assertTrue(person.getActive());
- }
+ assertThat(repository.findByActiveIsTrue()).hasSize(4);
}
@Test
public void findByActiveIsFalse() {
- for (Person person : repository.findByActiveIsFalse()) {
- assertFalse(person.getActive());
- }
+ assertThat(repository.findByActiveIsFalse()).hasSize(1);
}
@Test
public void findByCityTest() {
- List persons = repository.findByAddress_City("Minsk");
- assertFalse(persons.isEmpty());
+ assertThat(repository.findByAddress_City("Minsk"))
+ .isNotEmpty()
+ .hasSize(1)
+ .first()
+ .extracting("address")
+ .extracting("city")
+ .hasSize(1)
+ .contains("Minsk");
+ }
- for (Person person : persons) {
- assertEquals(person.getAddress().getCity(), "Minsk");
- }
+ @Test
+ public void findByCountryTest() {
+
+ assertThat(repository.findByAddress_Country("Belarus"))
+ .isNotEmpty()
+ .hasSize(1)
+ .first()
+ .extracting("address")
+ .extracting("country")
+ .hasSize(1)
+ .contains("Belarus");
+ }
+
+
+ @Test
+ public void deleteByActive() {
+ assertThat(repository.deleteByActive(false)).isEqualTo(1);
+ assertThat(repository.deleteByActive(true)).isEqualTo(4);
+ assertThat(repository.count()).isEqualTo(0);
}
+
+ @Test
+ public void countByActive() {
+ assertThat(repository.countByActive(false)).isEqualTo(1);
+ assertThat(repository.countByActive(true)).isEqualTo(4);
+ }
+
+ @Test
+ public void countByFirstNameAndActive() {
+
+ assertThat(repository.countByFirstNameAndActive("Dzmitry", true)).isEqualTo(1);
+
+ }
+
+
}
+
diff --git a/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/repository/cluster/EmployeeClusteredRepositoryTest.java b/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/repository/cluster/EmployeeClusteredRepositoryTest.java
index 9802b38..c9c2a8b 100644
--- a/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/repository/cluster/EmployeeClusteredRepositoryTest.java
+++ b/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/repository/cluster/EmployeeClusteredRepositoryTest.java
@@ -3,10 +3,9 @@
import com.orientechnologies.orient.core.id.ORecordId;
import com.orientechnologies.orient.core.metadata.schema.OClass;
import com.orientechnologies.orient.object.db.OObjectDatabaseTx;
-import java.util.ArrayList;
-import java.util.List;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
@@ -16,25 +15,24 @@
import org.springframework.data.orient.object.OrientObjectOperations;
import org.springframework.data.orient.object.domain.Employee;
import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
-import org.springframework.test.context.transaction.TransactionConfiguration;
+import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import org.springframework.transaction.annotation.Transactional;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
import static org.springframework.data.orient.object.OrientDbObjectTestConfiguration.EMPLOYEE_TMP_CLUSTER;
-import org.testng.Assert;
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
-@TransactionConfiguration(defaultRollback = false)
+@Rollback
@ContextConfiguration(classes = OrientDbObjectTestConfiguration.class)
@Transactional
-public class EmployeeClusteredRepositoryTest extends AbstractTestNGSpringContextTests {
+public class EmployeeClusteredRepositoryTest extends AbstractJUnit4SpringContextTests {
- private static final Logger logger = LoggerFactory.getLogger(EmployeeClusteredRepositoryTest.class);
@Autowired
OrientObjectDatabaseFactory dbf;
@@ -48,8 +46,10 @@ public class EmployeeClusteredRepositoryTest extends AbstractTestNGSpringContext
@Autowired
OrientObjectOperations operations;
- @BeforeClass
+ @Before
public void before() {
+ operations.command("delete from employee");
+
operations.command("insert into cluster:employee (firstName, lastName, active) values ('Dzmitry', 'Naskou', true)");
operations.command("insert into cluster:employee (firstName, lastName, active) values ('Koby', 'Eliot', true)");
operations.command("insert into cluster:employee_tmp (firstName, lastName, active) values ('Ronny', 'Carlisle', true)");
@@ -59,7 +59,8 @@ public void before() {
@Test
public void findAll() {
- logger.debug("Employees: {}", repository.findAll());
+
+ logger.debug("Employees: " + repository.findAll());
}
@Test
@@ -89,7 +90,7 @@ public void saveEmployeeToClusterTest() {
@Test
public void findAllByCluster() {
- logger.debug("Employees: {}", repository.findAll(EMPLOYEE_TMP_CLUSTER));
+ logger.debug("Employees: " + repository.findAll(EMPLOYEE_TMP_CLUSTER));
}
@Test
@@ -97,7 +98,7 @@ public void checkClasses() {
OObjectDatabaseTx db = dbf.openDatabase();
for (OClass c : db.getMetadata().getSchema().getClasses()) {
- logger.debug("Class: {}", c);
+ logger.debug("Class: " + c);
}
db.close();
@@ -119,7 +120,7 @@ public void getEmployeeClusters() {
OObjectDatabaseTx db = dbf.openDatabase();
for (int i : db.getMetadata().getSchema().getClass(Employee.class).getClusterIds()) {
- logger.debug("Cluster ID: {}", i);
+ logger.debug("Cluster ID: " + i);
}
db.close();
@@ -158,7 +159,7 @@ public void findByIds() {
@Test
public void findByLastNameTest() {
- logger.debug("Employee: {}", repository.findByLastName("Naskou"));
+ logger.debug("Employee: " + repository.findByLastName("Naskou"));
}
@Test
diff --git a/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/util/OrientOperationUtilTest.java b/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/util/OrientOperationUtilTest.java
index cfb3c37..43d8dad 100644
--- a/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/util/OrientOperationUtilTest.java
+++ b/spring-data-orientdb-object/src/test/java/org/springframework/data/orient/object/util/OrientOperationUtilTest.java
@@ -1,34 +1,30 @@
package org.springframework.data.orient.object.util;
import com.orientechnologies.orient.object.db.OObjectDatabaseTx;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Configuration;
import org.springframework.data.orient.object.OrientDbObjectTestConfiguration;
import org.springframework.data.orient.object.OrientObjectDatabaseFactory;
import org.springframework.data.orient.object.OrientObjectOperations;
import org.springframework.data.orient.object.domain.Address;
import org.springframework.data.orient.object.domain.Employee;
import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
-import org.springframework.test.context.transaction.TransactionConfiguration;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
-@Configuration
-@EnableTransactionManagement
-@TransactionConfiguration
@ContextConfiguration(classes = OrientDbObjectTestConfiguration.class)
-public class OrientOperationUtilTest extends AbstractTestNGSpringContextTests {
+@RunWith(SpringJUnit4ClassRunner.class)
+public class OrientOperationUtilTest {
@Autowired
OrientObjectOperations template;
@Autowired
OrientObjectDatabaseFactory factory;
-
- @BeforeClass
+
+ @Before
public void before() {
try (OObjectDatabaseTx db = factory.openDatabase()) {
db.getEntityManager().registerEntityClass(Employee.class);
@@ -36,7 +32,7 @@ public void before() {
}
@Test
- public void getRidTest(){
+ public void getRidTest() {
Address address = new Address();
Assert.assertNull(template.getRid(address));
@@ -45,7 +41,7 @@ public void getRidTest(){
}
@Test
- public void getRidFromParentTest(){
+ public void getRidFromParentTest() {
Employee employee = new Employee();
Assert.assertNull(template.getRid(employee));
@@ -54,10 +50,10 @@ public void getRidFromParentTest(){
}
@Test
- public void getRidFromProxy(){
+ public void getRidFromProxy() {
Employee employee = new Employee();
Employee savedEmployee = template.save(employee);
-
+
Assert.assertNotSame(savedEmployee.getClass(), Employee.class);
Assert.assertEquals(template.getRid(savedEmployee), savedEmployee.getRid());
}
diff --git a/spring-data-orientdb-object/src/test/resources/logback.xml b/spring-data-orientdb-object/src/test/resources/logback.xml
index 41a4d21..089835d 100644
--- a/spring-data-orientdb-object/src/test/resources/logback.xml
+++ b/spring-data-orientdb-object/src/test/resources/logback.xml
@@ -2,7 +2,7 @@
true
- %green(%d{HH:mm:ss.SSS}) [%thread] %highlight(%-5level) %cyan(%logger{36}) - %msg%n
+ %green(%d{HH:mm:ss.SSS}) [%thread] %highlight(%-5level) %cyan(%logger{36})[%line] - %msg%n
@@ -17,13 +17,13 @@
-
+
-
+
diff --git a/spring-data-orientdb-samples/spring-boot-orientdb-hello/pom.xml b/spring-data-orientdb-samples/spring-boot-orientdb-hello/pom.xml
index 1513211..bffe30d 100644
--- a/spring-data-orientdb-samples/spring-boot-orientdb-hello/pom.xml
+++ b/spring-data-orientdb-samples/spring-boot-orientdb-hello/pom.xml
@@ -1,17 +1,15 @@
-
+
4.0.0
- org.springframework.data
+ com.orientechnologies
spring-data-orientdb-parent
- 0.10.0-SNAPSHOT
+ 0.15-SNAPSHOT
../../pom.xml
- org.springframework.boot.samples
+ com.orientechnologies.samples
spring-boot-orientdb-hello
jar
Sample - Spring Boot OrientDB Hello
@@ -20,7 +18,7 @@
- org.springframework.boot
+ com.orientechnologies
spring-boot-orientdb-autoconfigure
${project.version}
@@ -35,6 +33,11 @@
spring-boot-starter-test
test
+
+ com.orientechnologies
+ spring-data-orientdb-object
+ ${project.version}
+
diff --git a/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/HelloApplication.java b/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/HelloApplication.java
index f1c5fc5..63d59f0 100644
--- a/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/HelloApplication.java
+++ b/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/HelloApplication.java
@@ -23,69 +23,69 @@
@EnableOrientRepositories("org.springframework.boot.orientdb.hello.repository")
public class HelloApplication implements CommandLineRunner {
- @Autowired
- private PersonRepository repository;
+ @Autowired
+ private PersonRepository repository;
- @Autowired
- private OrientObjectDatabaseFactory factory;
+ @Autowired
+ private OrientObjectDatabaseFactory factory;
- public static void main(String[] args) {
- SpringApplication.run(HelloApplication.class, args);
+ public static void main(String[] args) {
+ SpringApplication.run(HelloApplication.class, args);
+ }
+
+ @Override
+ public void run(String... args) throws Exception {
+ OObjectDatabaseTx db = null;
+
+ try {
+ db = factory.openDatabase();
+ db.getEntityManager().registerEntityClass(Person.class);
+ } finally {
+ if (db != null) {
+ db.close();
+ }
}
- @Override
- public void run(String... args) throws Exception {
- OObjectDatabaseTx db = null;
-
- try {
- db = factory.openDatabase();
- db.getEntityManager().registerEntityClass(Person.class);
- } finally {
- if (db != null) {
- db.close();
- }
- }
-
- //Create Persons if required
- if (repository.count() < 1) {
- List persons = new ArrayList();
-
- Person graham = new Person();
- graham.setFirstName("Graham");
- graham.setLastName("Jacobson");
- graham.setAge(25);
-
- persons.add(graham);
-
- Person ebony = new Person();
- ebony.setFirstName("Ebony");
- ebony.setLastName("Irwin");
- ebony.setAge(21);
-
- persons.add(ebony);
-
- Person benedict = new Person();
- benedict.setFirstName("Benedict");
- benedict.setLastName("Preston");
- benedict.setAge(25);
-
- persons.add(benedict);
-
- Person zorita = new Person();
- zorita.setFirstName("Zorita");
- zorita.setLastName("Clements");
- zorita.setAge(23);
-
- persons.add(zorita);
-
- Person kaitlin = new Person();
- kaitlin.setFirstName("Kaitlin");
- kaitlin.setLastName("Walter");
- kaitlin.setAge(22);
-
- persons.add(kaitlin);
-
- repository.save(persons);
- }
+ //Create Persons if required
+ if (repository.count() < 1) {
+ List persons = new ArrayList();
+
+ Person graham = new Person();
+ graham.setFirstName("Graham");
+ graham.setLastName("Jacobson");
+ graham.setAge(25);
+
+ persons.add(graham);
+
+ Person ebony = new Person();
+ ebony.setFirstName("Ebony");
+ ebony.setLastName("Irwin");
+ ebony.setAge(21);
+
+ persons.add(ebony);
+
+ Person benedict = new Person();
+ benedict.setFirstName("Benedict");
+ benedict.setLastName("Preston");
+ benedict.setAge(25);
+
+ persons.add(benedict);
+
+ Person zorita = new Person();
+ zorita.setFirstName("Zorita");
+ zorita.setLastName("Clements");
+ zorita.setAge(23);
+
+ persons.add(zorita);
+
+ Person kaitlin = new Person();
+ kaitlin.setFirstName("Kaitlin");
+ kaitlin.setLastName("Walter");
+ kaitlin.setAge(22);
+
+ persons.add(kaitlin);
+
+ repository.save(persons);
}
+ }
}
diff --git a/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/HelloConfiguration.java b/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/HelloConfiguration.java
index 17ed8d3..b5dfef3 100644
--- a/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/HelloConfiguration.java
+++ b/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/HelloConfiguration.java
@@ -1,44 +1,45 @@
package org.springframework.boot.orientdb.hello;
-import javax.annotation.PostConstruct;
+import org.springframework.boot.orientdb.hello.data.Person;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
+import org.springframework.data.orient.commons.core.OrientTransactionManager;
import org.springframework.data.orient.commons.repository.config.EnableOrientRepositories;
import org.springframework.data.orient.object.OrientObjectDatabaseFactory;
-import org.springframework.data.orient.commons.core.OrientTransactionManager;
import org.springframework.data.orient.object.OrientObjectTemplate;
-import org.springframework.boot.orientdb.hello.data.Person;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+import javax.annotation.PostConstruct;
@Configuration
@EnableTransactionManagement
@EnableOrientRepositories(basePackages = "org.springframework.boot.orientdb.hello.data")
public class HelloConfiguration {
- @Bean
- public OrientObjectDatabaseFactory factory() {
- OrientObjectDatabaseFactory factory = new OrientObjectDatabaseFactory();
-
- factory.setUrl("remote:127.0.0.1/GratefulDeadConcerts");
- factory.setUsername("admin");
- factory.setPassword("admin");
+ @Bean
+ public OrientObjectDatabaseFactory factory() {
+ OrientObjectDatabaseFactory factory = new OrientObjectDatabaseFactory();
- return factory;
- }
+ factory.setUrl("memory:helloDb");
+ factory.setUsername("admin");
+ factory.setPassword("admin");
+ factory.setMaxPoolSize(10);
- @Bean
- public OrientTransactionManager transactionManager() {
- return new OrientTransactionManager(factory());
- }
+ return factory;
+ }
- @Bean
- public OrientObjectTemplate objectTemplate() {
- return new OrientObjectTemplate(factory());
- }
+ @Bean
+ public OrientTransactionManager transactionManager() {
+ return new OrientTransactionManager(factory());
+ }
+ @Bean
+ public OrientObjectTemplate objectTemplate() {
+ return new OrientObjectTemplate(factory());
+ }
- @PostConstruct
- public void registerEntities() {
- factory().db().getEntityManager().registerEntityClass(Person.class);
- }
+ @PostConstruct
+ public void registerEntities() {
+ factory().db().getEntityManager().registerEntityClass(Person.class);
+ }
}
diff --git a/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/data/Person.java b/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/data/Person.java
index a061654..eb2a66d 100644
--- a/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/data/Person.java
+++ b/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/data/Person.java
@@ -2,60 +2,55 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
import javax.persistence.Id;
import javax.persistence.Version;
-@JsonIgnoreProperties(value = {"handler"})
+@JsonIgnoreProperties(value = { "handler" })
public class Person {
- @Id
- private String id;
-
- @Version
- @JsonIgnore
- private Long version;
-
- /**
- * Added to avoid a runtime error whereby the detachAll property is checked
- * for existence but not actually used.
- */
- private String detachAll;
-
- private String firstName;
-
- private String lastName;
-
- private Integer age;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getFirstName() {
- return firstName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- public String getLastName() {
- return lastName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-
- public Integer getAge() {
- return age;
- }
-
- public void setAge(Integer age) {
- this.age = age;
- }
+ @Id
+ private String id;
+
+ @Version
+ @JsonIgnore
+ private Long version;
+
+ private String firstName;
+
+ private String lastName;
+
+ private Integer age;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public Integer getAge() {
+ return age;
+ }
+
+ public void setAge(Integer age) {
+ this.age = age;
+ }
}
diff --git a/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/repository/PersonRepository.java b/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/repository/PersonRepository.java
index 3797053..ceb95c1 100644
--- a/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/repository/PersonRepository.java
+++ b/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/repository/PersonRepository.java
@@ -1,17 +1,25 @@
package org.springframework.boot.orientdb.hello.repository;
import org.springframework.boot.orientdb.hello.data.Person;
+import org.springframework.data.orient.commons.repository.DetachMode;
+import org.springframework.data.orient.commons.repository.annotation.Detach;
import org.springframework.data.orient.commons.repository.annotation.Query;
import org.springframework.data.orient.object.repository.OrientObjectRepository;
import java.util.List;
public interface PersonRepository extends OrientObjectRepository {
-
- List findByFirstName(String firstName);
-
- @Query("select from person where lastName = ?")
- List findByLastName(String lastName);
-
- List findByAge(Integer age);
+
+ @Override
+ @Detach(DetachMode.ALL)
+ List findAll();
+
+ List findByFirstName(String firstName);
+
+ @Query("select from person where lastName = ?")
+ List findByLastName(String lastName);
+
+ List findByAge(Integer age);
+
+ Long deleteByAge(Integer age);
}
diff --git a/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/rest/PersonController.java b/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/rest/PersonController.java
index d2c39f8..299cb6c 100644
--- a/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/rest/PersonController.java
+++ b/spring-data-orientdb-samples/spring-boot-orientdb-hello/src/main/java/org/springframework/boot/orientdb/hello/rest/PersonController.java
@@ -14,26 +14,31 @@
@RequestMapping("/persons")
public class PersonController {
- @Autowired
- private PersonRepository repository;
-
- @RequestMapping(method = RequestMethod.GET)
- public List findAllPersons() {
- return repository.findAll();
- }
-
- @RequestMapping("/findByFirstName")
- public List findByFirstName(@RequestParam String firstName) {
- return repository.findByFirstName(firstName);
- }
-
- @RequestMapping("/findByLastName")
- public List findByLastName(@RequestParam String lastName) {
- return repository.findByLastName(lastName);
- }
-
- @RequestMapping("/findByAge")
- public List findByAge(@RequestParam Integer age) {
- return repository.findByAge(age);
- }
+ @Autowired
+ private PersonRepository repository;
+
+ @RequestMapping(method = RequestMethod.GET)
+ public List findAllPersons() {
+ return repository.findAll();
+ }
+
+ @RequestMapping("/findByFirstName")
+ public List findByFirstName(@RequestParam String firstName) {
+ return repository.findByFirstName(firstName);
+ }
+
+ @RequestMapping("/findByLastName")
+ public List findByLastName(@RequestParam String lastName) {
+ return repository.findByLastName(lastName);
+ }
+
+ @RequestMapping("/findByAge")
+ public List findByAge(@RequestParam Integer age) {
+ return repository.findByAge(age);
+ }
+
+ @RequestMapping("/deleteByAge")
+ public Long deleteByAge(@RequestParam Integer age) {
+ return repository.deleteByAge(age);
+ }
}
diff --git a/spring-data-orientdb-samples/spring-boot-orientdb-shiro/pom.xml b/spring-data-orientdb-samples/spring-boot-orientdb-shiro/pom.xml
index 33a2870..4005dbe 100644
--- a/spring-data-orientdb-samples/spring-boot-orientdb-shiro/pom.xml
+++ b/spring-data-orientdb-samples/spring-boot-orientdb-shiro/pom.xml
@@ -1,17 +1,15 @@
-
+
4.0.0
- org.springframework.data
+ com.orientechnologies
spring-data-orientdb-parent
- 0.10.0-SNAPSHOT
+ 0.15-SNAPSHOT
../../pom.xml
- org.springframework.boot.samples
+ com.orientechnologies.samples
spring-boot-orientdb-shiro
jar
Sample - Spring Boot OrientDB Shiro
@@ -32,9 +30,9 @@
- org.springframework.boot
+ com.orientechnologies
spring-boot-orientdb-autoconfigure
- ${project.version}
+ ${project.parent.version}
org.springframework.boot
@@ -73,6 +71,20 @@
spring-boot-starter-test
test
+
+ org.springframework
+ spring-tx
+
+
+ com.orientechnologies
+ spring-data-orientdb-commons
+ ${project.version}
+
+
+ com.orientechnologies
+ spring-data-orientdb-object
+ ${project.version}
+
@@ -114,6 +126,13 @@
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ true
+
+
diff --git a/spring-data-orientdb-samples/spring-boot-orientdb-shiro/src/main/java/org/springframework/boot/orient/sample/shiro/Application.java b/spring-data-orientdb-samples/spring-boot-orientdb-shiro/src/main/java/org/springframework/boot/orient/sample/shiro/Application.java
index 0819541..7886747 100755
--- a/spring-data-orientdb-samples/spring-boot-orientdb-shiro/src/main/java/org/springframework/boot/orient/sample/shiro/Application.java
+++ b/spring-data-orientdb-samples/spring-boot-orientdb-shiro/src/main/java/org/springframework/boot/orient/sample/shiro/Application.java
@@ -2,8 +2,8 @@
* 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
- *
+ * 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
@@ -12,18 +12,23 @@
*/
package org.springframework.boot.orient.sample.shiro;
+import org.springframework.boot.Banner;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.annotation.ComponentScan;
@EnableAutoConfiguration
@ComponentScan
-public class Application {
+public final class Application {
+
+ private Application() throws InstantiationException {
+ throw new InstantiationException("This class is not for instantiation");
+ }
public static void main(String... args) {
new SpringApplicationBuilder()
.sources(Application.class)
- .showBanner(false)
+ .bannerMode(Banner.Mode.OFF)
.run(args);
}
diff --git a/spring-data-orientdb-samples/spring-boot-orientdb-shiro/src/main/java/org/springframework/boot/orient/sample/shiro/OrientDbConfiguration.java b/spring-data-orientdb-samples/spring-boot-orientdb-shiro/src/main/java/org/springframework/boot/orient/sample/shiro/OrientDbConfiguration.java
index 24eae92..6afd853 100644
--- a/spring-data-orientdb-samples/spring-boot-orientdb-shiro/src/main/java/org/springframework/boot/orient/sample/shiro/OrientDbConfiguration.java
+++ b/spring-data-orientdb-samples/spring-boot-orientdb-shiro/src/main/java/org/springframework/boot/orient/sample/shiro/OrientDbConfiguration.java
@@ -2,8 +2,8 @@
* 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
- *
+ * 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
@@ -13,24 +13,67 @@
package org.springframework.boot.orient.sample.shiro;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
+import org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainerFactory;
+import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.data.orient.commons.core.OrientTransactionManager;
import org.springframework.data.orient.commons.repository.config.EnableOrientRepositories;
import org.springframework.data.orient.object.OrientObjectDatabaseFactory;
+import org.springframework.data.orient.object.OrientObjectOperations;
+import org.springframework.data.orient.object.OrientObjectTemplate;
import org.springframework.data.orient.object.repository.support.OrientObjectRepositoryFactoryBean;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
@Configuration
-@EnableOrientRepositories(basePackages = "org.springframework.boot.orient.sample.shiro.repository", repositoryFactoryBeanClass = OrientObjectRepositoryFactoryBean.class)
+@EnableTransactionManagement
+@EnableOrientRepositories(basePackages = "org.springframework.boot.orient.sample.shiro.repository",
+ repositoryFactoryBeanClass = OrientObjectRepositoryFactoryBean.class)
public class OrientDbConfiguration {
- @Autowired
- private OrientObjectDatabaseFactory factory;
+// @Autowired
+// private OrientObjectDatabaseFactory factory;
+
+
+ @Bean
+ public OrientObjectDatabaseFactory factory() {
+ OrientObjectDatabaseFactory factory = new OrientObjectDatabaseFactory();
+ factory.setUrl("memory:spring-data-orientdb-db");
+ factory.setUsername("admin");
+ factory.setPassword("admin");
+
+ return factory;
+ }
@PostConstruct
@Transactional
public void registerEntities() {
- factory.db().getEntityManager().registerEntityClasses("org.springframework.boot.orient.sample.shiro.model");
+ factory().db().getEntityManager().registerEntityClasses("org.springframework.boot.orient.sample.shiro.model");
+
+
+ }
+
+ @Bean
+ public OrientTransactionManager transactionManager() {
+ return new OrientTransactionManager(factory());
}
+
+
+ @Bean
+ public OrientObjectOperations objectTemplate() {
+ return new OrientObjectTemplate(factory());
+ }
+
+
+ @Bean
+ public EmbeddedServletContainerFactory servletContainer() {
+ TomcatEmbeddedServletContainerFactory factory =
+ new TomcatEmbeddedServletContainerFactory();
+ return factory;
+ }
+
}
diff --git a/spring-data-orientdb-samples/spring-boot-orientdb-shiro/src/main/java/org/springframework/boot/orient/sample/shiro/shiro/HazelcastSessionDao.java b/spring-data-orientdb-samples/spring-boot-orientdb-shiro/src/main/java/org/springframework/boot/orient/sample/shiro/shiro/HazelcastSessionDao.java
index 45162c7..6d95d4a 100644
--- a/spring-data-orientdb-samples/spring-boot-orientdb-shiro/src/main/java/org/springframework/boot/orient/sample/shiro/shiro/HazelcastSessionDao.java
+++ b/spring-data-orientdb-samples/spring-boot-orientdb-shiro/src/main/java/org/springframework/boot/orient/sample/shiro/shiro/HazelcastSessionDao.java
@@ -34,8 +34,8 @@ public class HazelcastSessionDao extends AbstractSessionDAO {
private static final Logger log = LoggerFactory
.getLogger(HazelcastSessionDao.class);
- private String hcInstanceName = UUID.randomUUID().toString();
- private IMap map;
+ private final String hcInstanceName = UUID.randomUUID().toString();
+ private final IMap map;
private static final String HC_MAP = "sessions";
private static final String HC_GROUP_NAME = "hc";
private static final String HC_GROUP_PASSWORD = "oursessionssecret";
diff --git a/spring-data-orientdb-samples/spring-boot-orientdb-shiro/src/test/java/org/springframework/boot/orient/sample/shiro/rest/UserControllerTest.java b/spring-data-orientdb-samples/spring-boot-orientdb-shiro/src/test/java/org/springframework/boot/orient/sample/shiro/rest/UserControllerTest.java
index de88316..f9e572e 100644
--- a/spring-data-orientdb-samples/spring-boot-orientdb-shiro/src/test/java/org/springframework/boot/orient/sample/shiro/rest/UserControllerTest.java
+++ b/spring-data-orientdb-samples/spring-boot-orientdb-shiro/src/test/java/org/springframework/boot/orient/sample/shiro/rest/UserControllerTest.java
@@ -2,8 +2,8 @@
* 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
- *
+ * 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
@@ -16,6 +16,9 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.authc.credential.DefaultPasswordService;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.orient.sample.shiro.Application;
import org.springframework.boot.orient.sample.shiro.OrientDbConfiguration;
@@ -26,30 +29,25 @@
import org.springframework.boot.orient.sample.shiro.repository.PermissionRepository;
import org.springframework.boot.orient.sample.shiro.repository.RoleRepository;
import org.springframework.boot.orient.sample.shiro.repository.UserRepository;
-import org.springframework.boot.test.IntegrationTest;
-import org.springframework.boot.test.SpringApplicationConfiguration;
-import org.springframework.boot.test.TestRestTemplate;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.http.*;
import org.springframework.test.context.TestExecutionListeners;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.support.DependencyInjectionTestExecutionListener;
-import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.springframework.test.context.web.WebAppConfiguration;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
import java.util.Arrays;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.testng.AssertJUnit.assertEquals;
+import static org.junit.Assert.assertEquals;
-@SpringApplicationConfiguration(classes
- = {Application.class, OrientDbConfiguration.class, ShiroConfiguration.class})
+@SpringBootTest(classes = {Application.class, OrientDbConfiguration.class, ShiroConfiguration.class})
@WebAppConfiguration
-@IntegrationTest
-@TestExecutionListeners(inheritListeners = false, listeners
- = {DependencyInjectionTestExecutionListener.class})
-public class UserControllerTest extends AbstractTestNGSpringContextTests {
+@TestExecutionListeners(inheritListeners = false, listeners = {DependencyInjectionTestExecutionListener.class})
+@RunWith(SpringJUnit4ClassRunner.class)
+public class UserControllerTest {
private final String BASE_URL = "http://localhost:8080/users";
private final String USER_NAME = "Paulo Pires";
@@ -64,7 +62,7 @@ public class UserControllerTest extends AbstractTestNGSpringContextTests {
@Autowired
private PermissionRepository permissionRepo;
- @BeforeClass
+ @Before
public void setUp() {
// clean-up users, roles and permissions
userRepo.deleteAll();