#1312: Remove unversioned JPARS resources (#1313)

Signed-off-by: Lukas Jungmann <lukas.jungmann@oracle.com>
diff --git a/bundles/eclipselink/src/main/java/module-info.java b/bundles/eclipselink/src/main/java/module-info.java
index f9fb47f..ca15309 100644
--- a/bundles/eclipselink/src/main/java/module-info.java
+++ b/bundles/eclipselink/src/main/java/module-info.java
@@ -193,7 +193,6 @@
     exports org.eclipse.persistence.jpa.rs.logging;
     exports org.eclipse.persistence.jpa.rs.resources;
     exports org.eclipse.persistence.jpa.rs.resources.common;
-    exports org.eclipse.persistence.jpa.rs.resources.unversioned;
     exports org.eclipse.persistence.jpa.rs.util;
     exports org.eclipse.persistence.jpa.rs.util.list;
     exports org.eclipse.persistence.jpa.rs.util.metadatasources;
diff --git a/dbws/org.eclipse.persistence.dbws/src/main/java/module-info.java b/dbws/org.eclipse.persistence.dbws/src/main/java/module-info.java
index dc90b0c..32c5efe 100644
--- a/dbws/org.eclipse.persistence.dbws/src/main/java/module-info.java
+++ b/dbws/org.eclipse.persistence.dbws/src/main/java/module-info.java
@@ -42,7 +42,6 @@
     exports org.eclipse.persistence.jpa.rs.logging;
     exports org.eclipse.persistence.jpa.rs.resources;
     exports org.eclipse.persistence.jpa.rs.resources.common;
-    exports org.eclipse.persistence.jpa.rs.resources.unversioned;
     exports org.eclipse.persistence.jpa.rs.util;
     exports org.eclipse.persistence.jpa.rs.util.list;
     exports org.eclipse.persistence.jpa.rs.util.metadatasources;
diff --git a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/PersistenceContext.java b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/PersistenceContext.java
index 7cd4959..9c16bd8 100644
--- a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/PersistenceContext.java
+++ b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/PersistenceContext.java
@@ -158,7 +158,7 @@
 
     private Boolean weavingEnabled = null;
 
-    private ServiceVersion version = ServiceVersion.NO_VERSION;
+    private ServiceVersion version = ServiceVersion.VERSION_2_0;
 
     /** Builder for collection proxies used in JPARS 2.0. **/
     private CollectionWrapperBuilder collectionWrapperBuilder;
