Employee model project cleanup with west data source creation
diff --git a/jpa/employee.dynamic/README.md b/jpa/employee.dynamic/README.md
new file mode 100644
index 0000000..c039e28
--- /dev/null
+++ b/jpa/employee.dynamic/README.md
@@ -0,0 +1,4 @@
+EclipseLink Dynamic Example
+===========================
+
+This example illustrates the use of EclipseLink's dynamic JPA support with the Employee example model. This approach uses
\ No newline at end of file
diff --git a/jpa/employee/README.md b/jpa/employee/README.md
index 69108e8..c25bf66 100644
--- a/jpa/employee/README.md
+++ b/jpa/employee/README.md
@@ -8,6 +8,8 @@
employee.model
--------------
+The employee model mapped using JPA annotations.
+
employee.web
------------
@@ -16,9 +18,5 @@
employee.web-js
---------------
-TODO
+This is a Thin Server Architecture version of the Employee web application leveraging EclipseLink JPA-RS on the server and a HTML5/JavaScript based client.
-employee.model-nosql
---------------------
-
-TODO
\ No newline at end of file
diff --git a/jpa/employee/employee.model-nosql/.project b/jpa/employee/employee.model-nosql/.project
deleted file mode 100644
index a66e384..0000000
--- a/jpa/employee/employee.model-nosql/.project
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>Employee Example - model NoSQL</name>
- <comment>NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.</comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.wst.common.project.facet.core.builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.wst.validation.validationbuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.m2e.core.maven2Builder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.m2e.core.maven2Nature</nature>
- <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
- <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
- </natures>
-</projectDescription>
diff --git a/jpa/employee/employee.model/README.md b/jpa/employee/employee.model/README.md
index 1fff78e..3b165aa 100644
--- a/jpa/employee/employee.model/README.md
+++ b/jpa/employee/employee.model/README.md
@@ -1,4 +1,6 @@
EclipseLink Example
===================
-http://wiki.eclipse.org/EclipseLink/Examples
\ No newline at end of file
+Employee example model project illustrating an annotation mapped model. This project is leveraged by the employee.web and employee.web-js projects.
+
+http://wiki.eclipse.org/EclipseLink/Examples/JPA/Employee
\ No newline at end of file
diff --git a/jpa/employee/employee.model/src/config/weblogic/config.properties b/jpa/employee/employee.model/src/config/weblogic/config.properties
new file mode 100644
index 0000000..b90e907
--- /dev/null
+++ b/jpa/employee/employee.model/src/config/weblogic/config.properties
@@ -0,0 +1,17 @@
+# WebLogic 12.1.2
+domain.name=7001_Domain
+admin.url=t3://localhost:7001
+admin.userName=weblogic
+admin.password=Password1
+
+# Data source to be used by example
+datasource.name=EmployeeDS
+datasource.jndiname=java:global/employeeDS
+datasource.database.name=employee
+datasource.target=AdminServer
+datasource.driver.class=com.mysql.jdbc.Driver
+datasource.url=jdbc:mysql://localhost:3306/employee
+datasource.username=root
+datasource.password=password
+datasource.test.query=SQL SELECT * FROM DUAL
+
diff --git a/jpa/employee/employee.model/src/config/weblogic/createDataSource.py b/jpa/employee/employee.model/src/config/weblogic/createDataSource.py
new file mode 100644
index 0000000..70cec07
--- /dev/null
+++ b/jpa/employee/employee.model/src/config/weblogic/createDataSource.py
@@ -0,0 +1,71 @@
+from java.io import FileInputStream
+
+propInputStream = FileInputStream("config.properties")
+configProps = Properties()
+configProps.load(propInputStream)
+
+domainName=configProps.get("domain.name")
+adminURL=configProps.get("admin.url")
+adminUserName=configProps.get("admin.userName")
+adminPassword=configProps.get("admin.password")
+
+dsName=configProps.get("datasource.name")
+dsDatabaseName=configProps.get("datasource.database.name")
+datasourceTarget=configProps.get("datasource.target")
+dsJNDIName=configProps.get("datasource.jndiname")
+dsDriverName=configProps.get("datasource.driver.class")
+dsURL=configProps.get("datasource.url")
+dsUserName=configProps.get("datasource.username")
+dsPassword=configProps.get("datasource.password")
+dsTestQuery=configProps.get("datasource.test.query")
+
+connect(adminUserName, adminPassword, adminURL)
+edit()
+startEdit()
+cd('/')
+
+### Checking for the server
+try:
+ cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName)
+ print '===> /JDBCSystemResources/' +dsName+'/JDBCResource/ already exists'
+ print '===> No action was performed'
+ cancelEdit('y')
+ exit()
+except:
+ pass
+
+cd('/')
+cmo.createJDBCSystemResource(dsName)
+cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName)
+cmo.setName(dsName)
+
+cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDataSourceParams/' + dsName )
+set('JNDINames',jarray.array([String( dsJNDIName )], String))
+
+cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDriverParams/' + dsName )
+cmo.setUrl(dsURL)
+cmo.setDriverName( dsDriverName )
+cmo.setPassword(dsPassword)
+
+cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCConnectionPoolParams/' + dsName )
+cmo.setTestTableName(dsTestQuery)
+cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDriverParams/' + dsName + '/Properties/' + dsName )
+cmo.createProperty('user')
+
+cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDriverParams/' + dsName + '/Properties/' + dsName + '/Properties/user')
+cmo.setValue(dsUserName)
+
+cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDriverParams/' + dsName + '/Properties/' + dsName )
+cmo.createProperty('databaseName')
+
+cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDriverParams/' + dsName + '/Properties/' + dsName + '/Properties/databaseName')
+cmo.setValue(dsDatabaseName)
+
+cd('/JDBCSystemResources/' + dsName + '/JDBCResource/' + dsName + '/JDBCDataSourceParams/' + dsName )
+cmo.setGlobalTransactionsProtocol('OnePhaseCommit')
+
+cd('/SystemResources/' + dsName )
+set('Targets',jarray.array([ObjectName('com.bea:Name=' + datasourceTarget + ',Type=Server')], ObjectName))
+
+save()
+activate()
\ No newline at end of file
diff --git a/jpa/employee/employee.model/src/config/weblogic/createDataSource.sh b/jpa/employee/employee.model/src/config/weblogic/createDataSource.sh
new file mode 100755
index 0000000..4650f31
--- /dev/null
+++ b/jpa/employee/employee.model/src/config/weblogic/createDataSource.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+if [ $# -eq 0 ]
+ then
+ echo "No arguments supplied: Must provide directory where WLS 12.1.2 is installed"
+ echo " USAGE: ./createDataSource.sh ~/java/wls_1212"
+ exit
+fi
+
+pushd $1/wlserver/server/bin
+
+. ./setWLSEnv.sh
+
+popd
+
+java weblogic.WLST createDataSource.py
diff --git a/jpa/employee/employee.model/src/CascadeMergeTest.launch b/jpa/employee/employee.model/src/eclipse/CascadeMergeTest.launch
similarity index 100%
rename from jpa/employee/employee.model/src/CascadeMergeTest.launch
rename to jpa/employee/employee.model/src/eclipse/CascadeMergeTest.launch
diff --git a/jpa/employee/employee.model/src/ConfigTest.launch b/jpa/employee/employee.model/src/eclipse/ConfigTest.launch
similarity index 100%
rename from jpa/employee/employee.model/src/ConfigTest.launch
rename to jpa/employee/employee.model/src/eclipse/ConfigTest.launch
diff --git a/jpa/employee/employee.model/src/DiagnosticsTest.launch b/jpa/employee/employee.model/src/eclipse/DiagnosticsTest.launch
similarity index 100%
rename from jpa/employee/employee.model/src/DiagnosticsTest.launch
rename to jpa/employee/employee.model/src/eclipse/DiagnosticsTest.launch
diff --git a/jpa/employee/employee.model/src/EditEmployeeTest.launch b/jpa/employee/employee.model/src/eclipse/EditEmployeeTest.launch
similarity index 100%
rename from jpa/employee/employee.model/src/EditEmployeeTest.launch
rename to jpa/employee/employee.model/src/eclipse/EditEmployeeTest.launch
diff --git a/jpa/employee/employee.model/src/JavaSEExample.launch b/jpa/employee/employee.model/src/eclipse/JavaSEExample.launch
similarity index 100%
rename from jpa/employee/employee.model/src/JavaSEExample.launch
rename to jpa/employee/employee.model/src/eclipse/JavaSEExample.launch
diff --git a/jpa/employee/employee.model/src/JavaSEExampleTest.launch b/jpa/employee/employee.model/src/eclipse/JavaSEExampleTest.launch
similarity index 100%
rename from jpa/employee/employee.model/src/JavaSEExampleTest.launch
rename to jpa/employee/employee.model/src/eclipse/JavaSEExampleTest.launch
diff --git a/jpa/employee/employee.model/src/main/java/eclipselink/example/jpa/employee/model/SamplePopulation.java b/jpa/employee/employee.model/src/main/java/eclipselink/example/jpa/employee/model/SamplePopulation.java
index 9749ea6..66a982f 100644
--- a/jpa/employee/employee.model/src/main/java/eclipselink/example/jpa/employee/model/SamplePopulation.java
+++ b/jpa/employee/employee.model/src/main/java/eclipselink/example/jpa/employee/model/SamplePopulation.java
@@ -20,7 +20,7 @@
* Examples illustrating the use of JPA with the employee domain
* eclipselink.example.jpa.employee.model.
*
- * @see test.JavaSEExampleTest
+ * @see eclipselink.example.jpa.employee.test.model.JavaSEExampleTest
*
* @author dclarke
* @since EclipseLink 2.4
diff --git a/jpa/employee/employee.model/src/test/java/example/PersistenceTesting.java b/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/PersistenceTesting.java
similarity index 97%
rename from jpa/employee/employee.model/src/test/java/example/PersistenceTesting.java
rename to jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/PersistenceTesting.java
index e2185fe..303eded 100644
--- a/jpa/employee/employee.model/src/test/java/example/PersistenceTesting.java
+++ b/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/PersistenceTesting.java
@@ -10,7 +10,7 @@
* Contributors:
* dclarke - Employee Demo 2.4.2
******************************************************************************/
-package example;
+package eclipselink.example.jpa.employee.test;
import java.util.HashMap;
import java.util.Map;
diff --git a/jpa/employee/employee.model/src/test/java/test/ConfigTest.java b/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/model/ConfigTest.java
similarity index 91%
rename from jpa/employee/employee.model/src/test/java/test/ConfigTest.java
rename to jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/model/ConfigTest.java
index b6de111..19412d2 100644
--- a/jpa/employee/employee.model/src/test/java/test/ConfigTest.java
+++ b/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/model/ConfigTest.java
@@ -10,7 +10,7 @@
* Contributors:
* dclarke - Employee Demo 2.4
******************************************************************************/
-package test;
+package eclipselink.example.jpa.employee.test.model;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
@@ -19,7 +19,7 @@
import org.junit.BeforeClass;
import org.junit.Test;
-import example.PersistenceTesting;
+import eclipselink.example.jpa.employee.test.PersistenceTesting;
public class ConfigTest {
diff --git a/jpa/employee/employee.model/src/test/java/test/JavaSEExampleTest.java b/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/model/JavaSEExampleTest.java
similarity index 93%
rename from jpa/employee/employee.model/src/test/java/test/JavaSEExampleTest.java
rename to jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/model/JavaSEExampleTest.java
index 6a2f003..e355ef1 100644
--- a/jpa/employee/employee.model/src/test/java/test/JavaSEExampleTest.java
+++ b/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/model/JavaSEExampleTest.java
@@ -10,7 +10,7 @@
* Contributors:
* dclarke - Employee Demo 2.4
******************************************************************************/
-package test;
+package eclipselink.example.jpa.employee.test.model;
import org.junit.Test;
diff --git a/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/DiagnosticsTest.java b/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/DiagnosticsTest.java
index 04487b4..1e01073 100644
--- a/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/DiagnosticsTest.java
+++ b/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/DiagnosticsTest.java
@@ -28,7 +28,7 @@
import eclipselink.example.jpa.employee.model.SamplePopulation;
import eclipselink.example.jpa.employee.services.Diagnostics;
import eclipselink.example.jpa.employee.services.Diagnostics.SQLTrace;
-import example.PersistenceTesting;
+import eclipselink.example.jpa.employee.test.PersistenceTesting;
public class DiagnosticsTest {
diff --git a/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/EditEmployeeTest.java b/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/EditEmployeeTest.java
index 2b60e5e..22f9265 100644
--- a/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/EditEmployeeTest.java
+++ b/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/EditEmployeeTest.java
@@ -26,7 +26,7 @@
import eclipselink.example.jpa.employee.model.SamplePopulation;
import eclipselink.example.jpa.employee.services.EditEmployee;
import eclipselink.example.jpa.employee.services.EditEmployeeBean;
-import example.PersistenceTesting;
+import eclipselink.example.jpa.employee.test.PersistenceTesting;
/**
* TODO
diff --git a/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/PageEmployeesTest.java b/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/PageEmployeesTest.java
index 05a40e2..d308860 100644
--- a/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/PageEmployeesTest.java
+++ b/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/PageEmployeesTest.java
@@ -28,7 +28,7 @@
import eclipselink.example.jpa.employee.services.Diagnostics.SQLTrace;
import eclipselink.example.jpa.employee.services.EmployeeCriteria;
import eclipselink.example.jpa.employee.services.EntityPaging;
-import example.PersistenceTesting;
+import eclipselink.example.jpa.employee.test.PersistenceTesting;
/**
* TODO
diff --git a/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/PageIdsInEmployeesTest.java b/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/PageIdsInEmployeesTest.java
index 955b398..5f7a6a5 100644
--- a/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/PageIdsInEmployeesTest.java
+++ b/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/PageIdsInEmployeesTest.java
@@ -28,7 +28,7 @@
import eclipselink.example.jpa.employee.services.Diagnostics.SQLTrace;
import eclipselink.example.jpa.employee.services.EmployeeCriteria;
import eclipselink.example.jpa.employee.services.EntityPaging;
-import example.PersistenceTesting;
+import eclipselink.example.jpa.employee.test.PersistenceTesting;
/**
* TODO
diff --git a/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/StreamEmployeesTest.java b/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/StreamEmployeesTest.java
index 20bbeff..51ad195 100644
--- a/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/StreamEmployeesTest.java
+++ b/jpa/employee/employee.model/src/test/java/eclipselink/example/jpa/employee/test/services/StreamEmployeesTest.java
@@ -29,7 +29,7 @@
import eclipselink.example.jpa.employee.services.Diagnostics.SQLTrace;
import eclipselink.example.jpa.employee.services.EmployeeCriteria;
import eclipselink.example.jpa.employee.services.EntityPaging;
-import example.PersistenceTesting;
+import eclipselink.example.jpa.employee.test.PersistenceTesting;
/**
* TODO
diff --git a/jpa/employee/employee.model/src/test/java/example/JavaSEExample.java b/jpa/employee/employee.model/src/test/java/example/JavaSEExample.java
index 6491076..b715358 100644
--- a/jpa/employee/employee.model/src/test/java/example/JavaSEExample.java
+++ b/jpa/employee/employee.model/src/test/java/example/JavaSEExample.java
@@ -22,12 +22,13 @@
import eclipselink.example.jpa.employee.model.SamplePopulation;
import eclipselink.example.jpa.employee.services.EmployeeCriteria;
import eclipselink.example.jpa.employee.services.EntityPaging;
+import eclipselink.example.jpa.employee.test.PersistenceTesting;
/**
* Examples illustrating the use of JPA with the employee domain
* eclipselink.example.jpa.employee.model.
*
- * @see test.JavaSEExampleTest
+ * @see eclipselink.example.jpa.employee.test.model.JavaSEExampleTest
*
* @author dclarke
* @since EclipseLink 2.4
diff --git a/jpa/employee/employee.model/src/test/java/test/CascadeMergeTest.java b/jpa/employee/employee.model/src/test/java/test/CascadeMergeTest.java
deleted file mode 100644
index a0ee9f1..0000000
--- a/jpa/employee/employee.model/src/test/java/test/CascadeMergeTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010-2013 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
- * which accompanies this distribution.
- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
- * and the Eclipse Distribution License is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * Contributors:
- * dclarke - Employee Demo 2.4
- ******************************************************************************/
-package test;
-
-import java.util.List;
-
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.TypedQuery;
-
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import eclipselink.example.jpa.employee.model.Employee;
-import eclipselink.example.jpa.employee.model.SamplePopulation;
-import eclipselink.example.jpa.employee.services.Diagnostics;
-import eclipselink.example.jpa.employee.services.Diagnostics.SQLTrace;
-import example.PersistenceTesting;
-
-public class CascadeMergeTest {
-
- @Test
- public void test() {
- EntityManager em = getEmf().createEntityManager();
-
- TypedQuery<Employee> query = em.createQuery("SELECT e FROM Employee e WHERE e.address IS NOT NULL", Employee.class);
-
- List<Employee> emps = query.getResultList();
-
- Employee emp = emps.get(0);
-
- Assert.assertNotNull(emp);
- Assert.assertNotNull(emp.getAddress());
-
- em.detach(emp);
-
- em.close();
-
- em = getEmf().createEntityManager();
- emp.getAddress().setCity(emp.getAddress().getCity() + "+");
-
- em.getTransaction().begin();
- em.merge(emp);
-
- getDiagnostics().start();
- em.flush();
- SQLTrace trace = getDiagnostics().stop();
-
- Assert.assertEquals(1, trace.getEntries().size());
- Assert.assertTrue(trace.getEntries().get(0).getMessage().startsWith("UPDATE ADDRESS"));
-
- em.getTransaction().rollback();
- em.close();
- }
-
- private static EntityManagerFactory emf;
-
- private static Diagnostics diagnostics;
-
- public static EntityManagerFactory getEmf() {
- return emf;
- }
-
- public static Diagnostics getDiagnostics() {
- return diagnostics;
- }
-
- @BeforeClass
- public static void createEMF() {
- emf = PersistenceTesting.createEMF(true);
- diagnostics = Diagnostics.getInstance(emf);
-
- EntityManager em = emf.createEntityManager();
- new SamplePopulation().createNewEmployees(em, 1);
-
- Number count = em.createNamedQuery("Employee.count", Number.class).getSingleResult();
- Assert.assertEquals(1, count.intValue());
-
- em.close();
-
- emf.getCache().evictAll();
- }
-
- @AfterClass
- public static void closeEMF() {
- if (emf != null && emf.isOpen()) {
- emf.close();
- }
- emf = null;
- }
-
-}
diff --git a/jpa/employee/employee.model/src/test/java/test/PessimisticLockTest.java b/jpa/employee/employee.model/src/test/java/test/PessimisticLockTest.java
deleted file mode 100644
index 1762946..0000000
--- a/jpa/employee/employee.model/src/test/java/test/PessimisticLockTest.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010-2013 Oracle. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
- * which accompanies this distribution.
- * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
- * and the Eclipse Distribution License is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * Contributors:
- * dclarke - Employee Demo 2.4
- ******************************************************************************/
-package test;
-
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.LockModeType;
-
-import org.eclipse.persistence.descriptors.ClassDescriptor;
-import org.eclipse.persistence.jpa.JpaHelper;
-import org.eclipse.persistence.queries.ReadObjectQuery;
-import org.eclipse.persistence.queries.ReportQuery;
-import org.eclipse.persistence.sessions.UnitOfWork;
-import org.eclipse.persistence.sessions.server.ClientSession;
-import org.eclipse.persistence.sessions.server.Server;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import eclipselink.example.jpa.employee.model.Address;
-import eclipselink.example.jpa.employee.model.SamplePopulation;
-import eclipselink.example.jpa.employee.services.Diagnostics;
-import example.PersistenceTesting;
-
-/**
- * Simple test case illustrating pessimistic lock usage.
- *
- * @author dclarke
- * @since EclispeLink 2.4.2
- */
-public class PessimisticLockTest {
-
- @Test
- public void test() {
- EntityManager em = getEmf().createEntityManager();
-
- int id = em.createQuery("SELECT a.id FROM Address a", Number.class).getSingleResult().intValue();
-
- em.getTransaction().begin();
-
- Address addr = em.find(Address.class, id, LockModeType.PESSIMISTIC_WRITE);
-
- Assert.assertNotNull(addr);
- Assert.assertNull(addr.getCity());
- Assert.assertEquals(em.getLockMode(addr), LockModeType.PESSIMISTIC_WRITE);
-
- addr.setCity("Ottawa");
-
- Assert.assertNotNull(addr.getCity());
-
- em.lock(addr, LockModeType.PESSIMISTIC_WRITE);
-
- Assert.assertEquals(em.getLockMode(addr), LockModeType.PESSIMISTIC_WRITE);
- Assert.assertNotNull(addr.getCity());
-
- em.getTransaction().rollback();
-
- em.close();
- }
-
- @Test
- public void testRefreshIfNewerTXN() {
- EntityManager em = getEmf().createEntityManager();
-
- int id = em.createQuery("SELECT a.id FROM Address a", Number.class).getSingleResult().intValue();
-
- em.getTransaction().begin();
-
- Address addr = em.find(Address.class, id);
-
- Assert.assertNotNull(addr);
- Assert.assertNull(addr.getCity());
-
- addr.setCity("Ottawa");
-
- Assert.assertNotNull(addr.getCity());
-
- em.refresh(addr);
-
- Assert.assertNotNull(addr.getCity());
-
- em.getTransaction().rollback();
-
- em.close();
- }
-
- @Test
- public void testRefreshIfNewer() {
- EntityManager em = getEmf().createEntityManager();
-
- int id = em.createQuery("SELECT a.id FROM Address a", Number.class).getSingleResult().intValue();
-
- Address addr = em.find(Address.class, id);
-
- Assert.assertNotNull(addr);
- Assert.assertNull(addr.getCity());
-
- addr.setCity("Ottawa");
-
- Assert.assertNotNull(addr.getCity());
-
- em.refresh(addr);
-
- Assert.assertNotNull(addr.getCity());
-
- em.close();
- }
-
- @Test
- public void testRefreshIfNewerNativeServer() {
- Server session = JpaHelper.getServerSession(getEmf());
-
- ReportQuery idQuery = new ReportQuery();
- idQuery.setReferenceClass(Address.class);
- idQuery.addAttribute("id");
- idQuery.setShouldReturnSingleAttribute(true);
- idQuery.setShouldReturnSingleValue(true);
-
- int id = ((Number) session.executeQuery(idQuery)).intValue();
-
- ReadObjectQuery addrQuery = new ReadObjectQuery();
- addrQuery.setReferenceClass(Address.class);
- addrQuery.setSelectionCriteria(addrQuery.getExpressionBuilder().get("id").equal(id));
-
- Address addr = (Address) session.executeQuery(addrQuery);
-
- Assert.assertNotNull(addr);
- Assert.assertNull(addr.getCity());
-
- addr.setCity("Ottawa");
-
- Assert.assertNotNull(addr.getCity());
-
- session.refreshObject(addr);
-
- Assert.assertNotNull(addr.getCity());
-
- }
-
- @Test
- public void testRefreshIfNewerNativeClientSession() {
- Server session = JpaHelper.getServerSession(getEmf());
- ClientSession cs = session.acquireClientSession();
-
- ReportQuery idQuery = new ReportQuery();
- idQuery.setReferenceClass(Address.class);
- idQuery.addAttribute("id");
- idQuery.setShouldReturnSingleAttribute(true);
- idQuery.setShouldReturnSingleValue(true);
-
- int id = ((Number) cs.executeQuery(idQuery)).intValue();
-
- ReadObjectQuery addrQuery = new ReadObjectQuery();
- addrQuery.setReferenceClass(Address.class);
- addrQuery.setSelectionCriteria(addrQuery.getExpressionBuilder().get("id").equal(id));
-
- Address addr = (Address) cs.executeQuery(addrQuery);
-
- Assert.assertNotNull(addr);
- Assert.assertNull(addr.getCity());
-
- addr.setCity("Ottawa");
-
- Assert.assertNotNull(addr.getCity());
-
- cs.refreshObject(addr);
-
- Assert.assertNotNull(addr.getCity());
-
- }
-
- @Test
- public void testRefreshIfNewerNativeUOW() {
- Server session = JpaHelper.getServerSession(getEmf());
- UnitOfWork uow = session.acquireUnitOfWork();
-
- ReportQuery idQuery = new ReportQuery();
- idQuery.setReferenceClass(Address.class);
- idQuery.addAttribute("id");
- idQuery.setShouldReturnSingleAttribute(true);
- idQuery.setShouldReturnSingleValue(true);
-
- int id = ((Number) uow.executeQuery(idQuery)).intValue();
-
- ReadObjectQuery addrQuery = new ReadObjectQuery();
- addrQuery.setReferenceClass(Address.class);
- addrQuery.setSelectionCriteria(addrQuery.getExpressionBuilder().get("id").equal(id));
-
- Address addr = (Address) uow.executeQuery(addrQuery);
-
- Assert.assertNotNull(addr);
- Assert.assertNull(addr.getCity());
-
- addr.setCity("Ottawa");
-
- Assert.assertNotNull(addr.getCity());
-
- uow.refreshObject(addr);
-
- Assert.assertNotNull(addr.getCity());
-
- }
-
- @Test
- public void verifyConfig() {
- ClassDescriptor desc = JpaHelper.getServerSession(getEmf()).getClassDescriptorForAlias("Address");
- Assert.assertNotNull(desc);
-
- Assert.assertTrue(desc.getCachePolicy().shouldOnlyRefreshCacheIfNewerVersion());
- }
-
- private static EntityManagerFactory emf;
-
- private static Diagnostics diagnostics;
-
- public static EntityManagerFactory getEmf() {
- return emf;
- }
-
- public static Diagnostics getDiagnostics() {
- return diagnostics;
- }
-
- @BeforeClass
- public static void createEMF() {
- emf = PersistenceTesting.createEMF(true);
- diagnostics = Diagnostics.getInstance(emf);
-
- EntityManager em = emf.createEntityManager();
- new SamplePopulation().createNewEmployees(em, 1);
-
- Number count = em.createNamedQuery("Employee.count", Number.class).getSingleResult();
- Assert.assertEquals(1, count.intValue());
-
- em.close();
-
- emf.getCache().evictAll();
- }
-
- @AfterClass
- public static void closeEMF() {
- if (emf != null && emf.isOpen()) {
- emf.close();
- }
- emf = null;
- }
-
- @Before
- public void clearCache() {
- JpaHelper.getServerSession(getEmf()).getIdentityMapAccessor().initializeAllIdentityMaps();
- }
-}