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();
-    }
-}