openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kevin Sutter (JIRA)" <j...@apache.org>
Subject [jira] Commented: (OPENJPA-408) Improve error processing for openjpa.RuntimeUnenhancedClasses property settings
Date Wed, 17 Oct 2007 22:14:50 GMT

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


Mime
View raw message