[ 
https://issues.apache.org/jira/browse/IGNITE-1900?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15003919#comment-15003919
 ] 

Denis Magda commented on IGNITE-1900:
-------------------------------------

I've applied your patch on my side and got {{ClassCastException}}. I'm using 
the latest sources from the master branch.

{noformat}
Exception in thread "main" java.lang.ClassCastException: java.util.ArrayList 
cannot be cast to java.util.Set
        at 
org.apache.ignite.internal.IgniteKernal.getUserAttributesFormatted(IgniteKernal.java:571)
        at org.gridgain.fsb.ServerTest.main(ServerTest.java:39)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
{noformat}

Code that I executed {{((IgniteKernal)ignite).getUserAttributesFormatted();}}.

Please follow this steps and then re-submit the pull-request:

1) Fix {{ClassCastException}}. It's absolutely correct to return {{Set}} from 
{{getUserAttributesFormatted()}}. Re-implement IgniteKernal's implementation by 
removing usage of {{F.transform}} function. Just create a set and prefill it 
with data.

2) Add tests that will validate that the functions modified by you return what 
is expected from them. You can add the tests into {{GridMBeanSelfTest}}.

3) When everything is fixed resubmit the pull-request and move this ticket to 
"PATCH_AVAILABLE" state. This will trigger our TeamCity to check your patch 
against all the tests we have in Ignite.
Full info on how to contribute using pull-request is located here: 
https://cwiki.apache.org/confluence/display/IGNITE/How+to+Contribute#HowtoContribute-1.CreateGitHubpull-request

BTW, look though our coding guidelines 
(https://cwiki.apache.org/confluence/display/IGNITE/Coding+Guidelines). Now I 
don't see any issues related to the guidelines, just in order to prevent them 
in the future.

> Ignite JMX problem with Spring Boot
> -----------------------------------
>
>                 Key: IGNITE-1900
>                 URL: https://issues.apache.org/jira/browse/IGNITE-1900
>             Project: Ignite
>          Issue Type: Bug
>          Components: 1.4
>    Affects Versions: ignite-1.4
>            Reporter: wmz7year
>
> I use Ignite with Spring Boot.
> When start application,Spring Boot will register JMX info.
> In IgniteMXBean interface,There is two method getUserAttributesFormatted and 
> getLifecycleBeansFormatted return Collection<String>
> But In JMX DefaultMXBeanMappingFactory.makeParameterizedTypeMapping method 
> will get method return type.
> {noformat}
>  final Type rawType = objType.getRawType();
>         if (rawType instanceof Class<?>) {
>             Class<?> c = (Class<?>) rawType;
>             if (c == List.class || c == Set.class || c == SortedSet.class) {
>                 Type[] actuals = objType.getActualTypeArguments();
>                 assert(actuals.length == 1);
>                 if (c == SortedSet.class)
>                     mustBeComparable(c, actuals[0]);
>                 return makeArrayOrCollectionMapping(objType, actuals[0], 
> factory);
>             } else {
>                 boolean sortedMap = (c == SortedMap.class);
>                 if (c == Map.class || sortedMap) {
>                     Type[] actuals = objType.getActualTypeArguments();
>                     assert(actuals.length == 2);
>                     if (sortedMap)
>                         mustBeComparable(c, actuals[0]);
>                     return makeTabularMapping(objType, sortedMap,
>                             actuals[0], actuals[1], factory);
>                 }
>             }
>         }
> {noformat}
> The Collection<String> will not match any type for this although IgniteKernal 
> return type is Set or List.
> I think IgniteMXBean interface should change Collection to Set and List



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to