[ 
https://issues.apache.org/jira/browse/OPENJPA-408?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12535764
 ] 

Kevin Sutter commented on OPENJPA-408:
--------------------------------------

>From ManagedClassSubClasser.prepareUnenhancedClasses():

        if (conf.getRuntimeUnenhancedClassesConstant()
            != RuntimeUnenhancedClasssesModes.SUPPORTED) {
            Collection unenhanced = new ArrayList();
            for (Class cls : classes)
                if (!PersistenceCapable.class.isAssignableFrom(cls))
                    unenhanced.add(cls);
            if (unenhanced.size() > 0) {
                Message msg = _loc.get("runtime-optimization-disabled",
                    unenhanced);
                if (conf.getRuntimeUnenhancedClassesConstant()
                    == RuntimeUnenhancedClasssesModes.WARN)
                    log.warn(msg);
                else
                    throw new UserException(msg);
            }
            return null;
        }

Once we determine that we are not running with 
RuntimeUnenhancedClasses=supported, we drop into this code block.  Once we 
enter this code block, the only exits are the UserException 
(RuntimeUnenhancedClassses=unsupported) and returning null 
(RuntimeUnenhancedClassses=warn).  If we are in the "warn" path, we still get 
the same error message as the "unsupported" path, but we also get the benefit 
of getting an even more meaningful message later because we return null for 
this method invocation.  The base message for both cases is this:

runtime-optimization-disabled: This configuration disallows runtime \
    optimization, but the following listed types were not enhanced at build \
    time or at class load time with a javaagent: "{0}".

The additional message for the "warn" path was mentioned earlier in the Issue:

<openjpa-1.1.0-SNAPSHOT-r420667:573398M nonfatal user error>
org.apache.openjpa.persistence.ArgumentException: Attempt to cast instance 
"..." to
PersistenceCapable failed. Ensure that it has been enhanced.

So, my question is whether there is a difference between "warn" and 
"unsupported".  Neither option will get you to Patrick's runtime enhancement.

Proposal:

Change "unsupported" to log the runtime-optimization-disabled message and 
return null (don't throw the exception).  This will allow the processing to 
continue until we get the "PersistenceCapable failed" message.

Change "warn" to only log the runtime-optimization-disabled message and 
continue processing through Patrick's runtime enhancement.

I think this is more inline with what we wanted to do with these options.  
Comments?

Kevin

> Improve error processing for openjpa.RuntimeUnenhancedClasses property 
> settings
> -------------------------------------------------------------------------------
>
>                 Key: OPENJPA-408
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-408
>             Project: OpenJPA
>          Issue Type: Sub-task
>          Components: kernel
>    Affects Versions: 1.0.0, 1.0.1, 1.1.0
>            Reporter: Kevin Sutter
>            Assignee: Kevin Sutter
>
> From the parent Issue...
> o I think the "unsupported" option for the openjpa.RuntimeUnenhancedClasses 
> property is hiding a more meaningful message. For example, if I run with 
> "warn" option, I get the warning message (runtime-optimization-disabled) and 
> a null is returned. In this scenario, the processing continues and then I get 
> this message:
> <openjpa-1.1.0-SNAPSHOT-r420667:573398M nonfatal user error>
> org.apache.openjpa.persistence.ArgumentException: Attempt to cast instance 
> "..." to
> PersistenceCapable failed. Ensure that it has been enhanced.
> But, if I run with the "unsupported" option, then the only message I get is 
> the (runtime-optimization-disabled) exception. Although it still indicates an 
> error exists, it's not as clear as the "PersistenceCapable" message. Not sure 
> if we should re-think the "warn" vs "unsupported" argument, or maybe just an 
> update to the message text for (runtime-optimization-disabled).

-- 
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