2121import org .junit .Assert ;
2222import org .junit .Test ;
2323
24- import com .redhat .qute .commons .ValueResolver ;
2524import com .redhat .qute .commons .datamodel .DataModelParameter ;
2625import com .redhat .qute .commons .datamodel .DataModelProject ;
2726import com .redhat .qute .commons .datamodel .DataModelTemplate ;
2827import com .redhat .qute .commons .datamodel .QuteDataModelProjectParams ;
29- import com .redhat .qute .jdt . QuteSupportForTemplate ;
28+ import com .redhat .qute .commons . datamodel . resolvers . ValueResolverInfo ;
3029import com .redhat .qute .jdt .QuteProjectTest .QuteMavenProjectName ;
30+ import com .redhat .qute .jdt .QuteSupportForTemplate ;
3131
3232/**
3333 * Tests for
@@ -51,7 +51,13 @@ public void quteQuickStart() throws Exception {
5151 // Test templates
5252 testTemplates (project );
5353 // Test value resolvers
54- testValueResolvers (project );
54+
55+ List <ValueResolverInfo > resolvers = project .getValueResolvers ();
56+ Assert .assertNotNull (resolvers );
57+ Assert .assertFalse (resolvers .isEmpty ());
58+
59+ testValueResolversFomTemplateExtension (resolvers );
60+ testValueResolversFomInject (resolvers );
5561 }
5662
5763 private static void testTemplates (DataModelProject <DataModelTemplate <DataModelParameter >> project ) {
@@ -105,7 +111,7 @@ private static void templateField(DataModelProject<DataModelTemplate<DataModelPa
105111 Assert .assertEquals (2 , parameters2 .size ());
106112 assertParameter ("age2" , "int" , true , parameters2 , 0 );
107113 assertParameter ("name2" , "java.lang.String" , true , parameters2 , 1 );
108-
114+
109115 // Template hallo;
110116
111117 DataModelTemplate <DataModelParameter > halloTemplate = project
@@ -178,10 +184,7 @@ private static void checkedTemplate(DataModelProject<DataModelTemplate<DataModel
178184 assertParameter ("name" , "java.lang.String" , false , hello3Parameters , 0 );
179185 }
180186
181- private static void testValueResolvers (DataModelProject <DataModelTemplate <DataModelParameter >> project ) {
182- List <ValueResolver > resolvers = project .getValueResolvers ();
183- Assert .assertNotNull (resolvers );
184- Assert .assertFalse (resolvers .isEmpty ());
187+ private static void testValueResolversFomTemplateExtension (List <ValueResolverInfo > resolvers ) {
185188
186189 // Resolver from Java sources
187190 assertValueResolver (null , "discountedPrice(item : org.acme.qute.Item) : java.math.BigDecimal" ,
@@ -194,7 +197,7 @@ private static void testValueResolvers(DataModelProject<DataModelTemplate<DataMo
194197 "io.quarkus.qute.runtime.extensions.CollectionTemplateExtensions" , resolvers );
195198
196199 // from io.quarkus.qute.runtime.extensions.ConfigTemplateExtensions
197- assertValueResolver ("config" , "config: getConfigProperty(propertyName : java.lang.String) : java.lang.Object" ,
200+ assertValueResolver ("config" , "getConfigProperty(propertyName : java.lang.String) : java.lang.Object" ,
198201 "io.quarkus.qute.runtime.extensions.ConfigTemplateExtensions" , resolvers );
199202
200203 // from io.quarkus.qute.runtime.extensions.MapTemplateExtensions
@@ -212,24 +215,69 @@ private static void testValueResolvers(DataModelProject<DataModelTemplate<DataMo
212215 "fmtInstance(format : java.lang.String, ignoredPropertyName : java.lang.String, args : java.lang.Object[]) : java.lang.String" ,
213216 "io.quarkus.qute.runtime.extensions.StringTemplateExtensions" , resolvers );
214217 assertValueResolver ("str" ,
215- "str: fmt(ignoredPropertyName : java.lang.String, format : java.lang.String, args : java.lang.Object[]) : java.lang.String" ,
218+ "fmt(ignoredPropertyName : java.lang.String, format : java.lang.String, args : java.lang.Object[]) : java.lang.String" ,
216219 "io.quarkus.qute.runtime.extensions.StringTemplateExtensions" , resolvers );
217220
218221 // from io.quarkus.qute.runtime.extensions.TimeTemplateExtensions
219222 assertValueResolver (null ,
220223 "format(temporal : java.time.temporal.TemporalAccessor, pattern : java.lang.String) : java.lang.String" ,
221224 "io.quarkus.qute.runtime.extensions.TimeTemplateExtensions" , resolvers );
222225 assertValueResolver ("time" ,
223- "time: format(dateTimeObject : java.lang.Object, pattern : java.lang.String) : java.lang.String" ,
226+ "format(dateTimeObject : java.lang.Object, pattern : java.lang.String) : java.lang.String" ,
224227 "io.quarkus.qute.runtime.extensions.TimeTemplateExtensions" , resolvers );
225228
226229 }
227230
231+ private void testValueResolversFomInject (List <ValueResolverInfo > resolvers ) {
232+ Assert .assertNotNull (resolvers );
233+ Assert .assertFalse (resolvers .isEmpty ());
234+
235+ // from org.acme.qute.InjectedData source
236+
237+ // @Named
238+ // public class InjectedData;
239+ assertValueResolver ("inject" , "org.acme.qute.InjectedData" , "org.acme.qute.InjectedData" , //
240+ "injectedData" , resolvers );
241+
242+ // @Named
243+ // private String foo;
244+ assertValueResolver ("inject" , "foo : java.lang.String" , "org.acme.qute.InjectedData" , //
245+ "foo" , resolvers );
246+
247+ // @Named("bar")
248+ // private String aBar;
249+ assertValueResolver ("inject" , "aBar : java.lang.String" , "org.acme.qute.InjectedData" , //
250+ "bar" , resolvers );
251+
252+ // @Named("user")
253+ // private String getUser() {...
254+ assertValueResolver ("inject" , "getUser() : java.lang.String" , "org.acme.qute.InjectedData" , //
255+ "user" , resolvers );
256+
257+ // @Named
258+ // private String getSystemUser() {...
259+ assertValueResolver ("inject" , "getSystemUser() : java.lang.String" , "org.acme.qute.InjectedData" , //
260+ "systemUser" , resolvers );
261+
262+ // from io.quarkus.vertx.http.runtime.CurrentRequestProducer
263+ assertValueResolver ("inject" ,
264+ "getCurrentRequest(rc : io.vertx.ext.web.RoutingContext) : io.vertx.core.http.HttpServerRequest" ,
265+ "io.quarkus.vertx.http.runtime.CurrentRequestProducer" , //
266+ "vertxRequest" , resolvers );
267+
268+ }
269+
228270 private static void assertValueResolver (String namespace , String signature , String sourceType ,
229- List <ValueResolver > resolvers ) {
230- Optional <ValueResolver > result = resolvers .stream ().filter (r -> signature .equals (r .getSignature ())).findFirst ();
271+ List <ValueResolverInfo > resolvers ) {
272+ assertValueResolver (namespace , signature , sourceType , null , resolvers );
273+ }
274+
275+ private static void assertValueResolver (String namespace , String signature , String sourceType , String named ,
276+ List <ValueResolverInfo > resolvers ) {
277+ Optional <ValueResolverInfo > result = resolvers .stream ().filter (r -> signature .equals (r .getSignature ()))
278+ .findFirst ();
231279 Assert .assertFalse ("Find '" + signature + "' value resolver." , result .isEmpty ());
232- ValueResolver resolver = result .get ();
280+ ValueResolverInfo resolver = result .get ();
233281 Assert .assertEquals (namespace , resolver .getNamespace ());
234282 Assert .assertEquals (signature , resolver .getSignature ());
235283 Assert .assertEquals (sourceType , resolver .getSourceType ());
0 commit comments