use of org.apache.sling.api.resource.LoginException in project sling by apache.
the class ScriptCacheImpl method activate.
@Activate
protected void activate(ScriptCacheImplConfiguration configuration, BundleContext bundleCtx) {
threadPool = threadPoolManager.get("Script Cache Thread Pool");
bundleContext = bundleCtx;
additionalExtensions = configuration.org_apache_sling_scripting_cache_additional__extensions();
int newMaxCacheSize = configuration.org_apache_sling_scripting_cache_size();
if (newMaxCacheSize != DEFAULT_CACHE_SIZE) {
// change the map only if there's a configuration change regarding the cache's max size
CachingMap<CachedScript> newMap = new CachingMap<>(newMaxCacheSize);
newMap.putAll(internalMap);
internalMap = newMap;
}
ResourceResolver resolver = null;
try {
resolver = rrf.getServiceResourceResolver(null);
searchPaths = resolver.getSearchPath();
} catch (LoginException e) {
LOGGER.error("Unable to retrieve a ResourceResolver for determining the search paths.", e);
} finally {
if (resolver != null) {
resolver.close();
}
}
configureCache();
active = true;
}
use of org.apache.sling.api.resource.LoginException in project sling by apache.
the class ScriptingResourceResolverProviderImpl method getRequestScopedResourceResolver.
@Override
public ResourceResolver getRequestScopedResourceResolver() {
ScriptingResourceResolver threadResolver = perThreadResourceResolver.get();
if (threadResolver == null) {
try {
ResourceResolver delegate = rrf.getServiceResourceResolver(null);
threadResolver = new ScriptingResourceResolver(logStackTraceOnResolverClose, delegate);
perThreadResourceResolver.set(threadResolver);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Set per thread resource resolver for thread {}.", Thread.currentThread().getId());
}
} catch (LoginException e) {
throw new IllegalStateException("Cannot create per thread resource resolver.", e);
}
}
return threadResolver;
}
use of org.apache.sling.api.resource.LoginException in project sling by apache.
the class SlingServletResolverTest method setUp.
@Before
public void setUp() throws Exception {
mockResourceResolver = new MockResourceResolver() {
@Override
public void close() {
// nothing to do;
}
@Override
public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
return null;
}
@Override
public ResourceResolver clone(Map<String, Object> authenticationInfo) throws LoginException {
throw new LoginException("MockResourceResolver can't be cloned - excepted for this test!");
}
@Override
public void refresh() {
// nothing to do
}
};
mockResourceResolver.setSearchPath("/");
final ResourceResolverFactory factory = new ResourceResolverFactory() {
@Override
public ResourceResolver getAdministrativeResourceResolver(Map<String, Object> authenticationInfo) throws LoginException {
return mockResourceResolver;
}
@Override
public ResourceResolver getResourceResolver(Map<String, Object> authenticationInfo) throws LoginException {
return mockResourceResolver;
}
@Override
public ResourceResolver getServiceResourceResolver(Map<String, Object> authenticationInfo) throws LoginException {
return mockResourceResolver;
}
@Override
public ResourceResolver getThreadResourceResolver() {
// TODO Auto-generated method stub
return null;
}
};
servlet = new MockSlingRequestHandlerServlet();
servletResolver = new SlingServletResolver();
Class<?> resolverClass = servletResolver.getClass();
// set resource resolver factory
final Field resolverField = resolverClass.getDeclaredField("resourceResolverFactory");
resolverField.setAccessible(true);
resolverField.set(servletResolver, factory);
MockBundle bundle = new MockBundle(1L);
MockBundleContext bundleContext = new MockBundleContext(bundle) {
@Override
public ServiceRegistration registerService(String s, Object o, Dictionary dictionary) {
return null;
}
@Override
public ServiceRegistration registerService(String[] strings, Object o, Dictionary dictionary) {
return null;
}
};
MockServiceReference serviceReference = new MockServiceReference(bundle);
serviceReference.setProperty(Constants.SERVICE_ID, 1L);
serviceReference.setProperty(ServletResolverConstants.SLING_SERVLET_NAME, SERVLET_NAME);
serviceReference.setProperty(ServletResolverConstants.SLING_SERVLET_PATHS, SERVLET_PATH);
serviceReference.setProperty(ServletResolverConstants.SLING_SERVLET_EXTENSIONS, SERVLET_EXTENSION);
servletResolver.bindServlet(SlingServletResolverTest.this.servlet, serviceReference);
servletResolver.activate(bundleContext, new SlingServletResolver.Config() {
@Override
public Class<? extends Annotation> annotationType() {
return SlingServletResolver.Config.class;
}
@Override
public String servletresolver_servletRoot() {
return "0";
}
@Override
public String[] servletresolver_paths() {
return new String[] { "/" };
}
@Override
public String[] servletresolver_defaultExtensions() {
// TODO Auto-generated method stub
return new String[] { "html" };
}
@Override
public int servletresolver_cacheSize() {
return 200;
}
});
String path = "/" + MockSlingHttpServletRequest.RESOURCE_TYPE + "/" + ResourceUtil.getName(MockSlingHttpServletRequest.RESOURCE_TYPE) + ".servlet";
MockServletResource res = new MockServletResource(mockResourceResolver, servlet, path);
mockResourceResolver.addResource(res);
MockResource parent = new MockResource(mockResourceResolver, ResourceUtil.getParent(res.getPath()), "nt:folder");
mockResourceResolver.addResource(parent);
List<Resource> childRes = new ArrayList<>();
childRes.add(res);
mockResourceResolver.addChildren(parent, childRes);
}
use of org.apache.sling.api.resource.LoginException in project sling by apache.
the class SlyBindingsValuesProvider method ensureFactoriesLoaded.
private void ensureFactoriesLoaded(Bindings bindings) {
JsEnvironment jsEnvironment = null;
ResourceResolver resolver = null;
try {
ScriptEngine scriptEngine = obtainEngine();
if (scriptEngine == null) {
return;
}
jsEnvironment = new JsEnvironment(scriptEngine);
jsEnvironment.initialize();
resolver = rrf.getServiceResourceResolver(null);
factories = new HashMap<>(scriptPaths.size());
for (Map.Entry<String, String> entry : scriptPaths.entrySet()) {
factories.put(entry.getKey(), loadFactory(resolver, jsEnvironment, entry.getValue(), bindings));
}
qScript = loadQScript(resolver);
} catch (LoginException e) {
LOGGER.error("Cannot load HTL Use-API factories.", e);
} finally {
if (jsEnvironment != null) {
jsEnvironment.cleanup();
}
if (resolver != null) {
resolver.close();
}
}
}
use of org.apache.sling.api.resource.LoginException in project sling by apache.
the class TenantProviderImpl method call.
private <T> T call(ResourceResolverTask<T> task) {
ResourceResolver resolver = null;
T result = null;
try {
resolver = factory.getServiceResourceResolver(null);
result = task.call(resolver);
} catch (LoginException le) {
// unexpected, thus ignore
} finally {
if (resolver != null) {
resolver.close();
}
}
return result;
}
Aggregations