[ 
https://issues.apache.org/jira/browse/OPENJPA-97?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Dick closed OPENJPA-97.
-------------------------------

    Resolution: Cannot Reproduce
      Assignee: Michael Dick

I tried a simple jUnit testcase (Eclipse + Sun JDK5 + OpenJPA 1.0.2) and did 
not see the error message. Please reopen the issue if it can be reproduced. 

> Runtime Enhancement without <class> entries in persistence.xml fails while 
> attempting to process non-Entity classes
> -------------------------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-97
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-97
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: jpa
>            Reporter: Kevin Sutter
>            Assignee: Michael Dick
>            Priority: Minor
>
> When using dynamic Runtime Enhancement (-javaagent) and not having the 
> explicit set of classes defined in persistence.xml, the processing gets sick 
> once in a while.  It starts off fine with the appropriate warning...
> 160  my persistence unit  INFO   [main] openjpa.Enhance - You have enabled 
> runtime enhancement, but have not specified the set of persistent classes.  
> OpenJPA must look for metadata for every loaded class, which might increase 
> class load times significantly.
> It then starts parsing (and processing) every package and class that gets 
> loaded...
> 210  my persistence unit  INFO   [main] openjpa.MetaData - Parsing class 
> "org.eclipse.jdt.internal.junit.runner.RemoteTestRunner".
> 210  my persistence unit  INFO   [main] openjpa.MetaData - Parsing package 
> "org.eclipse.jdt.internal.junit.runner.RemoteTestRunner".
> 230  my persistence unit  INFO   [main] openjpa.MetaData - Parsing class 
> "org.eclipse.jdt.internal.junit.runner.MessageSender".
> 230  my persistence unit  INFO   [main] openjpa.MetaData - Parsing class 
> "org.eclipse.jdt.internal.junit.runner.IVisitsTestTrees".
> 230  my persistence unit  INFO   [main] openjpa.MetaData - Parsing class 
> "org.eclipse.jdt.internal.junit.runner.IListensToTestExecutions".
> :
> :
> But, it also hits "warnings" similar to the following:
> 530  my persistence unit  WARN   [main] openjpa.Enhance - An exception was 
> thrown while attempting to perform class file transformation on "$Proxy3":
> <0|false|0.0.0> org.apache.openjpa.util.GeneralException: $Proxy3
>       at 
> org.apache.openjpa.enhance.PCClassFileTransformer.needsEnhance(PCClassFileTransformer.java:179)
>       at 
> org.apache.openjpa.enhance.PCClassFileTransformer.transform(PCClassFileTransformer.java:117)
>       at 
> sun.instrument.TransformerManager.transform(TransformerManager.java:141)
>       at 
> sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:174)
>       at java.lang.reflect.Proxy.defineClass0(Native Method)
>       at java.lang.reflect.Proxy.getProxyClass(Proxy.java:515)
>       at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:592)
>       at 
> com.ibm.oti.reflect.AnnotationHelper.getAnnotation(AnnotationHelper.java:34)
>       at 
> com.ibm.oti.reflect.AnnotationHelper.getDeclaredAnnotations(AnnotationHelper.java:50)
>       at com.ibm.oti.reflect.Method.getDeclaredAnnotations(Method.java:31)
>       at java.lang.reflect.Method.getDeclaredAnnotations(Method.java:704)
>       at 
> java.lang.reflect.AccessibleObject.getAnnotations(AccessibleObject.java:191)
>       at com.ibm.oti.reflect.Method.getAnnotation(Method.java:20)
>       at java.lang.reflect.Method.getAnnotation(Method.java:693)
>       at 
> org.junit.internal.runners.TestIntrospector.getTestMethods(TestIntrospector.java:28)
>       at 
> org.junit.internal.runners.TestClassMethodsRunner.<init>(TestClassMethodsRunner.java:27)
>       at 
> org.junit.internal.runners.TestClassRunner.<init>(TestClassRunner.java:20)
>       at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
>       at 
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:67)
>       at 
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
>       at java.lang.reflect.Constructor.newInstance(Constructor.java:521)
>       at 
> org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26)
>       at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:26)
>       at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:24)
>       at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:34)
>       at 
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:24)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:445)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
>       at 
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
> Caused by: java.lang.ClassNotFoundException: $Proxy3
>       at java.lang.Class.forName(Class.java:160)
>       at 
> org.apache.openjpa.enhance.PCClassFileTransformer.needsEnhance(PCClassFileTransformer.java:171)
>       ... 29 more
> There are similar ClassNotFoundExceptions for the following classes that were 
> loaded (in my test scenario):
> sun.reflect.GeneratedMethodAccessor1
> sun.reflect.GeneratedConstructorAccessor1
> sun.reflect.GeneratedConstructorAccessor2
> sun.reflect.GeneratedConstructorAccessor3
> sun.reflect.GeneratedConstructorAccessor4
> $Proxy7
> $Proxy8
> $Proxy9
> Since these are obviously not Entities, maybe we should just eat these 
> exceptions.  That is, assume that any errors that happen during the parsing 
> phase just indicate that they are not Entities and continue on.  Currently, 
> the "warning" message and call stack look a bit more drastic than what they 
> really are.
> BTW, the rest of the runtime enhancement worked just fine.  It parsed several 
> hundred class files as they were being loaded.  It found the one class file 
> that I was interested in and successfully enhanced it.  So, the processing 
> worked okay.  It's just kind of messy.
> Kevin

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to