package com.headwire.aemsolrsearch.geometrixxmedia.model; import com.headwire.aemsolrsearch.geometrixxmedia.model.exceptions.SlingModelsException; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceUtil; import org.apache.sling.models.annotations.Model; import org.apache.solr.common.SolrInputDocument; import org.json.simple.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.annotation.PostConstruct; import javax.inject.Inject; import javax.inject.Named; /** * Sling model representing a Geometrixx Media Page. * */ @Model(adaptables = Resource.class, adapters = {GeometrixxMediaContentType.class, GeometrixxMediaPage.class}) public class GeometrixxMediaPage implements GeometrixxMediaContentType{ private static final Logger LOG = LoggerFactory.getLogger(GeometrixxMediaPage.class); private GeometrixxMediaPageContent pageContent; @Inject @Named("jcr:content") private Resource jcrResource; @PostConstruct public void init() throws SlingModelsException { pageContent = jcrResource.adaptTo(GeometrixxMediaPageContent.class); } public GeometrixxMediaPage(Resource resource) throws SlingModelsException { if (null == resource) { LOG.debug("resource is null"); throw new SlingModelsException("Resource is null"); } if (ResourceUtil.isNonExistingResource(resource)) { LOG.warn("Can't adapt non existent resource: '{}'", resource.getPath()); throw new SlingModelsException( "Can't adapt non existent resource." + resource.getPath()); } } @Override public String toString() { final StringBuilder sb = new StringBuilder("GeometrixxMediaPage{"); if(null != pageContent){ sb.append(pageContent.toString()); } sb.append('}'); return sb.toString(); } @Override public JSONObject getJson() { return pageContent != null ? pageContent.getJson() : new JSONObject(); } @Override public SolrInputDocument getSolrDoc() { return pageContent != null ? pageContent.getSolrDoc() : null; } }