この会話は、活動がないためロックされています。新しい投稿を作成してください。
この会話は、活動がないためロックされています。新しい投稿を作成してください。
I am having trouble solving the following issue: I have a ResourceProvider with a root mapped at '/synthetic/config'. In the getResource() method I retrieve the resourceResolver and try to fetch the resource (this resource does exists!) but this never succeeds, I always get a 'null'.
Here is my code (I based mine on https://svn.apache.org/repos/asf/sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/... ):
@Component
@Service(value=ResourceProvider.class)
@Properties({
@Property(name = ResourceProvider.PROPERTY_NAME, value = "Planets"),
@Property(name = ResourceProvider.PROPERTY_ROOT, value= ConfigResourceProvider.SYNTHETIC_CONFIG_ROOT)
})
public class ConfigResourceProvider extends ResourceProvider<ConfigResourceProvider.DoesNotNeedAContext> {
public static final String SYNTHETIC_CONFIG_ROOT = "/synthetic/config";
@Override
public Resource getResource(ResolveContext<DoesNotNeedAContext> resolveContext, String s, ResourceContext resourceContext, Resource resource) {
Resource resource1 = resolveContext.getResourceResolver().getResource("/content/we-retail");
return null;
}
@Override
public Iterator<Resource> listChildren(ResolveContext<DoesNotNeedAContext> resolveContext, Resource resource) {
return null;
}
/** If this provider required a context this would be more elaborate,
* but for this simple example we don't need one.
*/
public static class DoesNotNeedAContext {
};
}
How can I fix this? Thanks in advance!
解決済! 解決策の投稿を見る。
表示
返信
いいね!の合計
IS that the value that appears when you open the Manifest file in the bundle? You need to make sure they match exactly. Also make sure the system user has the correct permissions. These are 2 things that can explain the null.
表示
返信
いいね!の合計
You need to use a System user and Sling Mapping as you do when you get a Session object.
表示
返信
いいね!の合計
smacdonald2008 I have a service user and the 'Apache Sling Service User Mapper Service' has the default user set to this user. Am I missing something?
表示
返信
いいね!の合計
You are missing the code required to create a ResourceResolver. I did not see it in that link.
Map<String, Object> param = new HashMap<String, Object>();
param.put(ResourceResolverFactory.SUBSERVICE, "datawrite");
ResourceResolver resolver = null;
try {
//Create a valid ResourceResolver
resolver = resolverFactory.getServiceResourceResolver(param);
.
See this article -- Scott's Digital Community: Querying Adobe Experience Manager 6 data using the Sling getServiceResour...
表示
返信
いいね!の合計
Hey,
Scott is right. In order to create ResourceResolver, you have to use mentioned code:
Map<String, Object> param = new HashMap<String, Object>();
param.put(ResourceResolverFactory.SUBSERVICE, "datawrite");
ResourceResolver resolver = null;
try {
//Create a valid ResourceResolver
resolver = resolverFactory.getServiceResourceResolver(param);
~Ratna
表示
返信
いいね!の合計
I added the following line in the 'Apache Sling Service User Mapper Service':
aem-company-platform-core-bundle:datawrite=platform-company-service (NOTE: aem-company-platform-core-bundle is the symbolic bundle name)
And I have the following code:
//Inject a Sling ResourceResolverFactory
@Reference
private ResourceResolverFactory resolverFactory;
@Override
public Resource getResource(ResolveContext<DoesNotNeedAContext> resolveContext, String s, ResourceContext resourceContext, Resource resource) {
Map<String, Object> param = new HashMap<String, Object>();
param.put(ResourceResolverFactory.SUBSERVICE, "datawrite");
ResourceResolver resolver = null;
//Create a valid ResourceResolver
try {
resolver = resolverFactory.getServiceResourceResolver(param);
Resource thisResouceIsNull = resolver.getResource("/content/we-retail");
} catch (LoginException e) {
e.printStackTrace();
}
return null;
}
I still get null If I try to get a resource using that resolver:
Is something still missing?
表示
返信
いいね!の合計
Post screen shot of the Sling Mapping Service. Make sure you are specifying the correct Symbolic Bundle name in that service.
表示
返信
いいね!の合計
Mapper service: Apache Sling Service User Mapper Service - Album on Imgur
Bundle that contains the class: Bundle - Album on Imgur
System User: System User - Album on Imgur
表示
返信
いいね!の合計
IS that the value that appears when you open the Manifest file in the bundle? You need to make sure they match exactly. Also make sure the system user has the correct permissions. These are 2 things that can explain the null.
表示
返信
いいね!の合計
I was missing the correct permission, thank you very much both of you!
表示
返信
いいね!の合計
Can you please send me an email at scottm@adobe.com -- thxs!
表示
返信
いいね!の合計
Get the resource Resolver in Sling Model without using SlingHttpServletRequest.
表示
返信
いいね!の合計