From cc7775d6d8041fb5caa4dedfdec690753d3b6539 Mon Sep 17 00:00:00 2001 From: eugenp Date: Sun, 11 Aug 2013 17:35:21 +0300 Subject: [PATCH] further persistence work --- .../org/baeldung/persistence/dao/IFooDao.java | 8 ++ .../baeldung/persistence/dao/impl/FooDao.java | 24 ++++++ .../org/baeldung/persistence/model/Foo.java | 83 +++++++++++++++++++ .../persistence/service/IFooService.java | 8 ++ .../persistence/service/impl/FooService.java | 28 +++++++ ...rityViolationExceptionIntegrationTest.java | 26 +++++- ...eanDefinitionExceptionIntegrationTest.java | 20 +---- 7 files changed, 177 insertions(+), 20 deletions(-) create mode 100644 spring-exceptions/src/main/java/org/baeldung/persistence/dao/IFooDao.java create mode 100644 spring-exceptions/src/main/java/org/baeldung/persistence/dao/impl/FooDao.java create mode 100644 spring-exceptions/src/main/java/org/baeldung/persistence/model/Foo.java create mode 100644 spring-exceptions/src/main/java/org/baeldung/persistence/service/IFooService.java create mode 100644 spring-exceptions/src/main/java/org/baeldung/persistence/service/impl/FooService.java diff --git a/spring-exceptions/src/main/java/org/baeldung/persistence/dao/IFooDao.java b/spring-exceptions/src/main/java/org/baeldung/persistence/dao/IFooDao.java new file mode 100644 index 0000000000..b41cd9edde --- /dev/null +++ b/spring-exceptions/src/main/java/org/baeldung/persistence/dao/IFooDao.java @@ -0,0 +1,8 @@ +package org.baeldung.persistence.dao; + +import org.baeldung.persistence.common.IOperations; +import org.baeldung.persistence.model.Foo; + +public interface IFooDao extends IOperations { + // +} diff --git a/spring-exceptions/src/main/java/org/baeldung/persistence/dao/impl/FooDao.java b/spring-exceptions/src/main/java/org/baeldung/persistence/dao/impl/FooDao.java new file mode 100644 index 0000000000..baf29c9ecd --- /dev/null +++ b/spring-exceptions/src/main/java/org/baeldung/persistence/dao/impl/FooDao.java @@ -0,0 +1,24 @@ +package org.baeldung.persistence.dao.impl; + +import org.baeldung.persistence.common.AbstractHibernateDao; +import org.baeldung.persistence.dao.IFooDao; +import org.baeldung.persistence.model.Foo; +import org.hibernate.SessionFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Repository; + +@Repository +public class FooDao extends AbstractHibernateDao implements IFooDao { + + @Autowired + private SessionFactory sessionFactory; + + public FooDao() { + super(); + + setClazz(Foo.class); + } + + // API + +} diff --git a/spring-exceptions/src/main/java/org/baeldung/persistence/model/Foo.java b/spring-exceptions/src/main/java/org/baeldung/persistence/model/Foo.java new file mode 100644 index 0000000000..8e1dee33e8 --- /dev/null +++ b/spring-exceptions/src/main/java/org/baeldung/persistence/model/Foo.java @@ -0,0 +1,83 @@ +package org.baeldung.persistence.model; + +import java.io.Serializable; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity +public class Foo implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private long id; + + @Column(nullable = false) + private String name; + + public Foo() { + super(); + } + + public Foo(final String name) { + super(); + + this.name = name; + } + + // API + + public long getId() { + return id; + } + + public void setId(final long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + // + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final Foo other = (Foo) obj; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + return true; + } + + @Override + public String toString() { + final StringBuilder builder = new StringBuilder(); + builder.append("Foo [name=").append(name).append("]"); + return builder.toString(); + } + +} diff --git a/spring-exceptions/src/main/java/org/baeldung/persistence/service/IFooService.java b/spring-exceptions/src/main/java/org/baeldung/persistence/service/IFooService.java new file mode 100644 index 0000000000..64b826db02 --- /dev/null +++ b/spring-exceptions/src/main/java/org/baeldung/persistence/service/IFooService.java @@ -0,0 +1,8 @@ +package org.baeldung.persistence.service; + +import org.baeldung.persistence.common.IOperations; +import org.baeldung.persistence.model.Foo; + +public interface IFooService extends IOperations { + // +} diff --git a/spring-exceptions/src/main/java/org/baeldung/persistence/service/impl/FooService.java b/spring-exceptions/src/main/java/org/baeldung/persistence/service/impl/FooService.java new file mode 100644 index 0000000000..f0a4d7a649 --- /dev/null +++ b/spring-exceptions/src/main/java/org/baeldung/persistence/service/impl/FooService.java @@ -0,0 +1,28 @@ +package org.baeldung.persistence.service.impl; + +import org.baeldung.persistence.common.AbstractService; +import org.baeldung.persistence.common.IOperations; +import org.baeldung.persistence.dao.IFooDao; +import org.baeldung.persistence.model.Foo; +import org.baeldung.persistence.service.IFooService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class FooService extends AbstractService implements IFooService { + + @Autowired + private IFooDao dao; + + public FooService() { + super(); + } + + // API + + @Override + protected IOperations getDao() { + return dao; + } + +} diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/dataIntegrityviolationexception/Cause1DataIntegrityViolationExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/dataIntegrityviolationexception/Cause1DataIntegrityViolationExceptionIntegrationTest.java index 8b503e989a..ea94d5612c 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/dataIntegrityviolationexception/Cause1DataIntegrityViolationExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/dataIntegrityviolationexception/Cause1DataIntegrityViolationExceptionIntegrationTest.java @@ -1,8 +1,14 @@ package org.baeldung.ex.dataIntegrityviolationexception; import org.baeldung.ex.dataIntegrityviolationexception.spring.Cause1DataContextWithJavaConfig; +import org.baeldung.persistence.model.Child; +import org.baeldung.persistence.model.Parent; +import org.baeldung.persistence.service.IChildService; +import org.baeldung.persistence.service.IParentService; import org.junit.Test; import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataIntegrityViolationException; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; @@ -11,9 +17,23 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @ContextConfiguration(classes = { Cause1DataContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) public class Cause1DataIntegrityViolationExceptionIntegrationTest { - @Test - public final void givenContextIsInitialized_thenNoException() { - // + @Autowired + private IParentService service; + + @Autowired + private IChildService childService; + + // tests + + @Test(expected = DataIntegrityViolationException.class) + public void whenChildIsDeletedWhileParentStillHasForeignKeyToIt_thenDataException() { + final Child childEntity = new Child(); + childService.create(childEntity); + + final Parent parentEntity = new Parent(childEntity); + service.create(parentEntity); + + childService.delete(childEntity); } } diff --git a/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause1NoSuchBeanDefinitionExceptionIntegrationTest.java b/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause1NoSuchBeanDefinitionExceptionIntegrationTest.java index 6f42b75398..1a9711b2d6 100644 --- a/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause1NoSuchBeanDefinitionExceptionIntegrationTest.java +++ b/spring-exceptions/src/test/java/org/baeldung/ex/nosuchbeandefinitionexception/Cause1NoSuchBeanDefinitionExceptionIntegrationTest.java @@ -17,23 +17,9 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; @ContextConfiguration(classes = { Cause1ContextWithJavaConfig.class }, loader = AnnotationConfigContextLoader.class) public class Cause1NoSuchBeanDefinitionExceptionIntegrationTest { - @Autowired - private IParentService service; - - @Autowired - private IChildService childService; - - // tests - - @Test(expected = DataIntegrityViolationException.class) - public void whenChildIsDeletedWhileParentStillHasForeignKeyToIt_thenDataException() { - final Child childEntity = new Child(); - childService.create(childEntity); - - final Parent parentEntity = new Parent(childEntity); - service.create(parentEntity); - - childService.delete(childEntity); + @Test + public final void givenContextIsInitialized_thenNoException() { + // } }