Analyzer::Java::Vaadin
Inherits Analyzer::Java::JavaEngine < Analyzer < FileHelper < Reference < Object
Vaadin Flow navigation targets (@Route / @RouteAlias, prefixed by
@RoutePrefix on the parent layouts) and Hilla browser-callable
services (@BrowserCallable / @Endpoint), which expose every public
method as POST <prefix>/<Service>/<method>.
Constants
FLOW_ROUTER_RE = Regex.union("com.vaadin.flow.router")
HILLA_RE = Detector::Java::Vaadin::HILLA_MARKERS
@Endpoint is also Spring Boot Actuator's; only Hilla's counts.
LIST_SERVICE_METHODS = {"list" => ["pageable", "filter"] of ::String, "get" => ["id"] of ::String, "exists" => ["id"] of ::String, "count" => ["filter"] of ::String}
Hilla's generic services: what a @BrowserCallable subclass inherits.
MAX_LAYOUT_DEPTH = 8
ROUTE_TEMPLATE_RE = /:([A-Za-z_]\w*)(?:\([^)]*\))?[?*]?/
SERVICE_BASES = {"ListRepositoryService" => LIST_SERVICE_METHODS, "ListService" => LIST_SERVICE_METHODS, "CrudRepositoryService" => CRUD_SERVICE_METHODS, "CrudService" => CRUD_SERVICE_METHODS}
TAGGER = "vaadin_analyzer"
VAADIN_GATE = Regex.union("com.vaadin", "dev.hilla")
Class methods
tech_name
SourceInstance methods
analyze
Sourcetech
Instance-side view of the same declaration. The per-file rescues live on
this base class, which has no way to name the analyzer that is running
inside them, so a skipped file could not be attributed to a tech.
Deriving it from analyzer_for keeps the name written exactly once.