You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Denis Magda (JIRA)" <ji...@apache.org> on 2016/04/05 10:28:25 UTC
[jira] [Created] (IGNITE-2947) BinaryContext doesn't honor custom
loader set through IgniteConfiguration.classLoader
Denis Magda created IGNITE-2947:
-----------------------------------
Summary: BinaryContext doesn't honor custom loader set through IgniteConfiguration.classLoader
Key: IGNITE-2947
URL: https://issues.apache.org/jira/browse/IGNITE-2947
Project: Ignite
Issue Type: Bug
Components: binary
Affects Versions: 1.5.0.final
Reporter: Denis Magda
Priority: Critical
Fix For: 1.6
If to register a specific object with {{BinaryTypeConfiguration}} setting its {{typeName}} and load Class of objects of this type using a custom class loader passed to {{IgniteConfiguration.classLoader}} then at {{BinaryContext}} initialization time the context will not properly register this {{BinaryTypeConfiguration}} because it doesn't suppose that the Class of the type can be loaded by the custom class loader
In the code below {{Class.forName}} has to use {{IgniteConfiguration.classLoader}} if the latest is set and fall back to {{dfltLdr}} otherwise.
{noformat}
@SuppressWarnings("ErrorNotRethrown")
public void registerUserType(String clsName,
BinaryInternalMapper mapper,
@Nullable BinarySerializer serializer,
@Nullable String affKeyFieldName,
boolean isEnum)
throws BinaryObjectException {
assert mapper != null;
Class<?> cls = null;
try {
cls = Class.forName(clsName);
}
catch (ClassNotFoundException | NoClassDefFoundError ignored) {
// No-op.
}
{noformat}
Also there are several conditions in {{BinaryContext}} that are done for {{dfltLdr}}. The same conditions have to be executed for {{IgniteConfiguration.classLoader}}.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)