/** * {@inheritDoc} */ @Override public String[] getStringValues(InvocationSequenceData invocSequence, ICachedDataService cachedDataService) { MethodIdent mIdent = cachedDataService.getMethodIdentForId(invocSequence.getMethodIdent()); if ((null != mIdent) && Objects.equals(methodSignature, mIdent.getFullyQualifiedMethodSignature()) && InvocationSequenceDataHelper.hasCapturedParameters(invocSequence)) { for (ParameterContentData parameterContentData : InvocationSequenceDataHelper.getCapturedParameters(invocSequence, false)) { if (parameterIndex == parameterContentData.getSignaturePosition()) { return new String[] { parameterContentData.getContent() }; } } } return new String[0]; }
/** * {@inheritDoc} */ @Override public DetailsTable generate(DefaultData defaultData, RepositoryDefinition repositoryDefinition, Composite parent, FormToolkit toolkit) { Map<ParameterContentType, List<ParameterContentData>> contentMap = getContentTypeMap(((MethodSensorData) defaultData).getParameterContentData()); DetailsTable table = new DetailsTable(parent, toolkit, "Parameter Content Data", 1); for (Map.Entry<ParameterContentType, List<ParameterContentData>> entry : contentMap.entrySet()) { List<String[]> rows = new ArrayList<>(); for (ParameterContentData data : entry.getValue()) { rows.add(new String[] { data.getName(), data.getContent() }); } String heading = StringUtils.capitalize(entry.getKey().toString().toLowerCase()) + ":"; table.addContentTable(heading, getImageForParameterContentType(entry.getKey()), 2, new String[] { "Name", "Value" }, rows); } return table; }
/** * {@inheritDoc} */ @Override public List<ParameterContentData> getParameterContentData(List<PropertyPathStart> propertyAccessorList, Object clazz, Object[] parameters, Object returnValue, boolean exception) { List<ParameterContentData> parameterContentData = new ArrayList<ParameterContentData>(); for (PropertyPathStart start : propertyAccessorList) { try { String content = this.getPropertyContent(start, clazz, parameters, returnValue, exception); ParameterContentData paramContentData = new ParameterContentData(); paramContentData.setContent(content); paramContentData.setContentType(start.getContentType()); paramContentData.setName(start.getName()); paramContentData.setSignaturePosition(start.getSignaturePosition()); parameterContentData.add(paramContentData); } catch (PropertyAccessException e) { if (log.isErrorEnabled()) { log.error("Cannot access the property: " + start + " for class " + clazz + ". Will be removed from the list to prevent further errors! (" + e.getMessage() + ")"); } propertyAccessorList.remove(start); // iterator.remove(); // Unsupported exception. Iterator can't make changes, since // iterating over a snapshot. } } return parameterContentData; }
assertThat(parameterContentList.get(0).getContent(), is("Hans")); assertThat(parameterContentList.get(0).getSignaturePosition(), is(0)); assertThat(parameterContentList.get(0).getName(), is("name"));
contentData.setContent(strConstraint.crop(contentData.getContent()));
/** * {@inheritDoc} */ @Override public long getObjectSize(IObjectSizes objectSizes) { return getObjectSize(objectSizes, true); }
/** * Returns map of the {@link ParameterContentData} divided by the {@link ParameterContentType}s. * * @param parameterContentDatas * Data to divide in groups. * @return Map<ParameterContentType, Collection<ParameterContentData>> */ private Map<ParameterContentType, List<ParameterContentData>> getContentTypeMap(Collection<ParameterContentData> parameterContentDatas) { if (CollectionUtils.isEmpty(parameterContentDatas)) { return Collections.emptyMap(); } Map<ParameterContentType, List<ParameterContentData>> map = new HashMap<>(); for (ParameterContentData data : parameterContentDatas) { List<ParameterContentData> collection = map.get(data.getContentType()); if (null == collection) { collection = new ArrayList<>(1); map.put(data.getContentType(), collection); } collection.add(data); } for (List<ParameterContentData> paramList : map.values()) { Collections.sort(paramList); } return map; }
assertThat(parameterContentList.get(0).getContent(), is("Jurgen")); assertThat(parameterContentList.get(0).getSignaturePosition(), is(0)); assertThat(parameterContentList.get(0).getName(), is("name"));
contentData.setContent(strConstraint.crop(contentData.getContent()));
@Test public void methodIdentNull() { Mockito.doReturn(PARAMETER).when(parameterContentData).getContent(); Mockito.doReturn(INDEX).when(parameterContentData).getSignaturePosition(); Mockito.doReturn(1L).when(invocationSeuence).getMethodIdent(); Mockito.doReturn(null).when(cachedDataService).getMethodIdentForId(anyInt()); String methodSignature = PACKAGE + "." + CLASS + "." + METHOD + "()"; valueSource.setMethodSignature(methodSignature); valueSource.setParameterIndex(INDEX); String[] values = valueSource.getStringValues(invocationSeuence, cachedDataService); assertThat(values, is(notNullValue())); assertThat(values.length, is(equalTo(0))); }
stringBuilder.append(parameterContentData.getName()); stringBuilder.append("': "); stringBuilder.append(TextFormatter.clearLineBreaks(parameterContentData.getContent())); stringBuilder.append('\t'); lineAdded = true;
@Test public void noCapturedParameters() { methodIdent = new MethodIdent(); methodIdent.setPackageName(PACKAGE); methodIdent.setClassName(CLASS); methodIdent.setMethodName(METHOD); Set<ParameterContentData> pContentDataSet = new HashSet<>(); Mockito.doReturn(PARAMETER).when(parameterContentData).getContent(); Mockito.doReturn(INDEX).when(parameterContentData).getSignaturePosition(); Mockito.doReturn(1L).when(invocationSeuence).getMethodIdent(); Mockito.doReturn(pContentDataSet).when(invocationSeuence).getParameterContentData(); Mockito.doReturn(methodIdent).when(cachedDataService).getMethodIdentForId(anyInt()); String methodSignature = PACKAGE + "." + CLASS + "." + METHOD + "()"; valueSource.setMethodSignature(methodSignature); valueSource.setParameterIndex(INDEX); String[] values = valueSource.getStringValues(invocationSeuence, cachedDataService); assertThat(values, is(notNullValue())); assertThat(values.length, is(equalTo(0))); }
styledString.append(parameterContentData.getName()); styledString.append("': "); styledString.append(TextFormatter.clearLineBreaks(parameterContentData.getContent()));
@Test public void wrongMethodIdent() { methodIdent = new MethodIdent(); methodIdent.setPackageName("someWrongPackage"); methodIdent.setClassName(CLASS); methodIdent.setMethodName(METHOD); Set<ParameterContentData> pContentDataSet = new HashSet<>(); pContentDataSet.add(parameterContentData); Mockito.doReturn(PARAMETER).when(parameterContentData).getContent(); Mockito.doReturn(INDEX).when(parameterContentData).getSignaturePosition(); Mockito.doReturn(1L).when(invocationSeuence).getMethodIdent(); Mockito.doReturn(pContentDataSet).when(invocationSeuence).getParameterContentData(); Mockito.doReturn(methodIdent).when(cachedDataService).getMethodIdentForId(anyInt()); String methodSignature = PACKAGE + "." + CLASS + "." + METHOD + "()"; valueSource.setMethodSignature(methodSignature); valueSource.setParameterIndex(INDEX); String[] values = valueSource.getStringValues(invocationSeuence, cachedDataService); assertThat(values, is(notNullValue())); assertThat(values.length, is(equalTo(0))); }
@Test public void wrongCapturedParameters() { methodIdent = new MethodIdent(); methodIdent.setPackageName(PACKAGE); methodIdent.setClassName(CLASS); methodIdent.setMethodName(METHOD); Set<ParameterContentData> pContentDataSet = new HashSet<>(); pContentDataSet.add(parameterContentData); Mockito.doReturn(PARAMETER).when(parameterContentData).getContent(); Mockito.doReturn(INDEX).when(parameterContentData).getSignaturePosition(); Mockito.doReturn(1L).when(invocationSeuence).getMethodIdent(); Mockito.doReturn(pContentDataSet).when(invocationSeuence).getParameterContentData(); Mockito.doReturn(methodIdent).when(cachedDataService).getMethodIdentForId(anyInt()); String methodSignature = PACKAGE + "." + CLASS + "." + METHOD + "()"; valueSource.setMethodSignature(methodSignature); valueSource.setParameterIndex(INDEX + 1); String[] values = valueSource.getStringValues(invocationSeuence, cachedDataService); assertThat(values, is(notNullValue())); assertThat(values.length, is(equalTo(0))); } }
@Test public void retrieveParameter() { methodIdent = new MethodIdent(); methodIdent.setPackageName(PACKAGE); methodIdent.setClassName(CLASS); methodIdent.setMethodName(METHOD); Set<ParameterContentData> pContentDataSet = new HashSet<>(); pContentDataSet.add(parameterContentData); Mockito.doReturn(PARAMETER).when(parameterContentData).getContent(); Mockito.doReturn(INDEX).when(parameterContentData).getSignaturePosition(); Mockito.doReturn(1L).when(invocationSeuence).getMethodIdent(); Mockito.doReturn(pContentDataSet).when(invocationSeuence).getParameterContentData(); Mockito.doReturn(methodIdent).when(cachedDataService).getMethodIdentForId(anyInt()); String methodSignature = PACKAGE + "." + CLASS + "." + METHOD + "()"; valueSource.setMethodSignature(methodSignature); valueSource.setParameterIndex(INDEX); String[] values = valueSource.getStringValues(invocationSeuence, cachedDataService); assertThat(values, hasItemInArray(PARAMETER)); }