[jira] [Updated] (OPENJPA-2690) Update OSGi Import-Package to support Oracle CLOB/BLOB

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[jira] [Updated] (OPENJPA-2690) Update OSGi Import-Package to support Oracle CLOB/BLOB

JIRA jira@apache.org

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

Matt Pavlovich updated OPENJPA-2690:
------------------------------------
    Attachment: OPENJPA-2691.patch

Patch for 2690 and 2691

> Update OSGi Import-Package to support Oracle CLOB/BLOB
> ------------------------------------------------------
>
>                 Key: OPENJPA-2690
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-2690
>             Project: OpenJPA
>          Issue Type: Bug
>    Affects Versions: 2.4.2
>            Reporter: Matt Pavlovich
>         Attachments: OPENJPA-2691.patch
>
>
> When openjpa is running in an OSGi environment (Karaf 2.4.0) and all packages not being imported properly may result in the oracleClob_empty_lob_Method being set to null, a NPE will occur when trying to persist an entity with a NULL CLOB column.
> getEmptyClob() (and probably getEmtpyBlob as well) should detect for oracleClob_empty_lob_Method being set to NULL before attempting to invoke the method, or just return the EMPTY_CLOB constant.
> {noformat}
>  private Clob getEmptyClob()
>         throws SQLException {
>         if (EMPTY_CLOB != null)
>             return EMPTY_CLOB;
>         try {
>             return EMPTY_CLOB = (Clob) oracleClob_empty_lob_Method.invoke(null, new Object[0]);
>         } catch (Exception e) {
>             throw new SQLException(e.getMessage());
>         }
>     }
> {noformat}
> Reference:
> During constructor of OracleDictionary.. this may return null:
> {noformat}
> private Method getMethodByReflection(String className, String methodName, Class<?>... paramTypes) {
>         try {
>             return Class.forName(className,true,
>                     AccessController.doPrivileged(J2DoPrivHelper
>                             .getContextClassLoaderAction())).
>                     getMethod(methodName, paramTypes);
>         }
>         catch (Exception e) {
>             // all fine
>         }
>         return null;
>     }
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
Loading...