Hi, While investigating some weirdness in custom Sling Model Injectors I came across, that a SlingModel triggerd the invocation of the prepare() method of a totally unrelated Injector, which implements the ValuePreparer interface.
I found that if no injector is given in the annotation [1] all available injectors are taken [2], iterated and the ValuePreparer invoked (if it's implemented by the Injector). That means that in case no specific injector is given, all injectors are tried, which can be costly in terms of time. What I miss (and what I think should be possible) is to reduce this list based on the type information. Because it does not make sense to query an Injector which can only return a String if an injection for the type SlingHttpServletRequest should be done. Would such an optimization be possible? I don't have benchmark data yet how much time is spent in the process of injecting all required fields, but before I invest more time here, I wanted to understand if this is feasible at all. Thanks, Jörg [1] https://github.com/apache/sling-org-apache-sling-models-impl/blob/ed1bd8d8a2fc01e13a10ba1c06122530c4d590b1/src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java#L574 [2] https://github.com/apache/sling-org-apache-sling-models-impl/blob/ed1bd8d8a2fc01e13a10ba1c06122530c4d590b1/src/main/java/org/apache/sling/models/impl/ModelAdapterFactory.java#L570 -- Cheers, Jörg Hoh, https://cqdump.joerghoh.de Twitter: @joerghoh