You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Matt Pavlovich (JIRA)" <ji...@apache.org> on 2017/03/10 18:11:04 UTC

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

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

Matt Pavlovich updated OPENJPA-2690:
------------------------------------
    Summary: Update OSGi Import-Package to support Oracle CLOB/BLOB  (was: NPE in OpenJPA's OracleDictionary when empty_lob_Method is not able to be specified in OSGi)

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