/** * {@inheritDoc} */ @Override public void secondAfterBody(ICoreService coreService, long methodId, long sensorTypeId, Object object, Object[] parameters, Object result, boolean exception, RegisteredSensorConfig rsc) { // NOCHK:8-params if (threadLast.get().booleanValue()) { threadLast.set(Boolean.FALSE); List<String> parameterTypes = rsc.getParameterTypes(); if (METHOD_VALUE_MAP.containsKey(rsc.getTargetMethodName()) && !parameterTypes.isEmpty() && "int".equals(parameterTypes.get(0))) { // subtract one as the index starts at 1, and not at 0 int index = ((Integer) parameters[0]).intValue() - 1; Object value = METHOD_VALUE_MAP.get(rsc.getTargetMethodName()); statementStorage.addParameter(object, index, value); } else if ((parameterTypes.size() >= 2) && "int".equals(parameterTypes.get(0))) { // subtract one as the index starts at 1, and not at 0 int index = ((Integer) parameters[0]).intValue() - 1; Object value = parameters[1]; statementStorage.addParameter(object, index, value); } else if ("clearParameters".equals(rsc.getTargetMethodName())) { statementStorage.clearParameters(object); } } }
/** * Tests clear parameters method being invoked. */ @SuppressWarnings("unchecked") @Test public void clearParameters() { List<String> parameterTypes = Mockito.mock(List.class); Mockito.when(parameterTypes.size()).thenReturn(0); Mockito.when(rsc.getParameterTypes()).thenReturn(parameterTypes); Mockito.when(rsc.getTargetMethodName()).thenReturn("clearParameters"); Object[] parameters = new Object[0]; Object object = new Object(); preparedStatementParameterHook.beforeBody(0, 0, object, parameters, rsc); preparedStatementParameterHook.firstAfterBody(0, 0, object, parameters, null, false, rsc); preparedStatementParameterHook.secondAfterBody(coreService, 0, 0, object, parameters, null, false, rsc); Mockito.verify(statementStorage, Mockito.times(1)).clearParameters(object); Mockito.verifyNoMoreInteractions(statementStorage); Mockito.verifyZeroInteractions(coreService); }