@Test public void testGetPublicMethod() throws Exception { // Tests with Collections$UnmodifiableSet final Set<?> set = Collections.unmodifiableSet(new HashSet<>()); final Method isEmptyMethod = ClassUtils.getPublicMethod(set.getClass(), "isEmpty"); assertTrue(Modifier.isPublic(isEmptyMethod.getDeclaringClass().getModifiers())); try { isEmptyMethod.invoke(set); } catch(final java.lang.IllegalAccessException iae) { fail("Should not have thrown IllegalAccessException"); } // Tests with a public Class final Method toStringMethod = ClassUtils.getPublicMethod(Object.class, "toString"); assertEquals(Object.class.getMethod("toString", new Class[0]), toStringMethod); }
/** * Invoke a public method on a class instance * * @param instance * object on which the method should be called * @param methodName * name of the method to be called * @throws SecurityException * if a security violation occurred while looking for the method * @throws IllegalArgumentException * if the method parameters (none given) do not match the * signature of the method * @throws JMeterException * if something went wrong in the invoked method */ public static void invoke(Object instance, String methodName) throws SecurityException, IllegalArgumentException, JMeterException { Method m; try { m = ClassUtils.getPublicMethod(instance.getClass(), methodName, new Class [] {}); m.invoke(instance, (Object [])null); } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { throw new JMeterException(e); } } }
private static void addEnumsTo(final ObjectNode parameterParameter, final AbstractSerializableParameter<?> serializableParameter) { if (serializableParameter.getItems() != null) { final Property items = serializableParameter.getItems(); List<?> enums; try { final Method method = ClassUtils.getPublicMethod(items.getClass(), "getEnum"); enums = (List<?>) method.invoke(items); } catch (@SuppressWarnings("unused") final ReflectiveOperationException ignored) { enums = Collections.emptyList(); } final ObjectNode itemsNode = parameterParameter.putObject("items"); final String itemType = items.getType(); if (StringUtils.isNotBlank(itemType)) { itemsNode.put("type", itemType); } if (enums != null && !enums.isEmpty()) { final ArrayNode enumArray = itemsNode.putArray("enum"); enums.forEach(e -> enumArray.add(String.valueOf(e))); } } else { final List<String> enums = serializableParameter.getEnum(); if (enums != null && !enums.isEmpty()) { final ArrayNode enumArray = parameterParameter.putArray("enum"); enums.forEach(enumArray::add); } } }
private static void addEnumsTo(final Element element, final AbstractSerializableParameter<?> serializableParameter) { if (serializableParameter.getItems() != null) { final Property items = serializableParameter.getItems(); List<?> enums; try { final Method method = ClassUtils.getPublicMethod(items.getClass(), "getEnum"); final List<?> tmp = (List<?>) method.invoke(items); enums = tmp; } catch (@SuppressWarnings("unused") final ReflectiveOperationException ignored) { enums = Collections.emptyList(); } if (enums != null && !enums.isEmpty()) { addEnumerationsTo(element, enums); } } else { final List<String> enums = serializableParameter.getEnum(); if (enums != null && !enums.isEmpty()) { addEnumerationsTo(element, enums); } } }
private static void addEnumsTo(final Element element, final AbstractSerializableParameter<?> serializableParameter) { if (serializableParameter.getItems() != null) { final Property items = serializableParameter.getItems(); List<?> enums; try { final Method method = ClassUtils.getPublicMethod(items.getClass(), "getEnum"); final List<?> tmp = (List<?>) method.invoke(items); enums = tmp; } catch (@SuppressWarnings("unused") final ReflectiveOperationException ignored) { enums = Collections.emptyList(); } if (enums != null && !enums.isEmpty()) { addEnumerationsTo(element, enums); } } else { final List<String> enums = serializableParameter.getEnum(); if (enums != null && !enums.isEmpty()) { addEnumerationsTo(element, enums); } } }
private static void addEnumsTo(final ObjectNode parameterParameter, final AbstractSerializableParameter<?> serializableParameter) { if (serializableParameter.getItems() != null) { final Property items = serializableParameter.getItems(); List<?> enums; try { final Method method = ClassUtils.getPublicMethod(items.getClass(), "getEnum"); enums = (List<?>) method.invoke(items); } catch (@SuppressWarnings("unused") final ReflectiveOperationException ignored) { enums = Collections.emptyList(); } final ObjectNode itemsNode = parameterParameter.putObject("items"); final String itemType = items.getType(); if (StringUtils.isNotBlank(itemType)) { itemsNode.put("type", itemType); } if (enums != null && !enums.isEmpty()) { final ArrayNode enumArray = itemsNode.putArray("enum"); enums.forEach(e -> enumArray.add(String.valueOf(e))); } } else { final List<String> enums = serializableParameter.getEnum(); if (enums != null && !enums.isEmpty()) { final ArrayNode enumArray = parameterParameter.putArray("enum"); enums.forEach(enumArray::add); } } }
private static void addEnumsTo(final Element element, final AbstractSerializableParameter<?> serializableParameter) { if (serializableParameter.getItems() != null) { final Property items = serializableParameter.getItems(); List<?> enums; try { final Method method = ClassUtils.getPublicMethod(items.getClass(), "getEnum"); final List<?> tmp = (List<?>) method.invoke(items); enums = tmp; } catch (@SuppressWarnings("unused") final ReflectiveOperationException ignored) { enums = Collections.emptyList(); } if (enums != null && !enums.isEmpty()) { addEnumerationsTo(element, enums); } } else { final List<String> enums = serializableParameter.getEnum(); if (enums != null && !enums.isEmpty()) { addEnumerationsTo(element, enums); } } }
private static void addEnumsTo(final ObjectNode parameterParameter, final AbstractSerializableParameter<?> serializableParameter) { if (serializableParameter.getItems() != null) { final Property items = serializableParameter.getItems(); List<String> enums; try { final Method method = ClassUtils.getPublicMethod(items.getClass(), "getEnum"); @SuppressWarnings("unchecked") final List<String> tmp = (List<String>) method.invoke(items); enums = tmp; } catch (@SuppressWarnings("unused") final ReflectiveOperationException ignored) { enums = Collections.emptyList(); } final ObjectNode itemsNode = parameterParameter.putObject("items"); final String itemType = items.getType(); if (StringUtils.isNotBlank(itemType)) { itemsNode.put("type", itemType); } if (enums != null && !enums.isEmpty()) { final ArrayNode enumArray = itemsNode.putArray("enum"); enums.forEach(enumArray::add); } } else { final List<String> enums = serializableParameter.getEnum(); if (enums != null && !enums.isEmpty()) { final ArrayNode enumArray = parameterParameter.putArray("enum"); enums.forEach(enumArray::add); } } }
final Method method = ClassUtils.getPublicMethod(items.getClass(), "getEnum"); @SuppressWarnings("unchecked") final List<String> tmp = (List<String>) method.invoke(items);