Skip to content

Commit 5b638de

Browse files
committed
fix signature extraction when arguments are unobtanaible
1 parent e528653 commit 5b638de

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

src/main/java/org/jdiextractor/launcher/SnapshotCSExtractorLauncer.java renamed to src/main/java/org/jdiextractor/launcher/SnapshotCSExtractorLauncher.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.jdiextractor.launcher;
22

3+
4+
35
import org.jdiextractor.config.CallStackSnapshotExtractorConfig;
46
import org.jdiextractor.core.CallStackSnapshotExtractor;
57

@@ -14,12 +16,12 @@
1416
* object was modified during execution, older frames will show the
1517
* <i>current</i> modified value, not the value at the time of the call.
1618
*/
17-
public class SnapshotCSExtractorLauncer extends AbstractLauncher<CallStackSnapshotExtractorConfig> {
19+
public class SnapshotCSExtractorLauncher extends AbstractLauncher<CallStackSnapshotExtractorConfig> {
1820

1921
private final String configFileDefaultName = "configCSSnapshot.json";
2022

2123
public static void main(String[] args) throws Exception {
22-
SnapshotCSExtractorLauncer launcher = new SnapshotCSExtractorLauncer();
24+
SnapshotCSExtractorLauncher launcher = new SnapshotCSExtractorLauncher();
2325

2426
launcher.mainCore(args, new CallStackSnapshotExtractor());
2527
}

src/main/java/org/jdiextractor/service/serializer/TracePopulator.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ public TracePopulator(boolean valuesIndependents, int maxObjectDepth) {
5959
this.maxObjectDepth = maxObjectDepth;
6060
}
6161

62-
6362
public Trace getTrace() {
6463
return this.trace;
6564
}
@@ -307,17 +306,29 @@ public String signatureParameter(Method method) {
307306
paramString = String.format("%s,%s", paramString, parseTypeName(ite.next()));
308307
}
309308
} catch (AbsentInformationException e) {
310-
// nothing to do
309+
// In case informations are absents, still try to add informations
310+
Iterator<String> ite = method.argumentTypeNames().iterator();
311+
if (ite.hasNext()) {
312+
paramString = parseTypeName(ite.next());
313+
}
314+
while (ite.hasNext()) {
315+
paramString = String.format("%s,%s", paramString, parseTypeName(ite.next()));
316+
}
311317
}
312318
return String.format("%s(%s)", method.name(), paramString);
313319
}
314320

315-
public String parseTypeName(LocalVariable var) {
321+
private String parseTypeName(LocalVariable var) {
316322
JVMSignatureToMooseSignatureConverter parser = JVMSignatureToMooseSignatureConverter.make();
317323
if (var.genericSignature() == null)
318324
return parser.parseTypeSig(var.signature());
319325
else
320326
return parser.parseTypeSig(var.genericSignature());
321327
}
322328

329+
private String parseTypeName(String s) {
330+
int lastDotIndex = s.lastIndexOf('.');
331+
return lastDotIndex == -1 ? s : s.substring(lastDotIndex + 1);
332+
}
333+
323334
}

0 commit comments

Comments
 (0)