|
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.
|