[
https://issues.apache.org/jira/browse/OPENJPA-2690?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Matt Pavlovich updated OPENJPA-2690:
------------------------------------
Description:
When openjpa is running in an OSGi environment 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 OracleDictionry.. 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}
was:
When openjpa is running in an OSGi environment and some packages 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 OracleDictionry.. 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}
> NPE in OracleDictionary when empty_lob_Method is not able to be specified
> -------------------------------------------------------------------------
>
> 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 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 OracleDictionry.. 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)