@@ -182,7 +182,7 @@
      */
     public PersistenceContext(String emfName, EntityManagerFactoryImpl emf, URI defaultURI) {
         super();
-        init(emfName, emf, defaultURI, ServiceVersion.NO_VERSION);
+        init(emfName, emf, defaultURI, ServiceVersion.VERSION_2_0);
     }
 
     /**
@@ -207,7 +207,7 @@
         if (version != null) {
             this.version = version;
         } else {
-            this.version = ServiceVersion.NO_VERSION;
+            this.version = ServiceVersion.VERSION_2_0;
         }
 
         if (getServerSession().hasExternalTransactionController()) {
diff --git a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/features/ServiceVersion.java b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/features/ServiceVersion.java
index 54eece8..0a71552 100644
--- a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/features/ServiceVersion.java
+++ b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/features/ServiceVersion.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -24,13 +24,9 @@
  * @since EclipseLink 2.6.0
  */
 public enum ServiceVersion {
-    /**
-     * Added only for legacy reasons. In early versions version number was not supported.
-     */
-    NO_VERSION(null),
 
     /**
-     * The same as NO_VERSION, but v1.0 is specified in the URL.
+     * Version 1.0. Legacy.
      */
     VERSION_1_0("v1.0"),
 
@@ -92,11 +88,10 @@
      * @return {@link FeatureSet} related to this version.
      */
     public FeatureSet getFeatureSet() {
-        if (this.compareTo(VERSION_2_0) >= 0)
-            return new FeatureSetV2();
-        else {
+        if (this.compareTo(VERSION_2_0) < 0) {
             return new FeatureSetPreV2();
         }
+        return new FeatureSetV2();
     }
 
     /**
diff --git a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/unversioned/EntityResource.java b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/unversioned/EntityResource.java
deleted file mode 100644
index a438b21..0000000
--- a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/unversioned/EntityResource.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v. 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0,
- * or the Eclipse Distribution License v. 1.0 which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
- */
-
-package org.eclipse.persistence.jpa.rs.resources.unversioned;
-
-import java.io.InputStream;
-
-import jakarta.ws.rs.Consumes;
-import jakarta.ws.rs.DELETE;
-import jakarta.ws.rs.GET;
-import jakarta.ws.rs.POST;
-import jakarta.ws.rs.PUT;
-import jakarta.ws.rs.Path;
-import jakarta.ws.rs.PathParam;
-import jakarta.ws.rs.Produces;
-import jakarta.ws.rs.core.Context;
-import jakarta.ws.rs.core.HttpHeaders;
-import jakarta.ws.rs.core.MediaType;
-import jakarta.ws.rs.core.Response;
-import jakarta.ws.rs.core.UriInfo;
-
-import org.eclipse.persistence.jpa.rs.resources.common.AbstractEntityResource;
-
-/**
- * @deprecated Use {@link  org.eclipse.persistence.jpa.rs.resources.EntityResource} instead.
- *
- */
-@Deprecated
-@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
-@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
-@Path("/{context}/entity/")
-public class EntityResource extends AbstractEntityResource {
-
-    @GET
-    @Path("{type}/{id}/{attribute}")
-    public Response findAttribute(@PathParam("context") String persistenceUnit, @PathParam("type") String type, @PathParam("id") String id, @PathParam("attribute") String attribute, @Context HttpHeaders hh, @Context UriInfo ui) {
-        setRequestUniqueId();
-        return findAttributeInternal(null, persistenceUnit, type, id, attribute, hh, ui);
-    }
-
-    @GET
-    @Path("{type}/{id}")
-    public Response find(@PathParam("context") String persistenceUnit, @PathParam("type") String type, @PathParam("id") String id, @Context HttpHeaders hh, @Context UriInfo ui) {
-        setRequestUniqueId();
-        return findInternal(null, persistenceUnit, type, id, hh, ui);
-    }
-
-    @PUT
-    @Path("{type}")
-    public Response create(@PathParam("context") String persistenceUnit, @PathParam("type") String type, @Context HttpHeaders hh, @Context UriInfo uriInfo, InputStream in) throws Exception {
-        setRequestUniqueId();
-        return createInternal(null, persistenceUnit, type, hh, uriInfo, in);
-    }
-
-    @POST
-    @Path("{type}")
-    public Response update(@PathParam("context") String persistenceUnit, @PathParam("type") String type, @Context HttpHeaders hh, @Context UriInfo uriInfo, InputStream in) {
-        setRequestUniqueId();
-        return updateInternal(null, persistenceUnit, type, hh, uriInfo, in);
-    }
-
-    @POST
-    @Path("{type}/{id}/{attribute}")
-    public Response setOrAddAttribute(@PathParam("context") String persistenceUnit, @PathParam("type") String type, @PathParam("id") String id, @PathParam("attribute") String attribute, @Context HttpHeaders hh, @Context UriInfo ui, InputStream in) {
-        setRequestUniqueId();
-        return setOrAddAttributeInternal(null, persistenceUnit, type, id, attribute, hh, ui, in);
-    }
-
-    @DELETE
-    @Path("{type}/{id}/{attribute}")
-    public Response removeAttribute(@PathParam("context") String persistenceUnit, @PathParam("type") String type, @PathParam("id") String id, @PathParam("attribute") String attribute, @Context HttpHeaders hh, @Context UriInfo ui) {
-        setRequestUniqueId();
-        return removeAttributeInternal(null, persistenceUnit, type, id, attribute, hh, ui);
-    }
-
-    @DELETE
-    @Path("{type}/{id}")
-    public Response delete(@PathParam("context") String persistenceUnit, @PathParam("type") String type, @PathParam("id") String id, @Context HttpHeaders hh, @Context UriInfo ui) {
-        setRequestUniqueId();
-        return deleteInternal(null, persistenceUnit, type, id, hh, ui);
-    }
-}
diff --git a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/unversioned/PersistenceResource.java b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/unversioned/PersistenceResource.java
deleted file mode 100644
index aafef2f..0000000
--- a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/unversioned/PersistenceResource.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v. 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0,
- * or the Eclipse Distribution License v. 1.0 which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
- */
-
-// Contributors:
-//      dclarke/tware - initial
-package org.eclipse.persistence.jpa.rs.resources.unversioned;
-
-import java.io.InputStream;
-import java.lang.reflect.InvocationTargetException;
-
-import javax.naming.NamingException;
-import jakarta.ws.rs.Consumes;
-import jakarta.ws.rs.GET;
-import jakarta.ws.rs.POST;
-import jakarta.ws.rs.Path;
-import jakarta.ws.rs.Produces;
-import jakarta.ws.rs.core.Context;
-import jakarta.ws.rs.core.HttpHeaders;
-import jakarta.ws.rs.core.MediaType;
-import jakarta.ws.rs.core.Response;
-import jakarta.ws.rs.core.UriInfo;
-import jakarta.xml.bind.JAXBException;
-
-import org.eclipse.persistence.jpa.rs.resources.common.AbstractPersistenceResource;
-
-/**
- * PersistenceResource
- * @deprecated Use {@link  org.eclipse.persistence.jpa.rs.resources.PersistenceResource} instead.
- *
- * @author tware
- *
- */
-@Deprecated
-@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
-@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
-@Path("/")
-public class PersistenceResource extends AbstractPersistenceResource {
-
-    @GET
-    public Response getContexts(@Context HttpHeaders hh, @Context UriInfo uriInfo) throws JAXBException {
-        setRequestUniqueId();
-        return getContextsInternal(null, hh, uriInfo);
-    }
-
-    @POST
-    @Produces(MediaType.WILDCARD)
-    public Response callSessionBean(@Context HttpHeaders hh, @Context UriInfo ui, InputStream is) throws JAXBException, ClassNotFoundException, NamingException, NoSuchMethodException, InvocationTargetException, IllegalAccessException {
-        setRequestUniqueId();
-        return callSessionBeanInternal(null, hh, ui, is);
-    }
-}
diff --git a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/unversioned/PersistenceUnitResource.java b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/unversioned/PersistenceUnitResource.java
deleted file mode 100644
index de6ba2d..0000000
--- a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/unversioned/PersistenceUnitResource.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v. 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0,
- * or the Eclipse Distribution License v. 1.0 which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
- */
-
-package org.eclipse.persistence.jpa.rs.resources.unversioned;
-
-import jakarta.ws.rs.Consumes;
-import jakarta.ws.rs.GET;
-import jakarta.ws.rs.Path;
-import jakarta.ws.rs.PathParam;
-import jakarta.ws.rs.Produces;
-import jakarta.ws.rs.core.Context;
-import jakarta.ws.rs.core.HttpHeaders;
-import jakarta.ws.rs.core.MediaType;
-import jakarta.ws.rs.core.Response;
-import jakarta.ws.rs.core.UriInfo;
-
-import org.eclipse.persistence.jpa.rs.resources.common.AbstractPersistenceUnitResource;
-
-/**
- * PersistenceResource
- *
- * @deprecated Use {@link  org.eclipse.persistence.jpa.rs.resources.PersistenceUnitResource} instead.
- *
- */
-@Deprecated
-@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
-@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
-@Path("/{context}/metadata/")
-public class PersistenceUnitResource extends AbstractPersistenceUnitResource {
-
-    @GET
-    @Path("entity/{descriptorAlias}")
-    public Response getDescriptorMetadata(@PathParam("context") String persistenceUnit, @PathParam("descriptorAlias") String descriptorAlias, @Context HttpHeaders hh, @Context UriInfo uriInfo) {
-        setRequestUniqueId();
-        return getDescriptorMetadataInternal(null, persistenceUnit, descriptorAlias, hh, uriInfo);
-    }
-
-    @GET
-    public Response getTypes(@PathParam("context") String persistenceUnit, @Context HttpHeaders hh, @Context UriInfo uriInfo) {
-        setRequestUniqueId();
-        return getTypesInternal(null, persistenceUnit, hh, uriInfo);
-    }
-
-    @GET
-    @Path("query")
-    public Response getQueriesMetadata(@PathParam("context") String persistenceUnit, @Context HttpHeaders hh, @Context UriInfo uriInfo) {
-        setRequestUniqueId();
-        return getQueriesMetadataInternal(null, persistenceUnit, hh, uriInfo);
-    }
-
-    @GET
-    @Path("query/{queryName}")
-    public Response getQueryMetadata(@PathParam("context") String persistenceUnit, @PathParam("queryName") String queryName, @Context HttpHeaders hh, @Context UriInfo uriInfo) {
-        setRequestUniqueId();
-        return getQueryMetadataInternal(null, persistenceUnit, queryName, hh, uriInfo);
-    }
-}
diff --git a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/unversioned/QueryResource.java b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/unversioned/QueryResource.java
deleted file mode 100644
index c98e226..0000000
--- a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/unversioned/QueryResource.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v. 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0,
- * or the Eclipse Distribution License v. 1.0 which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
- */
-
-package org.eclipse.persistence.jpa.rs.resources.unversioned;
-
-import jakarta.ws.rs.Consumes;
-import jakarta.ws.rs.GET;
-import jakarta.ws.rs.POST;
-import jakarta.ws.rs.Path;
-import jakarta.ws.rs.PathParam;
-import jakarta.ws.rs.Produces;
-import jakarta.ws.rs.core.Context;
-import jakarta.ws.rs.core.HttpHeaders;
-import jakarta.ws.rs.core.MediaType;
-import jakarta.ws.rs.core.Response;
-import jakarta.ws.rs.core.UriInfo;
-
-import org.eclipse.persistence.jpa.rs.resources.common.AbstractQueryResource;
-
-/**
- * PersistenceResource
- *
- * @deprecated Use {@link  org.eclipse.persistence.jpa.rs.resources.QueryResource} instead.
- *
- */
-@Deprecated
-@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
-@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
-@Path("/{context}/query/")
-public class QueryResource extends AbstractQueryResource {
-
-    @POST
-    @Path("{name}")
-    public Response namedQueryUpdate(@PathParam("context") String persistenceUnit, @PathParam("name") String name, @Context HttpHeaders hh, @Context UriInfo ui) {
-        setRequestUniqueId();
-        return namedQueryUpdateInternal(null, persistenceUnit, name, hh, ui);
-    }
-
-    @GET
-    @Path("{name}")
-    public Response namedQuery(@PathParam("context") String persistenceUnit, @PathParam("name") String name, @Context HttpHeaders hh, @Context UriInfo ui) {
-        setRequestUniqueId();
-        return namedQueryInternal(null, persistenceUnit, name, hh, ui);
-    }
-}
diff --git a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/unversioned/SingleResultQueryResource.java b/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/unversioned/SingleResultQueryResource.java
deleted file mode 100644
index 0f4e1de..0000000
--- a/dbws/org.eclipse.persistence.dbws/src/main/java/org/eclipse/persistence/jpa/rs/resources/unversioned/SingleResultQueryResource.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v. 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0,
- * or the Eclipse Distribution License v. 1.0 which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
- */
-
-package org.eclipse.persistence.jpa.rs.resources.unversioned;
-
-import jakarta.ws.rs.GET;
-import jakarta.ws.rs.Path;
-import jakarta.ws.rs.PathParam;
-import jakarta.ws.rs.Produces;
-import jakarta.ws.rs.core.Context;
-import jakarta.ws.rs.core.HttpHeaders;
-import jakarta.ws.rs.core.MediaType;
-import jakarta.ws.rs.core.Response;
-import jakarta.ws.rs.core.UriInfo;
-
-import org.eclipse.persistence.jpa.rs.resources.common.AbstractSingleResultQueryResource;
-
-/**
- * PersistenceResource
- *
- * @deprecated Use {@link  org.eclipse.persistence.jpa.rs.resources.SingleResultQueryResource} instead.
- *
- */
-@Deprecated
-// Fix for Bug 393320 - JPA-RS: Respect the Accept Header for a singleResultQuery
-@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.APPLICATION_OCTET_STREAM })
-@Path("/{context}/singleResultQuery/")
-public class SingleResultQueryResource extends AbstractSingleResultQueryResource {
-    @GET
-    @Path("{name}")
-    public Response namedQuerySingleResult(@PathParam("context") String persistenceUnit, @PathParam("name") String name, @Context HttpHeaders hh, @Context UriInfo ui) {
-        setRequestUniqueId();
-        return namedQuerySingleResultInternal(null, persistenceUnit, name, hh, ui);
-    }
-}
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/AllJavaEETests.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/AllJavaEETests.java
index 93c188e..05351d6 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/AllJavaEETests.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/AllJavaEETests.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -25,7 +25,6 @@
 @SuiteClasses({
         ServerV2Tests.class,
         ServerV1Tests.class,
-        ServerNoVersionTests.class,
         ServerLatestTests.class
 })
 public class AllJavaEETests {
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/AllJavaSETests.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/AllJavaSETests.java
index 3f09d9a..df72332 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/AllJavaSETests.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/AllJavaSETests.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -23,7 +23,6 @@
  */
 @RunWith(Suite.class)
 @SuiteClasses({
-        ServiceNoVersionTests.class,
         ServiceV1Tests.class,
         ServiceV2Tests.class,
         ServiceLatestTests.class
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/ServerNoVersionTests.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/ServerNoVersionTests.java
deleted file mode 100644
index 488dc17..0000000
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/ServerNoVersionTests.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 2014, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v. 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0,
- * or the Eclipse Distribution License v. 1.0 which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
- */
-
-// Contributors:
-//      Dmitry Kornilov - Initial implementation
-package org.eclipse.persistence.jpars.test;
-
-import org.eclipse.persistence.jpars.test.server.noversion.ServerCrudTest;
-import org.eclipse.persistence.jpars.test.server.noversion.ServerEmployeeTest;
-import org.eclipse.persistence.jpars.test.server.noversion.ServerTravelerTest;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
-@RunWith(Suite.class)
-@SuiteClasses({
-        ServerEmployeeTest.class,
-        ServerCrudTest.class,
-        ServerTravelerTest.class
-})
-public class ServerNoVersionTests {
-
-}
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/ServiceNoVersionTests.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/ServiceNoVersionTests.java
deleted file mode 100644
index aa279f0..0000000
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/ServiceNoVersionTests.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2014, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v. 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0,
- * or the Eclipse Distribution License v. 1.0 which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
- */
-
-// Contributors:
-//      Dmitry Kornilov - Initial implementation
-package org.eclipse.persistence.jpars.test;
-
-import org.eclipse.persistence.jpars.test.crud.StaticCrudTests;
-import org.eclipse.persistence.jpars.test.service.noversion.EmployeeTest;
-import org.eclipse.persistence.jpars.test.service.noversion.MarshalUnmarshalTest;
-import org.eclipse.persistence.jpars.test.service.noversion.TestService;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-import org.junit.runners.Suite.SuiteClasses;
-
-@RunWith(Suite.class)
-@SuiteClasses({
-        TestService.class,
-        StaticCrudTests.class,
-        MarshalUnmarshalTest.class,
-        EmployeeTest.class
-})
-public class ServiceNoVersionTests {
-
-}
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/noversion/ServerCrudTest.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/ServerCrudTestBase.java
similarity index 98%
rename from jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/noversion/ServerCrudTest.java
rename to jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/ServerCrudTestBase.java
index e66d37d..72bf108 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/noversion/ServerCrudTest.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/ServerCrudTestBase.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,7 +13,7 @@
 // Contributors:
 //      tware/gonural - Initial implementation
 //      Dmitry Kornilov - Moved to another package, upgrade to Jersey 2.x
-package org.eclipse.persistence.jpars.test.server.noversion;
+package org.eclipse.persistence.jpars.test.server;
 
 import org.eclipse.persistence.config.QueryHints;
 import org.eclipse.persistence.jpars.test.BaseJparsTest;
@@ -45,7 +45,7 @@
 /**
  * Server CRUD tests.
  */
-public class ServerCrudTest extends BaseJparsTest {
+public class ServerCrudTestBase extends BaseJparsTest {
 
     @BeforeClass
     public static void setup() throws Exception {
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/noversion/ServerEmployeeTest.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/ServerEmployeeTestBase.java
similarity index 99%
rename from jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/noversion/ServerEmployeeTest.java
rename to jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/ServerEmployeeTestBase.java
index dedd116..a32d8ef 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/noversion/ServerEmployeeTest.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/ServerEmployeeTestBase.java
@@ -13,7 +13,7 @@
 // Contributors:
 //      gonural - initial
 //      Dmitry Kornilov - Moved to another package, upgrade to Jersey 2.x
-package org.eclipse.persistence.jpars.test.server.noversion;
+package org.eclipse.persistence.jpars.test.server;
 
 import org.eclipse.persistence.jpars.test.BaseJparsTest;
 import org.eclipse.persistence.jpars.test.model.employee.Certification;
@@ -49,7 +49,7 @@
 /**
  * Employee model tests.
  */
-public class ServerEmployeeTest extends BaseJparsTest {
+public class ServerEmployeeTestBase extends BaseJparsTest {
     private static final long THREE_YEARS = 94608000000L;
 
     @BeforeClass
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/noversion/ServerTravelerTest.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/ServerTravelerTestBase.java
similarity index 94%
rename from jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/noversion/ServerTravelerTest.java
rename to jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/ServerTravelerTestBase.java
index c83df06..5bd23b1 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/noversion/ServerTravelerTest.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/ServerTravelerTestBase.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -13,7 +13,7 @@
 // Contributors:
 //      gonural - initial
 //      Dmitry Kornilov - Moved to another package, upgrade to Jersey 2.x
-package org.eclipse.persistence.jpars.test.server.noversion;
+package org.eclipse.persistence.jpars.test.server;
 
 import org.eclipse.persistence.jpars.test.BaseJparsTest;
 import org.eclipse.persistence.jpars.test.model.traveler.Traveler;
@@ -30,7 +30,7 @@
 /**
  * Traveler model tests.
  */
-public class ServerTravelerTest extends BaseJparsTest {
+public class ServerTravelerTestBase extends BaseJparsTest {
 
     @BeforeClass
     public static void setup() throws Exception {
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/latest/ServerCrudLatestTest.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/latest/ServerCrudLatestTest.java
index 6838b67..ccfdb46 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/latest/ServerCrudLatestTest.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/latest/ServerCrudLatestTest.java
@@ -15,13 +15,14 @@
 //      Dmitry Kornilov - Upgrade to Jersey 2.x
 package org.eclipse.persistence.jpars.test.server.latest;
 
+import org.eclipse.persistence.jpars.test.server.ServerCrudTestBase;
 import org.eclipse.persistence.jpars.test.server.v2.ServerCrudV2Test;
 import org.eclipse.persistence.jpars.test.util.StaticModelDatabasePopulator;
 import org.junit.BeforeClass;
 
 /**
- * ServerCrudTest modified for JPARS v2.0.
- * {@link org.eclipse.persistence.jpars.test.server.noversion.ServerCrudTest}
+ * ServerCrudTestBase modified for JPARS v2.0.
+ * {@link ServerCrudTestBase}
  *
  * @author Dmitry Kornilov
  * @since EclipseLink 2.6.0
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/latest/ServerEmployeeLatestTest.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/latest/ServerEmployeeLatestTest.java
index 6912a7b..8780dc2 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/latest/ServerEmployeeLatestTest.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/latest/ServerEmployeeLatestTest.java
@@ -14,12 +14,13 @@
 //      Dmitry Kornilov - Initial implementation
 package org.eclipse.persistence.jpars.test.server.latest;
 
+import org.eclipse.persistence.jpars.test.server.ServerEmployeeTestBase;
 import org.eclipse.persistence.jpars.test.server.v2.ServerEmployeeV2Test;
 import org.junit.BeforeClass;
 
 /**
- * ServerEmployeeTest from JPARS 2.0 adapted for 'latest' version.
- * {@link org.eclipse.persistence.jpars.test.server.noversion.ServerEmployeeTest}
+ * ServerEmployeeTestBase from JPARS 2.0 adapted for 'latest' version.
+ * {@link ServerEmployeeTestBase}
  *
  * @author Dmitry Kornilov
  * @since EclipseLink 2.6.0
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/latest/ServerTravelerLatestTest.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/latest/ServerTravelerLatestTest.java
index a91e306..a099b62 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/latest/ServerTravelerLatestTest.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/latest/ServerTravelerLatestTest.java
@@ -14,12 +14,13 @@
 //      Dmitry Kornilov - Initial implementation
 package org.eclipse.persistence.jpars.test.server.latest;
 
+import org.eclipse.persistence.jpars.test.server.ServerTravelerTestBase;
 import org.eclipse.persistence.jpars.test.server.v2.ServerTravelerV2Test;
 import org.junit.BeforeClass;
 
 /**
- * ServerTravelerTest adapted for 'latest' version.
- * {@link org.eclipse.persistence.jpars.test.server.noversion.ServerTravelerTest}
+ * ServerTravelerTestBase adapted for 'latest' version.
+ * {@link ServerTravelerTestBase}
  *
  * @author Dmitry Kornilov
  * @since EclipseLink 2.6.0
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v1/ServerCrudV1Test.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v1/ServerCrudV1Test.java
index 7b77b2a..94dcfc4 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v1/ServerCrudV1Test.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v1/ServerCrudV1Test.java
@@ -14,18 +14,18 @@
 //      Dmitry Kornilov - Initial implementation, upgrade to Jersey 2.x
 package org.eclipse.persistence.jpars.test.server.v1;
 
-import org.eclipse.persistence.jpars.test.server.noversion.ServerCrudTest;
+import org.eclipse.persistence.jpars.test.server.ServerCrudTestBase;
 import org.eclipse.persistence.jpars.test.util.StaticModelDatabasePopulator;
 import org.junit.BeforeClass;
 
 /**
  * ServerCrudTest modified for JPARS v1.0.
- * {@link ServerCrudTest}
+ * {@link ServerCrudTestBase}
  *
  * @author Dmitry Kornilov
  * @since EclipseLink 2.6.0
  */
-public class ServerCrudV1Test extends ServerCrudTest {
+public class ServerCrudV1Test extends ServerCrudTestBase {
 
     @BeforeClass
     public static void setup() throws Exception {
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v1/ServerEmployeeV1Test.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v1/ServerEmployeeV1Test.java
index 640d482..c7dd32c 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v1/ServerEmployeeV1Test.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v1/ServerEmployeeV1Test.java
@@ -14,17 +14,19 @@
 //      Dmitry Kornilov - Initial implementation
 package org.eclipse.persistence.jpars.test.server.v1;
 
-import org.eclipse.persistence.jpars.test.server.noversion.ServerEmployeeTest;
+import org.eclipse.persistence.jpars.test.server.ServerEmployeeTestBase;
 import org.junit.BeforeClass;
 
+import java.util.Map;
+
 /**
  * ServerEmployeeTest adapted for JPARS 1.0.
- * {@link ServerEmployeeTest}
+ * {@link ServerEmployeeTestBase}
  *
  * @author Dmitry Kornilov
  * @since EclipseLink 2.6.0
  */
-public class ServerEmployeeV1Test extends ServerEmployeeTest {
+public class ServerEmployeeV1Test extends ServerEmployeeTestBase {
 
     @BeforeClass
     public static void setup() throws Exception {
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v1/ServerTravelerV1Test.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v1/ServerTravelerV1Test.java
index 9c1d52b..199d664 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v1/ServerTravelerV1Test.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v1/ServerTravelerV1Test.java
@@ -14,17 +14,17 @@
 //      Dmitry Kornilov - Initial implementation
 package org.eclipse.persistence.jpars.test.server.v1;
 
-import org.eclipse.persistence.jpars.test.server.noversion.ServerTravelerTest;
+import org.eclipse.persistence.jpars.test.server.ServerTravelerTestBase;
 import org.junit.BeforeClass;
 
 /**
  * ServerTravelerNoVersionTest adapted for JPARS 1.0.
- * {@link ServerTravelerTest}
+ * {@link ServerTravelerTestBase}
  *
  * @author Dmitry Kornilov
  * @since EclipseLink 2.6.0
  */
-public class ServerTravelerV1Test extends ServerTravelerTest {
+public class ServerTravelerV1Test extends ServerTravelerTestBase {
 
     @BeforeClass
     public static void setup() throws Exception {
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v2/ServerCrudV2Test.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v2/ServerCrudV2Test.java
index 1596e20..adc34d6 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v2/ServerCrudV2Test.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v2/ServerCrudV2Test.java
@@ -16,7 +16,7 @@
 
 import org.eclipse.persistence.jpars.test.model.auction.StaticAuction;
 import org.eclipse.persistence.jpars.test.server.RestCallFailedException;
-import org.eclipse.persistence.jpars.test.server.noversion.ServerCrudTest;
+import org.eclipse.persistence.jpars.test.server.ServerCrudTestBase;
 import org.eclipse.persistence.jpars.test.util.RestUtils;
 import org.eclipse.persistence.jpars.test.util.StaticModelDatabasePopulator;
 import org.junit.BeforeClass;
@@ -25,13 +25,13 @@
 import jakarta.ws.rs.core.MediaType;
 
 /**
- * ServerCrudTest modified for JPARS v2.0.
- * {@link ServerCrudTest}
+ * ServerCrudTestBase modified for JPARS v2.0.
+ * {@link ServerCrudTestBase}
  *
  * @author Dmitry Kornilov
  * @since EclipseLink 2.6.0
  */
-public class ServerCrudV2Test extends ServerCrudTest {
+public class ServerCrudV2Test extends ServerCrudTestBase {
 
     @BeforeClass
     public static void setup() throws Exception {
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v2/ServerEmployeeV2Test.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v2/ServerEmployeeV2Test.java
index 2484a29..ba70458 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v2/ServerEmployeeV2Test.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v2/ServerEmployeeV2Test.java
@@ -21,7 +21,7 @@
 import org.eclipse.persistence.jpars.test.model.employee.Office;
 import org.eclipse.persistence.jpars.test.model.employee.SmallProject;
 import org.eclipse.persistence.jpars.test.server.RestCallFailedException;
-import org.eclipse.persistence.jpars.test.server.noversion.ServerEmployeeTest;
+import org.eclipse.persistence.jpars.test.server.ServerEmployeeTestBase;
 import org.eclipse.persistence.jpars.test.util.RestUtils;
 import org.junit.After;
 import org.junit.BeforeClass;
@@ -39,13 +39,13 @@
 import static org.junit.Assert.assertTrue;
 
 /**
- * ServerEmployeeTest from JPARS 1.0 adapted for version 2.0.
- * {@link ServerEmployeeTest}
+ * ServerEmployeeTestBase from JPARS 1.0 adapted for version 2.0.
+ * {@link ServerEmployeeTestBase}
  *
  * @author Dmitry Kornilov
  * @since EclipseLink 2.6.0
  */
-public class ServerEmployeeV2Test extends ServerEmployeeTest {
+public class ServerEmployeeV2Test extends ServerEmployeeTestBase {
 
     @BeforeClass
     public static void setup() throws Exception {
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v2/ServerTravelerV2Test.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v2/ServerTravelerV2Test.java
index d8611a6..9369141 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v2/ServerTravelerV2Test.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/server/v2/ServerTravelerV2Test.java
@@ -16,6 +16,7 @@
 
 import org.eclipse.persistence.jpars.test.BaseJparsTest;
 import org.eclipse.persistence.jpars.test.model.traveler.Traveler;
+import org.eclipse.persistence.jpars.test.server.ServerTravelerTestBase;
 import org.eclipse.persistence.jpars.test.util.RestUtils;
 import org.junit.After;
 import org.junit.BeforeClass;
@@ -29,7 +30,7 @@
 
 /**
  * ServerTravelerNoVersionTest adapted for JPARS 2.0.
- * {@link org.eclipse.persistence.jpars.test.server.noversion.ServerTravelerTest}
+ * {@link ServerTravelerTestBase}
  *
  * @author Dmitry Kornilov
  * @since EclipseLink 2.6.0
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/noversion/EmployeeTest.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/EmployeeTestBase.java
similarity index 96%
rename from jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/noversion/EmployeeTest.java
rename to jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/EmployeeTestBase.java
index 8795e25..60ce015 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/noversion/EmployeeTest.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/EmployeeTestBase.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -12,7 +12,7 @@
 
 // Contributors:
 //      gonural - Initial implementation
-package org.eclipse.persistence.jpars.test.service.noversion;
+package org.eclipse.persistence.jpars.test.service;
 
 import org.eclipse.persistence.jpars.test.BaseJparsTest;
 import org.eclipse.persistence.jpars.test.model.employee.Employee;
@@ -41,7 +41,7 @@
  *
  * @author gonural
  */
-public class EmployeeTest extends BaseJparsTest {
+public class EmployeeTestBase extends BaseJparsTest {
 
     @BeforeClass
     public static void setup() throws Exception {
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/noversion/MarshalUnmarshalTest.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/MarshalUnmarshalTestBase.java
similarity index 97%
rename from jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/noversion/MarshalUnmarshalTest.java
rename to jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/MarshalUnmarshalTestBase.java
index 2590f89..9875337 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/noversion/MarshalUnmarshalTest.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/MarshalUnmarshalTestBase.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -14,7 +14,7 @@
 //         gonural - Initial implementation
 //         2014-09-01-2.6.0 Dmitry Kornilov
 //           - Moved to separate package together with other 'no version' tests.
-package org.eclipse.persistence.jpars.test.service.noversion;
+package org.eclipse.persistence.jpars.test.service;
 
 import org.eclipse.persistence.exceptions.JPARSErrorCodes;
 import org.eclipse.persistence.jpa.rs.exceptions.JPARSException;
@@ -44,7 +44,7 @@
  *
  * @author gonural
  */
-public class MarshalUnmarshalTest extends BaseJparsTest {
+public class MarshalUnmarshalTestBase extends BaseJparsTest {
 
     @BeforeClass
     public static void setup() throws Exception {
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/latest/EmployeeLatestTest.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/latest/EmployeeLatestTest.java
index 1fd9e1c..a8e27eb 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/latest/EmployeeLatestTest.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/latest/EmployeeLatestTest.java
@@ -14,12 +14,13 @@
 //      Dmitry Kornilov - Initial implementation
 package org.eclipse.persistence.jpars.test.service.latest;
 
+import org.eclipse.persistence.jpars.test.service.EmployeeTestBase;
 import org.eclipse.persistence.jpars.test.service.v2.EmployeeV2Test;
 import org.junit.BeforeClass;
 
 /**
- * EmployeeTest adapted for JPARS 2.0.
- * {@link org.eclipse.persistence.jpars.test.service.noversion.EmployeeTest}
+ * EmployeeTestBase adapted for JPARS 2.0.
+ * {@link EmployeeTestBase}
  *
  * @author Dmitry Kornilov
  * @since EclipseLink 2.6.0
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/latest/MarshalUnmarshalLatestTest.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/latest/MarshalUnmarshalLatestTest.java
index 006681d..51b6319 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/latest/MarshalUnmarshalLatestTest.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/latest/MarshalUnmarshalLatestTest.java
@@ -14,12 +14,13 @@
 //         Dmitry Kornilov - Initial implementation
 package org.eclipse.persistence.jpars.test.service.latest;
 
+import org.eclipse.persistence.jpars.test.service.MarshalUnmarshalTestBase;
 import org.eclipse.persistence.jpars.test.service.v2.MarshalUnmarshalV2Test;
 import org.junit.BeforeClass;
 
 /**
- * MarshalUnmarshalTest adapted for JPARS 2.0.
- * {@link org.eclipse.persistence.jpars.test.service.noversion.MarshalUnmarshalTest}
+ * MarshalUnmarshalTestBase adapted for JPARS 2.0.
+ * {@link MarshalUnmarshalTestBase}
  *
  * @author Dmitry Kornilov
  * @since EclipseLink 2.6.0
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/noversion/TestService.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/noversion/TestService.java
deleted file mode 100644
index be33c95..0000000
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/noversion/TestService.java
+++ /dev/null
@@ -1,690 +0,0 @@
-/*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v. 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0,
- * or the Eclipse Distribution License v. 1.0 which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
- */
-
-// Contributors:
-//      tware - Initial implementation
-package org.eclipse.persistence.jpars.test.service.noversion;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import jakarta.persistence.EntityManager;
-import jakarta.persistence.EntityManagerFactory;
-import jakarta.persistence.Persistence;
-import jakarta.ws.rs.core.MediaType;
-import jakarta.ws.rs.core.Response;
-import jakarta.ws.rs.core.StreamingOutput;
-import jakarta.xml.bind.JAXBException;
-
-import org.eclipse.persistence.config.PersistenceUnitProperties;
-import org.eclipse.persistence.descriptors.FetchGroupManager;
-import org.eclipse.persistence.dynamic.DynamicEntity;
-import org.eclipse.persistence.jpa.rs.DynamicRestClassLoader;
-import org.eclipse.persistence.jpa.rs.PersistenceContext;
-import org.eclipse.persistence.jpa.rs.PersistenceFactoryBase;
-import org.eclipse.persistence.jpa.rs.exceptions.JPARSException;
-import org.eclipse.persistence.jpa.rs.resources.unversioned.EntityResource;
-import org.eclipse.persistence.jpa.rs.resources.unversioned.PersistenceResource;
-import org.eclipse.persistence.jpa.rs.resources.unversioned.PersistenceUnitResource;
-import org.eclipse.persistence.jpa.rs.resources.unversioned.QueryResource;
-import org.eclipse.persistence.jpa.rs.resources.unversioned.SingleResultQueryResource;
-import org.eclipse.persistence.jpa.rs.util.StreamingOutputMarshaller;
-import org.eclipse.persistence.jpa.rs.util.xmladapters.LinkAdapter;
-import org.eclipse.persistence.jpars.test.model.auction.StaticBid;
-import org.eclipse.persistence.jpars.test.model.auction.StaticUser;
-import org.eclipse.persistence.jpars.test.model.multitenant.Account;
-import org.eclipse.persistence.jpars.test.util.ExamplePropertiesLoader;
-import org.eclipse.persistence.jpars.test.util.RestUtils;
-import org.eclipse.persistence.jpars.test.util.StaticModelDatabasePopulator;
-import org.eclipse.persistence.jpars.test.util.TestHttpHeaders;
-import org.eclipse.persistence.jpars.test.util.TestURIInfo;
-import org.eclipse.persistence.queries.FetchGroupTracker;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-/**
- * Tests for the JPA RS resource classes
- *
- * @author tware
- */
-public class TestService {
-
-    private static PersistenceFactoryBase factory;
-    private static PersistenceContext context;
-
-    public static PersistenceContext getAuctionPersistenceContext(Map<String, Object> additionalProperties) throws URISyntaxException {
-        Map<String, Object> properties = new HashMap<>();
-        if (additionalProperties != null) {
-            properties.putAll(additionalProperties);
-        }
-        properties.put(PersistenceUnitProperties.WEAVING, "static");
-        return factory.get("jpars_auction", RestUtils.getServerURI(), null, properties);
-    }
-
-    public static PersistenceContext getPhoneBookPersistenceContext(Map<String, Object> additionalProperties) throws URISyntaxException {
-        Map<String, Object> properties = new HashMap<>();
-        if (additionalProperties != null) {
-            properties.putAll(additionalProperties);
-        }
-        properties.put(PersistenceUnitProperties.WEAVING, "static");
-        return factory.get("jpars_phonebook", RestUtils.getServerURI(), null, properties);
-    }
-
-    @BeforeClass
-    public static void setup() {
-        Map<String, Object> properties = new HashMap<>();
-        ExamplePropertiesLoader.loadProperties(properties);
-        factory = null;
-        try {
-            factory = new PersistenceFactoryBase();
-
-            properties.put(PersistenceUnitProperties.NON_JTA_DATASOURCE, null);
-            properties.put(PersistenceUnitProperties.DDL_GENERATION, PersistenceUnitProperties.DROP_AND_CREATE);
-            //properties.put(PersistenceUnitProperties.DEPLOY_ON_STARTUP, "true");
-            properties.put(PersistenceUnitProperties.CLASSLOADER, new DynamicRestClassLoader(Thread.currentThread().getContextClassLoader()));
-
-            getAuctionPersistenceContext(properties);
-
-            getPhoneBookPersistenceContext(properties);
-
-            EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpars_auction-static-local", properties);
-            context = factory.bootstrapPersistenceContext("jpars_auction-static-local", emf, RestUtils.getServerURI(), null, false);
-            if (context == null) {
-                throw new Exception("Persistence context could not be created.");
-            }
-
-            StaticModelDatabasePopulator.populateDB(emf);
-
-        } catch (Exception e) {
-            e.printStackTrace();
-            fail(e.toString());
-        }
-    }
-
-    @AfterClass
-    public static void teardown() throws URISyntaxException {
-        clearData();
-    }
-
-    protected static void clearData() throws URISyntaxException {
-        EntityManager em = getAuctionPersistenceContext(null).getEmf().createEntityManager();
-        em.getTransaction().begin();
-        em.createQuery("delete from Bid b").executeUpdate();
-        em.createQuery("delete from Auction a").executeUpdate();
-        em.createQuery("delete from User u").executeUpdate();
-
-        em.getTransaction().commit();
-        em = getPhoneBookPersistenceContext(null).getEmf().createEntityManager();
-        em.getTransaction().begin();
-        em.createQuery("delete from Person p").executeUpdate();
-        em.getTransaction().commit();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testUpdateUserList() throws Exception {
-        EntityResource resource = new EntityResource();
-        resource.setPersistenceFactory(factory);
-        PersistenceContext context = TestService.getAuctionPersistenceContext(null);
-
-        DynamicEntity entity = context.newEntity("User");
-        entity.set("name", "Jim");
-        context.create(null, entity);
-
-        entity.set("name", "James");
-
-        DynamicEntity entity2 = context.newEntity("User");
-        entity2.set("name", "Jill");
-        context.create(null, entity2);
-
-        entity2.set("name", "Gillian");
-
-        List<DynamicEntity> entities = new ArrayList<>();
-        entities.add(entity);
-        entities.add(entity2);
-
-        StreamingOutput output = (StreamingOutput) resource.update("jpars_auction", "User", TestHttpHeaders.generateHTTPHeader(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON), new TestURIInfo(),
-                TestService.serializeListToStream(entities, context, MediaType.APPLICATION_JSON_TYPE)).getEntity();
-
-        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-        try {
-            output.write(outputStream);
-        } catch (IOException ex) {
-            fail(ex.toString());
-        }
-        InputStream stream = new ByteArrayInputStream(outputStream.toByteArray());
-        try {
-            entities = (List<DynamicEntity>) context.unmarshalEntity("User", MediaType.APPLICATION_JSON_TYPE, stream);
-        } catch (JAXBException e) {
-            fail("Exception unmarsalling: " + e);
-        }
-        assertNotNull("returned data was null", entities);
-        assertTrue("returned data had wrong list size", entities.size() == 2);
-        List<String> values = new ArrayList<>();
-        values.add("James");
-        values.add("Gillian");
-        for (DynamicEntity value : entities) {
-            ((FetchGroupTracker) value)._persistence_setSession(context.getServerSession());
-            assertTrue("Incorrect name returned", value.get("name").equals("James") || value.get("name").equals("Gillian"));
-            values.remove(value.get("name"));
-        }
-        assertTrue("Incorrent set of names.", values.isEmpty());
-
-        clearData();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testUpdatePhoneNumberList() throws Exception {
-        EntityResource resource = new EntityResource();
-        resource.setPersistenceFactory(factory);
-        PersistenceContext context = getPhoneBookPersistenceContext(null);
-
-        DynamicEntity entity = context.newEntity("Person");
-        entity.set("firstName", "Jim");
-        entity.set("lastName", "Jones");
-        entity.set("phoneNumber", "1234567");
-        context.create(null, entity);
-
-        entity.set("firstName", "James");
-
-        DynamicEntity entity2 = context.newEntity("Person");
-        entity2.set("firstName", "Jill");
-        entity2.set("lastName", "Jones");
-        context.create(null, entity2);
-
-        entity2.set("firstName", "Gillian");
-
-        List<DynamicEntity> entities = new ArrayList<>();
-        entities.add(entity);
-        entities.add(entity2);
-
-        StreamingOutput output = (StreamingOutput) resource.update("jpars_phonebook", "Person", TestHttpHeaders.generateHTTPHeader(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON), new TestURIInfo(),
-                serializeListToStream(entities, context, MediaType.APPLICATION_JSON_TYPE)).getEntity();
-
-        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-        try {
-            output.write(outputStream);
-        } catch (IOException ex) {
-            fail(ex.toString());
-        }
-        InputStream stream = new ByteArrayInputStream(outputStream.toByteArray());
-        try {
-            entities = (List<DynamicEntity>) context.unmarshalEntity("Person", MediaType.APPLICATION_JSON_TYPE, stream);
-        } catch (JAXBException e) {
-            fail("Exception unmarsalling: " + e);
-        }
-        assertNotNull("returned data was null", entities);
-        assertNotNull("returned data had null list", entities);
-        assertTrue("returned data had wrong list size", entities.size() == 2);
-        List<String> values = new ArrayList<>();
-        values.add("James");
-        values.add("Gillian");
-        for (DynamicEntity value : entities) {
-            ((FetchGroupTracker) value)._persistence_setSession(context.getServerSession());
-            assertTrue("Incorrect firstName returned", value.get("firstName").equals("James") || value.get("firstName").equals("Gillian"));
-            values.remove(value.get("firstName"));
-        }
-        assertTrue("Incorrent set of names.", values.isEmpty());
-
-        clearData();
-    }
-
-    @Test
-    public void testMarshallBid() throws Exception {
-        PersistenceResource resource = new PersistenceResource();
-        resource.setPersistenceFactory(factory);
-        PersistenceContext context = getAuctionPersistenceContext(null);
-
-        DynamicEntity entity1 = context.newEntity("Auction");
-        entity1.set("name", "Computer");
-
-        DynamicEntity entity2 = context.newEntity("User");
-        entity2.set("name", "Bob");
-        context.create(null, entity2);
-
-        DynamicEntity entity3 = context.newEntity("Bid");
-        entity3.set("amount", 200d);
-        entity3.set("user", entity2);
-        entity3.set("auction", entity1);
-        context.create(null, entity3);
-
-        InputStream stream = serializeToStream(entity3, context, MediaType.APPLICATION_JSON_TYPE);
-
-        try {
-            entity3 = (DynamicEntity) context.unmarshalEntity("Bid", MediaType.APPLICATION_JSON_TYPE, stream);
-        } catch (JAXBException e) {
-            fail("Exception unmarsalling: " + e);
-        }
-        (new FetchGroupManager()).setObjectFetchGroup(entity3, null, null);
-        entity1 = entity3.get("auction");
-
-        assertNotNull("Name of auction is null.", entity1.get("name"));
-        assertTrue("Name of auction is incorrect.", entity1.get("name").equals("Computer"));
-
-    }
-
-    @Test
-    public void testNamedQuery() throws Exception {
-        QueryResource resource = new QueryResource();
-        resource.setPersistenceFactory(factory);
-        PersistenceContext context = getAuctionPersistenceContext(null);
-
-        DynamicEntity entity1 = context.newEntity("Auction");
-        entity1.set("name", "Computer");
-        context.create(null, entity1);
-
-        DynamicEntity entity2 = context.newEntity("Auction");
-        entity2.set("name", "Word Processor");
-        context.create(null, entity2);
-
-        TestHttpHeaders headers = new TestHttpHeaders();
-        headers.getAcceptableMediaTypes().add(MediaType.APPLICATION_JSON_TYPE);
-        List<String> mediaTypes = new ArrayList<>();
-        mediaTypes.add(MediaType.APPLICATION_JSON);
-        TestURIInfo ui = new TestURIInfo();
-        StreamingOutput output = (StreamingOutput) resource.namedQuery("jpars_auction", "Auction.all", headers, ui).getEntity();
-
-        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-        try {
-            output.write(outputStream);
-        } catch (IOException ex) {
-            fail(ex.toString());
-        }
-        String resultString = outputStream.toString();
-
-        assertTrue("Computer was not in results.", resultString.contains("\"name\":\"Computer\""));
-        assertTrue("Word Processor was not in restuls.", resultString.contains("\"name\":\"Word Processor\""));
-        clearData();
-    }
-
-    @Test
-    public void testNamedQuerySingleResult() throws Exception {
-        SingleResultQueryResource resource = new SingleResultQueryResource();
-        resource.setPersistenceFactory(factory);
-        PersistenceContext context = getAuctionPersistenceContext(null);
-
-        DynamicEntity entity1 = context.newEntity("Auction");
-        entity1.set("name", "Computer");
-        context.create(null, entity1);
-
-        DynamicEntity entity2 = context.newEntity("Auction");
-        entity2.set("name", "Word Processor");
-        context.create(null, entity2);
-
-        TestHttpHeaders headers = new TestHttpHeaders();
-        headers.getAcceptableMediaTypes().add(MediaType.APPLICATION_JSON_TYPE);
-        List<String> mediaTypes = new ArrayList<>();
-        mediaTypes.add(MediaType.APPLICATION_JSON);
-        TestURIInfo ui = new TestURIInfo();
-        ui.addMatrixParameter("Auction.forName", "name", "Computer");
-        StreamingOutput output = (StreamingOutput) resource.namedQuerySingleResult("jpars_auction", "Auction.forName", headers, ui).getEntity();
-
-        String resultString = stringifyResults(output);
-
-        assertTrue("Computer was not in results.", resultString.contains("\"name\":\"Computer\""));
-        assertFalse("Word Processor was in results.", resultString.contains("\"name\":\"Word Processor\""));
-
-        clearData();
-    }
-
-    @Test
-    public void testUpdate() throws Exception {
-        EntityResource resource = new EntityResource();
-        resource.setPersistenceFactory(factory);
-        PersistenceContext context = getAuctionPersistenceContext(null);
-
-        DynamicEntity entity1 = context.newEntity("Auction");
-        entity1.set("name", "Computer");
-        context.create(null, entity1);
-        entity1.set("name", "Laptop");
-        entity1.set("description", "Speedy");
-
-        StreamingOutput output = (StreamingOutput) resource.update("jpars_auction", "Auction", TestHttpHeaders.generateHTTPHeader(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON), new TestURIInfo(),
-                serializeToStream(entity1, context, MediaType.APPLICATION_JSON_TYPE)).getEntity();
-
-        String resultString = stringifyResults(output);
-
-        assertTrue("Laptop was not in results.", resultString.contains("\"name\":\"Laptop\""));
-        assertTrue("Laptop was not in results.", resultString.contains("\"description\":\"Speedy\""));
-    }
-
-    @Test
-    public void testUpdateRelationship() throws Exception {
-        EntityResource resource = new EntityResource();
-        resource.setPersistenceFactory(factory);
-        PersistenceContext context = getAuctionPersistenceContext(null);
-
-        DynamicEntity entity1 = context.newEntity("Auction");
-        entity1.set("name", "Computer");
-
-        DynamicEntity entity2 = context.newEntity("User");
-        entity2.set("name", "Bob");
-        context.create(null, entity2);
-
-        DynamicEntity entity3 = context.newEntity("Bid");
-        entity3.set("amount", 200d);
-        entity3.set("user", entity2);
-        entity3.set("auction", entity1);
-        context.create(null, entity3);
-
-        entity3 = (DynamicEntity) context.find(null, "Bid", entity3.get("id"), null);
-
-        entity3.set("amount", 201d);
-        entity1 = entity3.get("auction");
-        entity1.set("name", "Laptop");
-        StreamingOutput output = (StreamingOutput) resource.update("jpars_auction", "Bid", TestHttpHeaders.generateHTTPHeader(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON), new TestURIInfo(),
-                serializeToStream(entity3, context, MediaType.APPLICATION_JSON_TYPE)).getEntity();
-
-        String resultString = stringifyResults(output);
-
-        assertTrue("amount was not in results.", resultString.replace(" ", "").contains("\"amount\":201.0"));
-        String uri = RestUtils.getServerURI() + "jpars_auction/entity/Bid/";
-        assertTrue("link was not in results.", resultString.replace(" ", "").contains(uri));
-        assertTrue("rel was not in results.", resultString.replace(" ", "").contains("\"rel\":\"user\""));
-        assertTrue("Laptop was not a link in results.", !resultString.replace(" ", "").contains("\"name\":\"Laptop\""));
-
-    }
-
-    @Test
-    public void testMetadataQuery() {
-        PersistenceResource resource = new PersistenceResource();
-        resource.setPersistenceFactory(factory);
-        StreamingOutput output = null;
-        try {
-            output = (StreamingOutput) resource.getContexts(TestHttpHeaders.generateHTTPHeader(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON), new TestURIInfo()).getEntity();
-        } catch (JAXBException e) {
-            fail("Exception: " + e);
-        }
-        String result = stringifyResults(output);
-        assertTrue("auction was not in the results", result.contains("jpars_auction"));
-        assertTrue("phonebook was not in the results", result.contains("jpars_phonebook"));
-    }
-
-    @Test
-    public void testTypes() {
-        PersistenceUnitResource resource = new PersistenceUnitResource();
-        resource.setPersistenceFactory(factory);
-        StreamingOutput output = null;
-        output = (StreamingOutput) resource.getTypes("jpars_auction", TestHttpHeaders.generateHTTPHeader(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON), new TestURIInfo()).getEntity();
-        String result = stringifyResults(output);
-
-        assertTrue("Bid was not in the results", result.contains("Bid"));
-        assertTrue("Auction was not in the results", result.contains("Auction"));
-        assertTrue("User was not in the results", result.contains("User"));
-    }
-
-    @Test
-    public void testDelete() throws Exception {
-        EntityResource resource = new EntityResource();
-        resource.setPersistenceFactory(factory);
-        PersistenceContext context = getAuctionPersistenceContext(null);
-
-        DynamicEntity entity1 = context.newEntity("Auction");
-        entity1.set("name", "Computer1");
-        context.create(null, entity1);
-
-        TestURIInfo ui = new TestURIInfo();
-        resource.delete("jpars_auction", "Auction", entity1.get("id").toString(), TestHttpHeaders.generateHTTPHeader(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON), ui);
-
-        entity1 = (DynamicEntity) context.find("Auction", entity1.get("id"));
-
-        assertTrue("Entity was not deleted.", entity1 == null);
-
-    }
-
-    @Test
-    public void testWriteQuery() throws Exception {
-        QueryResource resource = new QueryResource();
-        resource.setPersistenceFactory(factory);
-        PersistenceContext context = getAuctionPersistenceContext(null);
-
-        DynamicEntity entity = context.newEntity("User");
-        entity.set("name", "Bob");
-        context.create(null, entity);
-
-        TestURIInfo ui = new TestURIInfo();
-        ui.addMatrixParameter("User.updateName", "name", "Robert");
-        ui.addMatrixParameter("User.updateName", "id", entity.get("id").toString());
-
-        resource.namedQueryUpdate("jpars_auction", "User.updateName", TestHttpHeaders.generateHTTPHeader(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON), ui);
-
-        entity = (DynamicEntity) context.find("User", entity.get("id"));
-
-        assertTrue("Entity was not updated.", entity.get("name").equals("Robert"));
-    }
-
-    @Test
-    public void testDynamicCompositeKey() throws Exception {
-        EntityResource resource = new EntityResource();
-        resource.setPersistenceFactory(factory);
-        PersistenceContext context = getAuctionPersistenceContext(null);
-        DynamicEntity user = context.newEntity("User");
-        user.set("name", "Wes");
-        DynamicEntity address = context.newEntity("Address");
-        address.set("city", "Ottawa");
-        address.set("postalCode", "a1a1a1");
-        address.set("street", "Main Street");
-        address.set("type", "Home");
-        user.set("address", address);
-        context.create(null, user);
-
-        Response output = resource.find("jpars_auction", "Address", address.get("id") + "+" + address.get("type"), TestHttpHeaders.generateHTTPHeader(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON),
-                new TestURIInfo());
-
-        String result = stringifyResults((StreamingOutputMarshaller) output.getEntity());
-        assertTrue("Type was not in the result", result.contains("Home"));
-        assertTrue("Id was not in the result", result.contains(address.get("id").toString()));
-    }
-
-    @Test
-    public void testStaticCompositeKey() {
-        EntityResource resource = new EntityResource();
-        resource.setPersistenceFactory(factory);
-
-        Response output = resource.find("jpars_auction-static-local", "StaticAddress", StaticModelDatabasePopulator.ADDRESS1_ID + "+" + StaticModelDatabasePopulator.address1().getType(),
-                TestHttpHeaders.generateHTTPHeader(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON), new TestURIInfo());
-
-        String result = stringifyResults((StreamingOutputMarshaller) output.getEntity());
-        assertTrue("home was not in the result", result.contains("home"));
-        assertTrue("user was not in the result", result.contains("\"rel\":\"user\""));
-    }
-
-    @Test
-    public void testStaticRelationships() {
-        EntityResource resource = new EntityResource();
-        resource.setPersistenceFactory(factory);
-
-        Response output = resource.find("jpars_auction-static-local", "StaticBid", String.valueOf(StaticModelDatabasePopulator.BID1_ID),
-                TestHttpHeaders.generateHTTPHeader(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON), new TestURIInfo());
-
-        String result = stringifyResults((StreamingOutputMarshaller) output.getEntity());
-        assertTrue("Auction was not in the result", result.contains("\"rel\":\"auction\""));
-        assertTrue("User link was not in the result", result.contains("\"rel\":\"user\""));
-    }
-
-    @Test
-    public void testUpdateStaticRelationship() throws URISyntaxException {
-        EntityResource resource = new EntityResource();
-        resource.setPersistenceFactory(factory);
-        Map<String, Object> properties = new HashMap<>();
-        properties.put(PersistenceUnitProperties.NON_JTA_DATASOURCE, null);
-        PersistenceContext context = factory.get("jpars_auction-static-local", RestUtils.getServerURI(), null, properties);
-
-        StaticUser initialUser = ((StaticBid) context.find("StaticBid", StaticModelDatabasePopulator.BID1_ID)).getUser();
-        StaticUser user2 = (StaticUser) context.find("StaticUser", StaticModelDatabasePopulator.USER2_ID);
-
-        try {
-            Response output = resource.setOrAddAttribute("jpars_auction-static-local", "StaticBid", String.valueOf(StaticModelDatabasePopulator.BID1_ID), "user",
-                    TestHttpHeaders.generateHTTPHeader(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON), new TestURIInfo(), serializeToStream(user2, context, MediaType.APPLICATION_JSON_TYPE));
-
-            stringifyResults((StreamingOutputMarshaller) output.getEntity());
-            context.getServerSession().getIdentityMapAccessor().initializeAllIdentityMaps();
-
-            StaticBid bid = (StaticBid) context.find("StaticBid", StaticModelDatabasePopulator.BID1_ID);
-
-            assertTrue(bid.getUser().equals(user2));
-        } finally {
-
-            context.updateOrAddAttribute(null, "StaticBid", StaticModelDatabasePopulator.BID1_ID, null, "user", initialUser, null);
-        }
-    }
-
-    @Test
-    public void testStaticReportQuery() throws URISyntaxException {
-        QueryResource resource = new QueryResource();
-        resource.setPersistenceFactory(factory);
-        Map<String, Object> properties = new HashMap<>();
-        properties.put(PersistenceUnitProperties.NON_JTA_DATASOURCE, null);
-        @SuppressWarnings("unused")
-        PersistenceContext context = factory.get("jpars_auction-static-local", RestUtils.getServerURI(), null, properties);
-
-        TestHttpHeaders headers = new TestHttpHeaders();
-        headers.getAcceptableMediaTypes().add(MediaType.APPLICATION_JSON_TYPE);
-        List<String> mediaTypes = new ArrayList<>();
-        mediaTypes.add(MediaType.APPLICATION_JSON);
-        TestURIInfo ui = new TestURIInfo();
-        StreamingOutput output = (StreamingOutput) resource.namedQuery("jpars_auction-static-local", "User.count", headers, ui).getEntity();
-
-        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-        try {
-            output.write(outputStream);
-        } catch (IOException ex) {
-            fail(ex.toString());
-        }
-        String resultString = outputStream.toString();
-
-        assertTrue("Incorrect result", resultString.contains("{\"COUNT\":3}"));
-        clearData();
-    }
-
-    @Test
-    public void testUnmarshallNonExistantLink() throws URISyntaxException {
-        PersistenceResource resource = new PersistenceResource();
-        resource.setPersistenceFactory(factory);
-        PersistenceContext context = getAuctionPersistenceContext(null);
-        LinkAdapter adapter = new LinkAdapter("http://localhost:9090/JPA-RS/", context);
-        DynamicEntity entity1 = null;
-        DynamicEntity entity2 = null;
-        try {
-            entity1 = (DynamicEntity) adapter.unmarshal("http://localhost:9090/JPA-RS/jpars_auction/entity/Auction/1");
-        } catch (Exception e) {
-            fail(e.toString());
-        }
-        assertTrue("id for Auction was missing", entity1.get("id").equals(1));
-        try {
-            entity2 = (DynamicEntity) adapter.unmarshal("http://localhost:9090/JPA-RS/jpars_auction/entity/Address/1+Home");
-        } catch (Exception e) {
-            fail(e.toString());
-        }
-        assertTrue("id for Address was missing", entity2.get("id").equals(1));
-        assertTrue("type for Address was missing", entity2.get("type").equals("Home"));
-    }
-
-    @Test
-    public void testMetadata() {
-        PersistenceResource resource = new PersistenceResource();
-        resource.setPersistenceFactory(factory);
-        try {
-            resource.getContexts(TestHttpHeaders.generateHTTPHeader(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON), new TestURIInfo());
-        } catch (JAXBException e) {
-            fail(e.toString());
-        }
-    }
-
-    @Test
-    public void testMetadataTypes() {
-        PersistenceUnitResource resource = new PersistenceUnitResource();
-        resource.setPersistenceFactory(factory);
-        resource.getTypes("jpars_auction", TestHttpHeaders.generateHTTPHeader(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON), new TestURIInfo());
-        resource.getDescriptorMetadata("jpars_auction", "Bid", TestHttpHeaders.generateHTTPHeader(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON), new TestURIInfo());
-        resource.getQueriesMetadata("jpars_auction", TestHttpHeaders.generateHTTPHeader(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON), new TestURIInfo());
-    }
-
-    @Test(expected = JPARSException.class)
-    public void testMultitenant() throws JAXBException, URISyntaxException {
-        EntityResource resource = new EntityResource();
-        resource.setPersistenceFactory(factory);
-        Map<String, Object> properties = new HashMap<>();
-        properties.put(PersistenceUnitProperties.NON_JTA_DATASOURCE, null);
-        PersistenceContext context = factory.get("jpars_auction-static-local", RestUtils.getServerURI(), null, properties);
-
-        Account account = new Account();
-        account.setAccountNumber("AAA111");
-        TestURIInfo ui = new TestURIInfo();
-        ui.addMatrixParameter("jpars_auction-static-local", "tenant.id", "AcctOwner1");
-
-        StreamingOutput output = (StreamingOutput) resource.update("jpars_auction-static-local", "Account", TestHttpHeaders.generateHTTPHeader(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON), ui,
-                serializeToStream(account, context, MediaType.APPLICATION_JSON_TYPE)).getEntity();
-
-        String result = stringifyResults(output);
-
-        account = (Account) context.unmarshal(Account.class, MediaType.APPLICATION_JSON_TYPE, new ByteArrayInputStream(result.getBytes()));
-
-        output = (StreamingOutput) resource.find("jpars_auction-static-local", "Account", String.valueOf(account.getId()),
-                TestHttpHeaders.generateHTTPHeader(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON), ui).getEntity();
-        result = stringifyResults(output);
-        account = (Account) context.unmarshal(Account.class, MediaType.APPLICATION_JSON_TYPE, new ByteArrayInputStream(result.getBytes()));
-
-        assertTrue("account is null", account != null);
-        TestURIInfo ui2 = new TestURIInfo();
-        ui2.addMatrixParameter("jpars_auction-static-local", "tenant.id", "AcctOwner2");
-
-        output = (StreamingOutput) resource.find("jpars_auction-static-local", "Account", String.valueOf(account.getId()),
-                TestHttpHeaders.generateHTTPHeader(MediaType.APPLICATION_JSON_TYPE, MediaType.APPLICATION_JSON), ui2).getEntity();
-    }
-
-    public static String stringifyResults(StreamingOutput output) {
-        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
-        try {
-            output.write(outputStream);
-        } catch (IOException ex) {
-            fail(ex.toString());
-        }
-        return outputStream.toString();
-    }
-
-    public static InputStream serializeToStream(Object object, PersistenceContext context, MediaType mediaType) {
-        ByteArrayOutputStream os = new ByteArrayOutputStream();
-        try {
-            context.marshallEntity(object, mediaType, os);
-        } catch (Exception e) {
-            e.printStackTrace();
-            fail(e.toString());
-        }
-        return new ByteArrayInputStream(os.toByteArray());
-    }
-
-    public static InputStream serializeListToStream(List<DynamicEntity> object, PersistenceContext context, MediaType mediaType) {
-        ByteArrayOutputStream os = new ByteArrayOutputStream();
-        try {
-            context.marshallEntity(object, mediaType, os);
-        } catch (Exception e) {
-            e.printStackTrace();
-            fail(e.toString());
-        }
-        return new ByteArrayInputStream(os.toByteArray());
-    }
-}
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/noversion/TestServiceNonRelational.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/noversion/TestServiceNonRelational.java
deleted file mode 100644
index 41bfb42..0000000
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/noversion/TestServiceNonRelational.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v. 2.0 which is available at
- * http://www.eclipse.org/legal/epl-2.0,
- * or the Eclipse Distribution License v. 1.0 which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
- */
-
-// Contributors:
-//      gonural - Initial implementation
-package org.eclipse.persistence.jpars.test.service.noversion;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import jakarta.ws.rs.core.MediaType;
-
-import org.eclipse.persistence.config.PersistenceUnitProperties;
-import org.eclipse.persistence.descriptors.FetchGroupManager;
-import org.eclipse.persistence.dynamic.DynamicEntity;
-import org.eclipse.persistence.jpa.rs.DynamicRestClassLoader;
-import org.eclipse.persistence.jpa.rs.PersistenceContext;
-import org.eclipse.persistence.jpa.rs.PersistenceFactoryBase;
-import org.eclipse.persistence.jpa.rs.resources.unversioned.PersistenceResource;
-import org.eclipse.persistence.jpars.test.util.ExamplePropertiesLoader;
-import org.eclipse.persistence.jpars.test.util.RestUtils;
-import org.junit.After;
-import org.junit.Test;
-
-public class TestServiceNonRelational {
-    PersistenceFactoryBase factory = null;
-    PersistenceContext context = null;
-    private static final String PLACE_PU = "jpars_place";
-    private static final String ZIPS_PU = "jpars_zip";
-    private static final String PERSON_PU = "jpars_person";
-
-    @After
-    public void resetContext() {
-        if (factory != null) {
-            factory.close();
-            factory = null;
-        }
-        if (context != null) {
-            context.stop();
-        }
-    }
-
-    @Test
-    public void testMarshallPlace() throws Exception {
-        setContext(PLACE_PU);
-        PersistenceResource resource = new PersistenceResource();
-        resource.setPersistenceFactory(factory);
-        DynamicEntity place = context.newEntity("Place");
-        place.set("state", "Ontario");
-        context.create(null, place);
-        InputStream stream = serializeToStream(place, context, MediaType.APPLICATION_JSON_TYPE);
-        place = (DynamicEntity) context.unmarshalEntity("Place", MediaType.APPLICATION_JSON_TYPE, stream);
-        (new FetchGroupManager()).setObjectFetchGroup(place, null, null);
-        String state = place.get("state");
-        assertNotNull("State of place is null.", state);
-        assertTrue("Ontario".equals(state));
-    }
-
-    @SuppressWarnings("rawtypes")
-    @Test
-    public void testMarshallZips() throws Exception {
-        setContext(ZIPS_PU);
-        PersistenceResource resource = new PersistenceResource();
-        resource.setPersistenceFactory(factory);
-        DynamicEntity zips = context.newEntity("Zips");
-        zips.set("state", "ON");
-        zips.set("city", "Ottawa");
-        zips.set("pop", 6055);
-        zips.set("id", "1234");
-
-        List<Double> loc = new ArrayList<>();
-        loc.add(45.4214);
-        loc.add(75.6919);
-        zips.set("loc", loc);
-
-        context.create(null, zips);
-        InputStream stream = serializeToStream(zips, context, MediaType.APPLICATION_XML_TYPE);
-        zips = (DynamicEntity) context.unmarshalEntity("Zips", MediaType.APPLICATION_XML_TYPE, stream);
-        (new FetchGroupManager()).setObjectFetchGroup(zips, null, null);
-        String state = zips.get("state");
-        assertNotNull("State of place is null.", state);
-        assertTrue("ON".equals(state));
-
-        String id = zips.get("id");
-        assertNotNull("id is null.", id);
-        assertTrue("1234".equals(id));
-        assertTrue("Unexpected number of objects in loc", (((Collection) zips.get("loc")).size() == 2));
-    }
-
-    @Test
-    public void testMarshallPerson() throws Exception {
-        setContext(PERSON_PU);
-        PersistenceResource resource = new PersistenceResource();
-        resource.setPersistenceFactory(factory);
-        DynamicEntity person = context.newEntity("Person");
-        person.set("firstName", "Jim");
-        person.set("lastName", "Smith");
-        person.set("age", 48);
-        person.set("occupation", "Engineer");
-        person.set("currentEmployer", "Oracle");
-
-        List<String> pastEmployers = new ArrayList<>();
-        pastEmployers.add("BEA");
-        pastEmployers.add("IBM");
-        pastEmployers.add("Sun");
-        person.set("pastEmployers", pastEmployers);
-
-        DynamicEntity address1 = context.newEntity("Addresses");
-        address1.set("street1", "123 Sandy Lane");
-        address1.set("city", "San Jose");
-        address1.set("state", "CA");
-        address1.set("zip", 94143);
-
-        DynamicEntity address2 = context.newEntity("Addresses");
-        address2.set("street1", "334 California Street");
-        address2.set("city", "San Francisco");
-        address2.set("state", "CA");
-        address2.set("zip", 94110);
-
-        List<Object> addresses = new ArrayList<>();
-        addresses.add(address1);
-        addresses.add(address2);
-        person.set("addresses", addresses);
-
-        context.create(null, person);
-        InputStream stream = serializeToStream(person, context, MediaType.APPLICATION_XML_TYPE);
-        person = (DynamicEntity) context.unmarshalEntity("Person", MediaType.APPLICATION_XML_TYPE, stream);
-        (new FetchGroupManager()).setObjectFetchGroup(person, null, null);
-        String firstName = person.get("firstName");
-        assertNotNull("firstName is null.", firstName);
-        assertTrue("Jim".equals(firstName));
-    }
-
-    private static InputStream serializeToStream(Object object, PersistenceContext context, MediaType mediaType) throws Exception {
-        ByteArrayOutputStream os = new ByteArrayOutputStream();
-        context.marshallEntity(object, mediaType, os);
-        ByteArrayInputStream stream = new ByteArrayInputStream(os.toByteArray());
-        return stream;
-    }
-
-    private void setContext(String persistenceUnit) throws Exception {
-        context = null;
-        Map<String, Object> properties = new HashMap<>();
-        ExamplePropertiesLoader.loadProperties(properties);
-        factory = new PersistenceFactoryBase();
-        properties.put(PersistenceUnitProperties.NON_JTA_DATASOURCE, null);
-        properties.put(PersistenceUnitProperties.WEAVING, "static");
-        properties.put(PersistenceUnitProperties.DEPLOY_ON_STARTUP, "true");
-        properties.put(PersistenceUnitProperties.CLASSLOADER, new DynamicRestClassLoader(Thread.currentThread().getContextClassLoader()));
-        context = factory.get(persistenceUnit, RestUtils.getServerURI(), null, properties);
-        if (context == null) {
-            throw new Exception("Persistence context could not be created.");
-        }
-    }
-}
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/v1/EmployeeV1Test.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/v1/EmployeeV1Test.java
index ba225f5..21640b2 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/v1/EmployeeV1Test.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/v1/EmployeeV1Test.java
@@ -14,17 +14,17 @@
 //      Dmitry Kornilov - Initial implementation
 package org.eclipse.persistence.jpars.test.service.v1;
 
-import org.eclipse.persistence.jpars.test.service.noversion.EmployeeTest;
+import org.eclipse.persistence.jpars.test.service.EmployeeTestBase;
 import org.junit.BeforeClass;
 
 /**
  * EmployeeTest adapted for JPARS 1.0.
- * {@link EmployeeTest}
+ * {@link EmployeeTestBase}
  *
  * @author Dmitry Kornilov
  * @since EclipseLink 2.6.0
  */
-public class EmployeeV1Test extends EmployeeTest {
+public class EmployeeV1Test extends EmployeeTestBase {
 
     @BeforeClass
     public static void setup() throws Exception {
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/v1/MarshalUnmarshalV1Test.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/v1/MarshalUnmarshalV1Test.java
index 4b3a606..668a052 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/v1/MarshalUnmarshalV1Test.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/v1/MarshalUnmarshalV1Test.java
@@ -14,17 +14,17 @@
 //         Dmitry Kornilov - Initial implementation
 package org.eclipse.persistence.jpars.test.service.v1;
 
-import org.eclipse.persistence.jpars.test.service.noversion.MarshalUnmarshalTest;
+import org.eclipse.persistence.jpars.test.service.MarshalUnmarshalTestBase;
 import org.junit.BeforeClass;
 
 /**
  * MarshalUnmarshalTest adapted for JPARS 1.0.
- * {@link MarshalUnmarshalTest}
+ * {@link MarshalUnmarshalTestBase}
  *
  * @author Dmitry Kornilov
  * @since EclipseLink 2.6.0.
  */
-public class MarshalUnmarshalV1Test extends MarshalUnmarshalTest {
+public class MarshalUnmarshalV1Test extends MarshalUnmarshalTestBase {
 
     @BeforeClass
     public static void setup() throws Exception {
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/v2/EmployeeV2Test.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/v2/EmployeeV2Test.java
index 63e9115..a56e7c0 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/v2/EmployeeV2Test.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/v2/EmployeeV2Test.java
@@ -14,17 +14,17 @@
 //      Dmitry Kornilov - Initial implementation
 package org.eclipse.persistence.jpars.test.service.v2;
 
-import org.eclipse.persistence.jpars.test.service.noversion.EmployeeTest;
+import org.eclipse.persistence.jpars.test.service.EmployeeTestBase;
 import org.junit.BeforeClass;
 
 /**
- * EmployeeTest adapted for JPARS 2.0.
- * {@link EmployeeTest}
+ * EmployeeTestBase adapted for JPARS 2.0.
+ * {@link EmployeeTestBase}
  *
  * @author Dmitry Kornilov
  * @since EclipseLink 2.6.0
  */
-public class EmployeeV2Test extends EmployeeTest {
+public class EmployeeV2Test extends EmployeeTestBase {
 
     @BeforeClass
     public static void setup() throws Exception {
diff --git a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/v2/MarshalUnmarshalV2Test.java b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/v2/MarshalUnmarshalV2Test.java
index 72fee5f..551b8f6 100644
--- a/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/v2/MarshalUnmarshalV2Test.java
+++ b/jpa/org.eclipse.persistence.jpars/src/it/java/org/eclipse/persistence/jpars/test/service/v2/MarshalUnmarshalV2Test.java
@@ -22,6 +22,7 @@
 import org.eclipse.persistence.jpars.test.model.auction.StaticBid;
 import org.eclipse.persistence.jpars.test.model.auction.StaticUser;
 import org.eclipse.persistence.jpars.test.server.RestCallFailedException;
+import org.eclipse.persistence.jpars.test.service.MarshalUnmarshalTestBase;
 import org.eclipse.persistence.jpars.test.util.RestUtils;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
@@ -40,8 +41,8 @@
 import static org.junit.Assert.assertTrue;
 
 /**
- * MarshalUnmarshalTest adapted for JPARS 2.0.
- * {@link org.eclipse.persistence.jpars.test.service.noversion.MarshalUnmarshalTest}
+ * MarshalUnmarshalTestBase adapted for JPARS 2.0.
+ * {@link MarshalUnmarshalTestBase}
  *
  * @author Dmitry Kornilov
  * @since EclipseLink 2.6.0
diff --git a/jpa/org.eclipse.persistence.jpars/src/main/java/org/eclipse/persistence/jpa/rs/service/JPARSApplication.java b/jpa/org.eclipse.persistence.jpars/src/main/java/org/eclipse/persistence/jpa/rs/service/JPARSApplication.java
index 7e15882..a92e6db 100644
--- a/jpa/org.eclipse.persistence.jpars/src/main/java/org/eclipse/persistence/jpa/rs/service/JPARSApplication.java
+++ b/jpa/org.eclipse.persistence.jpars/src/main/java/org/eclipse/persistence/jpa/rs/service/JPARSApplication.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2021 Oracle and/or its affiliates. All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0 which is available at
@@ -46,13 +46,6 @@
     public JPARSApplication() {
         HashSet<Class<?>> c = new HashSet<>();
 
-        // Unversioned Resources (resources that do not have version in the url)
-        c.add(org.eclipse.persistence.jpa.rs.resources.unversioned.PersistenceResource.class);
-        c.add(org.eclipse.persistence.jpa.rs.resources.unversioned.PersistenceUnitResource.class);
-        c.add(org.eclipse.persistence.jpa.rs.resources.unversioned.EntityResource.class);
-        c.add(org.eclipse.persistence.jpa.rs.resources.unversioned.SingleResultQueryResource.class);
-        c.add(org.eclipse.persistence.jpa.rs.resources.unversioned.QueryResource.class);
-
         // Versioned Resources (resources that do have version in the url)
         c.add(org.eclipse.persistence.jpa.rs.resources.PersistenceResource.class);
         c.add(org.eclipse.persistence.jpa.rs.resources.PersistenceUnitResource.class);