diff --git a/packages/java/engine-runtime/src/main/java/com/vaadin/hilla/internal/EndpointGeneratorTaskFactoryImpl.java b/packages/java/engine-runtime/src/main/java/com/vaadin/hilla/internal/EndpointGeneratorTaskFactoryImpl.java index 7bfafa9904..118bb90454 100644 --- a/packages/java/engine-runtime/src/main/java/com/vaadin/hilla/internal/EndpointGeneratorTaskFactoryImpl.java +++ b/packages/java/engine-runtime/src/main/java/com/vaadin/hilla/internal/EndpointGeneratorTaskFactoryImpl.java @@ -15,7 +15,10 @@ */ package com.vaadin.hilla.internal; -import com.vaadin.hilla.engine.EngineConfiguration; +import java.lang.annotation.Annotation; +import java.util.HashSet; +import java.util.Set; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -26,8 +29,13 @@ import com.vaadin.flow.server.frontend.Options; import com.vaadin.flow.server.frontend.TaskGenerateEndpoint; import com.vaadin.flow.server.frontend.TaskGenerateOpenAPI; - +import com.vaadin.flow.server.frontend.scanner.ClassFinder; +import com.vaadin.hilla.BrowserCallable; +import com.vaadin.hilla.Endpoint; +import com.vaadin.hilla.EndpointExposed; +import com.vaadin.hilla.engine.EngineConfiguration; import com.vaadin.hilla.engine.ParserProcessor; +import com.vaadin.hilla.signals.handler.SignalsHandler; /** * An implementation of the EndpointGeneratorTaskFactory, which creates endpoint @@ -75,6 +83,26 @@ public TaskGenerateOpenAPI createTaskGenerateOpenAPI(Options options) { return new TaskGenerateOpenAPIImpl(engineConfiguration); } + @Override + public Set> getBrowserCallableAnnotations() { + Set> classes = new HashSet<>(); + classes.add(BrowserCallable.class); + classes.add(Endpoint.class); + classes.add(EndpointExposed.class); + return classes; + } + + @Override + public boolean hasBrowserCallables(Options options) { + Set> foundClasses = new HashSet<>(); + ClassFinder classFinder = options.getClassFinder(); + getBrowserCallableAnnotations().forEach(annotation -> { + foundClasses.addAll(classFinder.getAnnotatedClasses(annotation)); + }); + foundClasses.remove(SignalsHandler.class); + return !foundClasses.isEmpty(); + } + private static class SkipTaskGenerateEndpoint implements TaskGenerateEndpoint { @Override