From: <id...@us...> - 2009-02-19 23:35:15
|
Revision: 18 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=18&view=rev Author: idueppe Date: 2009-02-19 23:35:04 +0000 (Thu, 19 Feb 2009) Log Message: ----------- in progress - development of idmapper service component Modified Paths: -------------- cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/main/java/de/campussource/cse/idmapper/ClientObject.java cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/java/de/campussource/cse/idmapper/PersistentUnitTest.java cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/resources/META-INF/persistence.xml Added Paths: ----------- cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/main/java/de/campussource/cse/idmapper/ClientObjectDao.java cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/java/de/campussource/cse/idmapper/AbstractPersistentUnitTest.java cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/java/de/campussource/cse/idmapper/ClientObjectDaoTest.java Modified: cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/main/java/de/campussource/cse/idmapper/ClientObject.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/main/java/de/campussource/cse/idmapper/ClientObject.java 2009-02-19 23:02:14 UTC (rev 17) +++ cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/main/java/de/campussource/cse/idmapper/ClientObject.java 2009-02-19 23:35:04 UTC (rev 18) @@ -1,5 +1,6 @@ package de.campussource.cse.idmapper; +import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; @@ -32,7 +33,7 @@ @Column(name = "BUS_ID", nullable = false) private Long busId; - @ManyToOne + @ManyToOne(cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH} ) @JoinColumn(name = "CLIENT_INSTANCE_ID") private ClientInstance clientInstance; Added: cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/main/java/de/campussource/cse/idmapper/ClientObjectDao.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/main/java/de/campussource/cse/idmapper/ClientObjectDao.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/main/java/de/campussource/cse/idmapper/ClientObjectDao.java 2009-02-19 23:35:04 UTC (rev 18) @@ -0,0 +1,26 @@ +package de.campussource.cse.idmapper; + +import javax.ejb.Stateless; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; + +@Stateless +public class ClientObjectDao { + + @PersistenceContext + private EntityManager entityManager; + + @TransactionAttribute(TransactionAttributeType.MANDATORY) + public void persist(ClientObject clientObject) { + entityManager.persist(clientObject); + } + + @TransactionAttribute(TransactionAttributeType.SUPPORTS) + public ClientObject find(final Long id) { + return entityManager.find(ClientObject.class, id); + } + + +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/main/java/de/campussource/cse/idmapper/ClientObjectDao.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/java/de/campussource/cse/idmapper/AbstractPersistentUnitTest.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/java/de/campussource/cse/idmapper/AbstractPersistentUnitTest.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/java/de/campussource/cse/idmapper/AbstractPersistentUnitTest.java 2009-02-19 23:35:04 UTC (rev 18) @@ -0,0 +1,48 @@ +package de.campussource.cse.idmapper; + +import java.lang.reflect.Field; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; +import javax.persistence.PersistenceContext; + +import org.junit.Before; + +public class AbstractPersistentUnitTest { + + protected EntityManagerFactory entityManagerFactory; + protected EntityManager entityManager; + + @Before + public void retrieveEntityManager() { + entityManagerFactory = Persistence.createEntityManagerFactory("cseip"); + entityManager = entityManagerFactory.createEntityManager(); + } + + protected void injectPersistenceContext(Object object) { + Field[] fields = object.getClass().getDeclaredFields(); + for (Field field : fields) { + if (field.isAnnotationPresent(PersistenceContext.class)) { + field.setAccessible(true); + try { + field.set(object, entityManager); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + field.setAccessible(false); + } + } + } + + protected void txBegin() { + entityManager.getTransaction().begin(); + } + + protected void txCommit() { + entityManager.getTransaction().commit(); + } + +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/java/de/campussource/cse/idmapper/AbstractPersistentUnitTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/java/de/campussource/cse/idmapper/ClientObjectDaoTest.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/java/de/campussource/cse/idmapper/ClientObjectDaoTest.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/java/de/campussource/cse/idmapper/ClientObjectDaoTest.java 2009-02-19 23:35:04 UTC (rev 18) @@ -0,0 +1,77 @@ +package de.campussource.cse.idmapper; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.fail; + +import java.net.MalformedURLException; +import java.net.URL; + +import javax.persistence.RollbackException; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +public class ClientObjectDaoTest extends AbstractPersistentUnitTest { + + private ClientObjectDao dao; + + @Before + public void setUp() { + dao = new ClientObjectDao(); + injectPersistenceContext(dao); + txBegin(); + } + + @After + public void tearDown() { + entityManager.close(); + entityManagerFactory.close(); + } + + @Test + public void testCreateClientObject() { + ClientObject clientObject = newClientObject("OPENUSS::COURSE::10", 1L); + dao.persist(clientObject); + assertNotNull(clientObject.getId()); + txCommit(); + } + + @Test + public void testFindClientObject() { + ClientObject clientObject = newClientObject("OPENUSS::COURSE::10", 1L); + dao.persist(clientObject); + assertNotNull(clientObject.getId()); + txCommit(); + txBegin(); + ClientObject coid = dao.find(clientObject.getId()); + assertEquals(clientObject, coid); + } + + @Test(expected=RollbackException.class) + public void testCreateClientObjectUniqueConstraintError() { + ClientInstance instance = createClientInstance("TEST","http://test.de"); + dao.persist(newClientObject("TEST::COURSE::1", 1L, instance )); + dao.persist(newClientObject("TEST::COURSE::1", 1L, instance )); + txCommit(); + } + + private ClientInstance createClientInstance(final String name, final String url) { + try { + return new ClientInstance(name, new URL(url)); + } catch (MalformedURLException e) { + fail(e.getMessage()); + throw new RuntimeException(e); + } + } + + private ClientObject newClientObject(final String COID, final long BUS_ID, ClientInstance... instance) { + if (instance.length > 0) { + return new ClientObject(BUS_ID, COID, instance[0]); + } else { + return new ClientObject(BUS_ID, COID, createClientInstance("default","http://www.default.de")); + } + } + +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/java/de/campussource/cse/idmapper/ClientObjectDaoTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/java/de/campussource/cse/idmapper/PersistentUnitTest.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/java/de/campussource/cse/idmapper/PersistentUnitTest.java 2009-02-19 23:02:14 UTC (rev 17) +++ cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/java/de/campussource/cse/idmapper/PersistentUnitTest.java 2009-02-19 23:35:04 UTC (rev 18) @@ -1,25 +1,21 @@ package de.campussource.cse.idmapper; -import static org.junit.Assert.*; -import org.junit.Test; +import static org.junit.Assert.assertNotNull; import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.Persistence; +import org.junit.Test; -public class PersistentUnitTest { + +public class PersistentUnitTest extends AbstractPersistentUnitTest { @Test public void testConfiguration() { - EntityManagerFactory emf = Persistence.createEntityManagerFactory("cseip"); - EntityManager em = emf.createEntityManager(); - List<ClientInstance> mappings = em.createQuery("SELECT m FROM ClientInstance m").getResultList(); + List<ClientInstance> mappings = entityManager.createQuery("SELECT m FROM ClientInstance m").getResultList(); assertNotNull(mappings); - em.close(); + entityManager.close(); } } Modified: cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/resources/META-INF/persistence.xml =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/resources/META-INF/persistence.xml 2009-02-19 23:02:14 UTC (rev 17) +++ cse-ip/trunk/sandbox/cse-ip/sc-idmapper/src/test/resources/META-INF/persistence.xml 2009-02-19 23:35:04 UTC (rev 18) @@ -9,10 +9,10 @@ <properties> <property name="toplink.ddl-generation" value="drop-and-create-tables" /> <property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver" /> +<!-- <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/cseip?profileSQL=true&createDatabaseIfNotExist=true" />--> <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/cseip?createDatabaseIfNotExist=true" /> <property name="toplink.jdbc.user" value="root" /> <property name="toplink.jdbc.password" value="masterkey" /> - <property name="toplink.logging.level" value="FINEST"/> </properties> </persistence-unit> </persistence> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |