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