Skip to content

Commit de8470f

Browse files
niekraaijmakersNiek Raaijmakersdavidjgonzalez
authored
Add some direction adaptions to aemobject, since people are too lazy to use @via("resourceResolver") (#3324)
Co-authored-by: Niek Raaijmakers <[email protected]> Co-authored-by: david g <[email protected]>
1 parent 6bb72ec commit de8470f

File tree

3 files changed

+109
-27
lines changed

3 files changed

+109
-27
lines changed

bundle/src/main/java/com/adobe/acs/commons/models/injectors/impl/AemObjectInjector.java

Lines changed: 32 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,11 @@
1717
*/
1818
package com.adobe.acs.commons.models.injectors.impl;
1919

20-
import com.adobe.acs.commons.util.impl.ReflectionUtil;
20+
import com.adobe.granite.asset.api.AssetManager;
21+
import com.day.cq.commons.Externalizer;
22+
import com.day.cq.search.QueryBuilder;
2123
import com.day.cq.tagging.TagManager;
24+
import com.day.cq.wcm.api.policies.ContentPolicyManager;
2225
import org.apache.sling.xss.XSSAPI;
2326
import com.day.cq.wcm.api.Page;
2427
import com.day.cq.wcm.api.PageManager;
@@ -36,27 +39,14 @@
3639
import org.apache.sling.models.spi.DisposalCallbackRegistry;
3740
import org.apache.sling.models.spi.Injector;
3841
import org.osgi.framework.Constants;
39-
import com.adobe.acs.commons.i18n.I18nProvider;
4042
import com.adobe.acs.commons.models.injectors.annotation.AemObject;
41-
import com.day.cq.i18n.I18n;
4243

4344
import javax.jcr.Session;
4445
import java.lang.reflect.AnnotatedElement;
4546
import java.lang.reflect.Type;
4647
import java.util.Locale;
4748

48-
import static com.adobe.acs.commons.models.injectors.impl.InjectorUtils.getComponentContext;
49-
import static com.adobe.acs.commons.models.injectors.impl.InjectorUtils.getCurrentDesign;
50-
import static com.adobe.acs.commons.models.injectors.impl.InjectorUtils.getCurrentPage;
51-
import static com.adobe.acs.commons.models.injectors.impl.InjectorUtils.getCurrentStyle;
52-
import static com.adobe.acs.commons.models.injectors.impl.InjectorUtils.getDesigner;
53-
import static com.adobe.acs.commons.models.injectors.impl.InjectorUtils.getPageManager;
54-
import static com.adobe.acs.commons.models.injectors.impl.InjectorUtils.getResource;
55-
import static com.adobe.acs.commons.models.injectors.impl.InjectorUtils.getResourceDesign;
56-
import static com.adobe.acs.commons.models.injectors.impl.InjectorUtils.getResourcePage;
57-
import static com.adobe.acs.commons.models.injectors.impl.InjectorUtils.getResourceResolver;
58-
import static com.adobe.acs.commons.models.injectors.impl.InjectorUtils.getSession;
59-
import static com.adobe.acs.commons.models.injectors.impl.InjectorUtils.getXssApi;
49+
import static com.adobe.acs.commons.models.injectors.impl.InjectorUtils.*;
6050
import static com.adobe.acs.commons.util.impl.ReflectionUtil.getClassOrGenericParam;
6151

6252
/**
@@ -129,8 +119,6 @@ public Object getValue(Object adaptable, String name, Type declaredType, Annotat
129119
return getComponentContext(adaptable);
130120
case PAGE_MANAGER:
131121
return getPageManager(adaptable);
132-
case TAG_MANAGER:
133-
return getTagManager(adaptable);
134122
case CURRENT_PAGE:
135123
return getCurrentPage(adaptable);
136124
case RESOURCE_PAGE:
@@ -149,19 +137,23 @@ public Object getValue(Object adaptable, String name, Type declaredType, Annotat
149137
return resolveXssApi(adaptable);
150138
case LOCALE:
151139
return resolveLocale(adaptable);
140+
case TAG_MANAGER:
141+
return adaptFromResourceResolver(adaptable, TagManager.class);
142+
case ASSET_MANAGER:
143+
return adaptFromResourceResolver(adaptable, AssetManager.class);
144+
case ASSET_MANAGER_OLD:
145+
return adaptFromResourceResolver(adaptable, com.day.cq.dam.api.AssetManager.class);
146+
case QUERY_BUILDER:
147+
return adaptFromResourceResolver(adaptable, QueryBuilder.class);
148+
case CONTENT_POLICY_MANAGER:
149+
return adaptFromResourceResolver(adaptable,ContentPolicyManager.class);
150+
case EXTERNALIZER:
151+
return adaptFromResourceResolver(adaptable, Externalizer.class);
152152
default:
153153
return null;
154154
}
155155
}
156156

157-
private TagManager getTagManager(Object adaptable) {
158-
final ResourceResolver resourceResolver = getResourceResolver(adaptable);
159-
160-
if(resourceResolver != null){
161-
return resourceResolver.adaptTo(TagManager.class);
162-
}
163-
return null;
164-
}
165157

166158
private Object resolveLocale(Object adaptable) {
167159
final Page page = getResourcePage(adaptable);
@@ -204,6 +196,11 @@ private enum ObjectType {
204196
SESSION,
205197
LOCALE,
206198
TAG_MANAGER,
199+
QUERY_BUILDER,
200+
CONTENT_POLICY_MANAGER,
201+
ASSET_MANAGER,
202+
ASSET_MANAGER_OLD,
203+
EXTERNALIZER,
207204
XSS_API;
208205

209206
private static final String RESOURCE_PAGE_STRING = "resourcePage";
@@ -235,6 +232,16 @@ public static ObjectType fromClassAndName(Class<?> classOrGenericParam, String n
235232
return ObjectType.XSS_API;
236233
} else if(classOrGenericParam.isAssignableFrom(Locale.class)){
237234
return ObjectType.LOCALE;
235+
} else if(classOrGenericParam.isAssignableFrom(AssetManager.class)){
236+
return ObjectType.ASSET_MANAGER;
237+
} else if(classOrGenericParam.isAssignableFrom(com.day.cq.dam.api.AssetManager.class)){
238+
return ObjectType.ASSET_MANAGER_OLD;
239+
} else if(classOrGenericParam.isAssignableFrom(QueryBuilder.class)){
240+
return ObjectType.QUERY_BUILDER;
241+
} else if(classOrGenericParam.isAssignableFrom(ContentPolicyManager.class)){
242+
return ObjectType.CONTENT_POLICY_MANAGER;
243+
} else if(classOrGenericParam.isAssignableFrom(Externalizer.class)){
244+
return ObjectType.EXTERNALIZER;
238245
}
239246

240247
return null;

bundle/src/main/java/com/adobe/acs/commons/models/injectors/impl/InjectorUtils.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,9 @@
2929
import org.apache.sling.api.SlingHttpServletRequest;
3030
import org.apache.sling.api.resource.Resource;
3131
import org.apache.sling.api.resource.ResourceResolver;
32-
import org.apache.sling.api.scripting.SlingBindings;
3332
import org.apache.sling.xss.XSSAPI;
3433

3534
import javax.jcr.Session;
36-
import javax.servlet.ServletRequest;
3735

3836
/**
3937
* Common methods for the injectors
@@ -81,6 +79,13 @@ public static ContentPolicy getContentPolicy(Object adaptable){
8179
return null;
8280
}
8381

82+
public static <T> T adaptFromResourceResolver(Object adaptable, Class<T> clazz){
83+
ResourceResolver resourceResolver = getResourceResolver(adaptable);
84+
if(resourceResolver != null){
85+
return resourceResolver.adaptTo(clazz);
86+
}
87+
return null;
88+
}
8489
public static ResourceResolver getResourceResolver(Object adaptable) {
8590
if (adaptable instanceof SlingHttpServletRequest) {
8691
return ((SlingHttpServletRequest) adaptable).getResourceResolver();

bundle/src/test/java/com/adobe/acs/commons/models/injectors/impl/AemObjectInjectorTest.java

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@
2828
import javax.inject.Inject;
2929
import javax.jcr.Session;
3030

31+
import com.adobe.granite.asset.api.AssetManager;
32+
import com.day.cq.commons.Externalizer;
33+
import com.day.cq.search.QueryBuilder;
3134
import com.day.cq.tagging.TagManager;
35+
import com.day.cq.wcm.api.policies.ContentPolicyManager;
3236
import org.apache.sling.api.SlingHttpServletRequest;
3337
import org.apache.sling.api.resource.Resource;
3438
import org.apache.sling.api.resource.ResourceResolver;
@@ -62,6 +66,21 @@ public class AemObjectInjectorTest {
6266
@Mock
6367
private TagManager tagManager;
6468

69+
@Mock
70+
private AssetManager assetManager;
71+
72+
@Mock
73+
private com.day.cq.dam.api.AssetManager oldAssetManager;
74+
75+
@Mock
76+
private QueryBuilder queryBuilder;
77+
78+
@Mock
79+
private ContentPolicyManager contentPolicyManager;
80+
81+
@Mock
82+
private Externalizer externalizer;
83+
6584
@Mock
6685
private Page resourcePage;
6786

@@ -80,6 +99,11 @@ public final void setUp() throws Exception {
8099
context.registerService(PageManager.class,pageManager);
81100
context.registerService(Designer.class,designer);
82101
context.registerService(TagManager.class, tagManager);
102+
context.registerService(AssetManager.class, assetManager);
103+
context.registerService(com.day.cq.dam.api.AssetManager.class, oldAssetManager);
104+
context.registerService(QueryBuilder.class, queryBuilder);
105+
context.registerService(ContentPolicyManager.class, contentPolicyManager);
106+
context.registerService(Externalizer.class, externalizer);
83107
context.addModelsForClasses(TestResourceModel.class);
84108

85109

@@ -102,6 +126,12 @@ public final void testResourceInjection() {
102126
assertNotNull(testResourceModel.getTagManager());
103127
assertNotNull(testResourceModel.getDesigner());
104128
assertNotNull(testResourceModel.getLocale());
129+
assertNotNull(testResourceModel.getAssetManager());
130+
assertNotNull(testResourceModel.getOldAssetManager());
131+
assertNotNull(testResourceModel.getExternalizer());
132+
assertNotNull(testResourceModel.getContentPolicyManager());
133+
assertNotNull(testResourceModel.getQueryBuilder());
134+
105135
assertEquals(Locale.ENGLISH, testResourceModel.getLocale());
106136

107137
// TODO: Tests for the remaining injectable objects
@@ -120,6 +150,11 @@ public final void testSlingHttpServiceRequestInjection() {
120150
assertNotNull(testResourceModel.getTagManager());
121151
assertNotNull(testResourceModel.getDesigner());
122152
assertNotNull(testResourceModel.getLocale());
153+
assertNotNull(testResourceModel.getAssetManager());
154+
assertNotNull(testResourceModel.getOldAssetManager());
155+
assertNotNull(testResourceModel.getExternalizer());
156+
assertNotNull(testResourceModel.getContentPolicyManager());
157+
assertNotNull(testResourceModel.getQueryBuilder());
123158
assertEquals(Locale.ENGLISH, testResourceModel.getLocale());
124159
// TODO: Tests for the remaining injectable objects
125160
}
@@ -163,6 +198,21 @@ public static class TestResourceModel {
163198
@Inject @Optional
164199
private Locale locale;
165200

201+
@Inject @Optional
202+
private AssetManager assetManager;
203+
204+
@Inject @Optional
205+
private com.day.cq.dam.api.AssetManager oldAssetManager;
206+
207+
@Inject @Optional
208+
private Externalizer externalizer;
209+
210+
@Inject @Optional
211+
private QueryBuilder queryBuilder;
212+
213+
@Inject @Optional
214+
private ContentPolicyManager contentPolicyManager;
215+
166216
public Resource getResource() {
167217
return resource;
168218
}
@@ -218,5 +268,25 @@ public XSSAPI getXssApi() {
218268
public Locale getLocale() {
219269
return locale;
220270
}
271+
272+
public AssetManager getAssetManager() {
273+
return assetManager;
274+
}
275+
276+
public com.day.cq.dam.api.AssetManager getOldAssetManager() {
277+
return oldAssetManager;
278+
}
279+
280+
public Externalizer getExternalizer() {
281+
return externalizer;
282+
}
283+
284+
public QueryBuilder getQueryBuilder() {
285+
return queryBuilder;
286+
}
287+
288+
public ContentPolicyManager getContentPolicyManager() {
289+
return contentPolicyManager;
290+
}
221291
}
222292
}

0 commit comments

Comments
 (0)