unloggedio / unlogged-sdk

Unlogged SDK for recording code execution
https://unlogged.io
Apache License 2.0
152 stars 16 forks source link

Getting Fatal IDE exceptions with java 11, new String methods #64

Open kingkong-AI opened 3 weeks ago

kingkong-AI commented 3 weeks ago

Describe the bug

When calling a few methods from postman, with the unlogged sdk, this exception occurs Exception trace:

com.intellij.psi.PsiInvalidElementAccessException: Element class com.intellij.psi.impl.source.tree.java.MethodElement of type METHOD (class com.intellij.psi.impl.java.stubs.JavaStubElementTypes$5)
    at com.intellij.psi.PsiInvalidElementAccessException.createByNode(PsiInvalidElementAccessException.java:81)
    at com.intellij.psi.impl.source.SubstrateRef$2.getContainingFile(SubstrateRef.java:74)
    at com.intellij.extapi.psi.StubBasedPsiElementBase.getContainingFile(StubBasedPsiElementBase.java:234)
    at com.intellij.extapi.psi.StubBasedPsiElementBase.getProject(StubBasedPsiElementBase.java:270)
    at com.intellij.openapi.application.impl.RwLockHolder.runReadAction(RwLockHolder.kt:271)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:845)
    at com.insidious.plugin.adapter.java.JavaMethodAdapter.getProject(JavaMethodAdapter.java:77)
    at com.insidious.plugin.ui.methodscope.MethodDirectInvokeComponent.renderForMethod(MethodDirectInvokeComponent.java:408)
    at com.insidious.plugin.ui.methodscope.MethodDirectInvokeComponent$4.lambda$actionPerformed$0(MethodDirectInvokeComponent.java:298)
    at com.intellij.openapi.application.impl.RwLockHolder$executeOnPooledThread$1.run(RwLockHolder.kt:154)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
    at com.intellij.util.concurrency.ContextCallable.call(ContextCallable.java:32)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at com.intellij.util.concurrency.ContextRunnable.run(ContextRunnable.java:27)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
    at java.base/java.lang.Thread.run(Thread.java:840)

Reproduction steps

Not able to reproduce it again, but this occurs in the java 11 branch of webflux demo. Using the controller:

package org.unlogged.springwebfluxdemo.controller;

import org.springframework.web.bind.annotation.*;
import reactor.core.publisher.Mono;

@RestController
@RequestMapping("/stringmethods")
public class StringMethodsJava11Controller {

    @GetMapping("/isBlank")
    public Mono<Boolean> isBlank(@RequestParam String input) {
        return Mono.just(input.isBlank());
    }

    @GetMapping("/lines")
    public Mono<String> lines(@RequestBody String input) {
        return Mono.just(String.join(",", input.lines().toArray(String[]::new)));
    }

    @GetMapping("/strip")
    public Mono<String> strip(@RequestBody String input) {
        return Mono.just(input.strip());
    }

    @GetMapping("/stripLeading")
    public Mono<String> stripLeading(@RequestBody String input) {
        return Mono.just(input.stripLeading());
    }

    @GetMapping("/stripTrailing")
    public Mono<String> stripTrailing(@RequestBody String input) {
        return Mono.just(input.stripTrailing());
    }

    @GetMapping("/repeat1")
    public Mono<String> repeat1(@RequestBody String input, int count) {
        return Mono.just(input.repeat(count));
    }
}

Expected behavior

No Fatal IDE exceptions should occur

Additional context

No response