Last active
December 21, 2015 22:29
-
-
Save cpilsworth/6375518 to your computer and use it in GitHub Desktop.
Getting a page from a OSGI component both inside and outside the scope of a sling request
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package uk.co.diffa; | |
import org.apache.felix.scr.annotations.Activate; | |
import org.apache.felix.scr.annotations.Component; | |
import org.apache.felix.scr.annotations.Reference; | |
import org.apache.felix.scr.annotations.Service; | |
import org.apache.sling.api.resource.LoginException; | |
import org.apache.sling.api.resource.Resource; | |
import org.apache.sling.api.resource.ResourceResolver; | |
import org.apache.sling.api.resource.ResourceResolverFactory; | |
import com.day.cq.wcm.api.Page; | |
@Component(immediate = true) | |
@Service(GetMeAPage.class) | |
public class GetMeAPage { | |
@Reference | |
private ResourceResolverFactory resourceResolverFactory; | |
private static final String pageUri = "/content/geometrixx/en.html"; | |
/** | |
* This method is executed at component startup rather than in the context of a request. | |
*/ | |
@Activate | |
public void getSpecificPage() { | |
ResourceResolver resourceResolver = null; | |
try { | |
resourceResolver = resourceResolverFactory.getAdministrativeResourceResolver(null); | |
Page page = getSpecificPage(resourceResolver); | |
System.out.println(page.getTitle()); | |
} catch (LoginException e) { | |
e.printStackTrace(); | |
} finally { | |
if (resourceResolver != null) { | |
resourceResolver.close(); | |
} | |
} | |
} | |
/** | |
* This method does not use the ResourceResolverFactory, but uses a user supplied resolver | |
*/ | |
public Page getSpecificPage(ResourceResolver resourceResolver) { | |
Resource resource = resourceResolver.resolve(pageUri); | |
return resource.adaptTo(Page.class); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment