Comments (9)
I looked in the current Platform TCK sources and think that we might only have this problem with jpa tests. Connector + JDBC do have some tests like connManagerClient1.java or callStmtClient1.java but I think those map to the same class names in EE 11 so are unlikely to hit this bug.
from jakartaee-tck-tools.
I just counted the number of generated source files that have this problem and it happens in 1276 jpa tests. So, think I will find the cause and see if I can fix it.
from jakartaee-tck-tools.
Look at updating parseVehiclePackage() to pass in clazz.getName() (e.g. "ee.jakarta.tck.persistence.core.annotations.access.field.Client1") to be used instead of "ee.jakarta.tck.persistence.core.annotations.access.field.Client.class".
from jakartaee-tck-tools.
I'm going to push my hack for this fix to a branch but don't expect that we need to merge it as it needs further refinement.
from jakartaee-tck-tools.
https://github.com/scottmarlow/jakartaee-tck-tools/tree/jakartaee-tck-tools-issues-91 has the hack fix.
from jakartaee-tck-tools.
The problem here is that the EE10 build.xml parse is using the EE10 test class which no longer exists. I don't see why the hack you have would change this. This is really another name mapping problem, but we can't add all these new client classes to the mapping.
It seems like the code is going to have to look for the EE10 version of the input EE11 client class after mapping, and if it ends in a number and does not exist in the EE10 code, look to map the EE10 non-numbered class to the input numbered class. I'll take a look at this tomorrow as its late.
from jakartaee-tck-tools.
The problem here is that the EE10 build.xml parse is using the EE10 test class which no longer exists. I don't see why the hack you have would change this. This is really another name mapping problem, but we can't add all these new client classes to the mapping.
As best as I can tell from looking around at different Client1.java tests in the EE 10 TCK vs EE 11 TCK, the EE 11 jpa tests are the only examples of where we split EE 10 Client.java into multiple (EE 11) Client1.java + Client2.java sources. So the class name mapping issue is limited to the JPA tests.
My hack in diff form is:
diff --git a/tools/tck-rewrite-ant/src/main/java/tck/jakarta/platform/ant/Utils.java b/tools/tck-rewrite-ant/src/main/java/tck/jakarta/platform/ant/Utils.java
index b3f17ba..e81259c 100644
--- a/tools/tck-rewrite-ant/src/main/java/tck/jakarta/platform/ant/Utils.java
+++ b/tools/tck-rewrite-ant/src/main/java/tck/jakarta/platform/ant/Utils.java
@@ -260,6 +260,15 @@ public class Utils {
clazz = dotClass.replace('$', '.');
}
}
+ // JPA hack
+ if(clazz.contains("ee.jakarta.tck.persistence") && clazz.endsWith(".Client.class")) {
+ System.out.println("xxx set a breakpoint here: " + clazz);
+ String testClassName = System.getProperty("testpackage.classname") + ".class";
+ System.out.println("clazz " + clazz + " needs to be updated with " + testClassName);
+ if (!clazz.equals(testClassName)) {
+ clazz = testClassName;
+ }
+ }
classes.add(clazz);
}
}
diff --git a/tools/tck-rewrite-ant/src/main/java/tck/jakarta/platform/ant/api/TestPackageInfoBuilder.java b/tools/tck-rewrite-ant/src/main/java/tck/jakarta/platform/ant/api/TestPackageInfoBuilder.java
index 45524fb..0f15b77 100644
--- a/tools/tck-rewrite-ant/src/main/java/tck/jakarta/platform/ant/api/TestPackageInfoBuilder.java
+++ b/tools/tck-rewrite-ant/src/main/java/tck/jakarta/platform/ant/api/TestPackageInfoBuilder.java
@@ -308,6 +308,7 @@ public class TestPackageInfoBuilder {
private DeploymentMethodInfo parseVehiclePackage(PackageTarget pkgTargetWrapper, Class<?> clazz, VehicleType vehicleType) {
pkgTargetWrapper.execute(vehicleType);
String protocol = getProtocolForVehicle(vehicleType);
+ System.setProperty("testpackage.classname",clazz.getName());
String testClassSimpleName = clazz.getSimpleName();
// Extract the information for the current deployment from the parsed ts.vehicles info
DeploymentInfo deployment = new DeploymentInfo(clazz, pkgTargetWrapper.getDeploymentName(), protocol, vehicleType);
My hack is very specific to the JPA compile failures that I was seeing. Initially, I looked up the call stack in the debugger and didn't see a quick solution so just hacked in the (thread unsafe) system property solution to pass the class name in.
It seems like the code is going to have to look for the EE10 version of the input EE11 client class after mapping, and if it ends in a number and does not exist in the EE10 code, look to map the EE10 non-numbered class to the input numbered class. I'll take a look at this tomorrow as its late.
It did seem like the TestPackageInfoBuilder#parseVehiclePackage did already have the EE 11 test class in variable clazz
which I thought about passing down to the Utils#getClassFilesString(EE11toEE10Mapping mapping, List fileSets, List anonymousClasses) call.
from jakartaee-tck-tools.
Ok, I was looking at the wrong commit then.
See the latest changes I pushed up in #95 that add a mapping from the current test class if it ends with a digit and does not exist in EE10, but the non-digit class does. This is producing jpa code that compiles. If that works for you I can put out a 1.0.0-M3.
Note that the DefaultEEMapping
ctor is now private and the instance needs to be obtained via DefaultEEMapping.getInstance()
. This is because the test class mapping is set for each call to TestPackageInfoBuilder.buildTestClientsEx(...)
. This is definitely not a thread safe class now.
from jakartaee-tck-tools.
I'm not sure but with this change + https://github.com/scottmarlow/jakartaee-tck-tools/tree/jakartaee-tck-tools-pull-95, I am getting the following compile failure (without my hack change that I mentioned earlier):
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client4Stateful3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client3PmservletTest.java:[79,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client2Stateful3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client5Stateless3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client7AppmanagednotxTest.java:[119,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client1PmservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/jpa22/query/stream/ClientPmservletTest.java:[70,59] package com.sun.ts.tests.jpa.jpa22.query.stream.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client7PmservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/jpa22/query/stream/ClientAppmanagednotxTest.java:[110,63] package com.sun.ts.tests.jpa.jpa22.query.stream.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client1AppmanagednotxTest.java:[119,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client6PuservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client5AppmanagedTest.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client3AppmanagedTest.java:[119,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client4AppmanagednotxTest.java:[119,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client5PmservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client6Stateful3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client6AppmanagedTest.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/jpa22/query/stream/ClientAppmanagedTest.java:[110,63] package com.sun.ts.tests.jpa.jpa22.query.stream.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client5AppmanagednotxTest.java:[119,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client2PuservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client5PuservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client2AppmanagedTest.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client3PuservletTest.java:[79,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/jpa22/query/stream/ClientPuservletTest.java:[71,59] package com.sun.ts.tests.jpa.jpa22.query.stream.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client4Stateless3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client4PuservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client2AppmanagednotxTest.java:[119,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client2Stateless3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/jpa22/query/stream/ClientStateful3Test.java:[109,63] package com.sun.ts.tests.jpa.jpa22.query.stream.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client5Stateful3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client2PmservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client4PmservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client3Stateful3Test.java:[119,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client1AppmanagedTest.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client6PmservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client7Stateful3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client3AppmanagednotxTest.java:[118,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client1Stateful3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client7PuservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client3Stateless3Test.java:[119,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client1Stateless3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client1PuservletTest.java:[80,71] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/jpa22/query/stream/ClientStateless3Test.java:[109,63] package com.sun.ts.tests.jpa.jpa22.query.stream.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client7AppmanagedTest.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client7Stateless3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client6Stateless3Test.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client6AppmanagednotxTest.java:[119,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
[ERROR] platformtck/jpa/platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client4AppmanagedTest.java:[120,75] package com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client does not exist
From platform-tests/src/main/java/ee/jakarta/tck/persistence/core/criteriaapi/CriteriaQuery/Client4AppmanagedTest.java:
// Ejb
// the jar with the correct archive name
JavaArchive jpa_core_criteriaapi_CriteriaQuery_appmanaged_vehicle_ejb = ShrinkWrap.create(JavaArchive.class, "jpa_core_criteriaapi_CriteriaQuery_appmanaged_vehicle_ejb.jar");
// The class files
jpa_core_criteriaapi_CriteriaQuery_appmanaged_vehicle_ejb.addClasses(
com.sun.ts.tests.common.vehicle.ejb3share.EJB3ShareBaseBean.class,
com.sun.ts.tests.common.vehicle.VehicleRunnerFactory.class,
com.sun.ts.tests.common.vehicle.ejb3share.UseEntityManager.class,
com.sun.ts.tests.common.vehicle.ejb3share.EJB3ShareIF.class,
com.sun.ts.lib.harness.EETest.Fault.class,
com.sun.ts.tests.common.vehicle.appmanaged.AppManagedVehicleIF.class,
com.sun.ts.tests.common.vehicle.ejb3share.UseEntityManagerFactory.class,
ee.jakarta.tck.persistence.common.PMClientBase.class,
ee.jakarta.tck.persistence.common.schema30.Util.class,
com.sun.ts.tests.common.vehicle.VehicleRunnable.class,
com.sun.ts.tests.common.vehicle.appmanaged.AppManagedVehicleBean.class,
com.sun.ts.tests.common.vehicle.ejb3share.UserTransactionWrapper.class,
ee.jakarta.tck.persistence.core.criteriaapi.CriteriaQuery.Client4.class,
com.sun.ts.lib.harness.EETest.class,
com.sun.ts.lib.harness.ServiceEETest.class,
com.sun.ts.tests.common.vehicle.ejb3share.EntityTransactionWrapper.class,
com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client.ExpectedResult.class,
com.sun.ts.lib.harness.EETest.SetupException.class,
com.sun.ts.tests.common.vehicle.VehicleClient.class,
com.sun.ts.tests.common.vehicle.ejb3share.NoopTransactionWrapper.class
);
It looks like com.sun.ts.tests.jpa.core.criteriaapi.CriteriaQuery.Client.ExpectedResult.class` was for nested Client.ExpectedResult class in the EE 10 Client.java
from jakartaee-tck-tools.
Related Issues (20)
- Integrate the tck-rewrite-ant into the tck-rewrite-tools module HOT 2
- Need to handle non-vehicle deployment methods HOT 2
- Need to update ant lib deployment method generation to handle common archives HOT 1
- Need to update tck-rewrite-ant project for compilation failures in generated TCK test classes HOT 5
- com.sun.ts.tests.ejb30.assembly.librarydirectory.custom.Client is throwing com.sun.ts.tests.ejb30.common.helper.TestFailedException HOT 6
- Getting `The pkg path does not contain a build.xml file` failure with latest changes HOT 6
- Non-javadoc comment associated with method that does not apply to the method HOT 3
- tck-rewrite-fx needs to update Java variable names derived from problematic TCK archive names like `4common-1.0.1.jar` HOT 2
- tck-rewrite-ant (TestPackageInfoBuilder) needs additional mappings for Mappings from EE11 to EE10 package prefixes
- Correct tck-rewrite-ant syntax error in output HOT 6
- Generate JsfClientEjblitejsfTest.java for input JsfClient.java instead of ClientEjblitejsfTest.java which conflicts with input Client.java
- Fix empty test method problem HOT 4
- tck-rewrite should also parse Javadoc testName and check for duplicate method names.
- Need to support more test properties
- The test_classname may need to be the test class
- Some additional code generation problems for the EE JPA tests with nested class references HOT 6
- Missing ear lib that leads to compile error in generated code for unknown jpa_ee_propagation_cm_ext variable HOT 6
- Follow up on `Closed Missing ear lib that leads to compile error in generated code for unknown jpa_ee_propagation_cm_ext variable` HOT 5
- EE11toEE10Mapping#getEE11Name(String ee10Name) needs to handle correcting nested classes in base test class
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jakartaee-tck-tools.