package com.mwmd.aem.search.example.impl.indexer; import com.mwmd.aem.search.core.annotation.Indexer; import com.mwmd.aem.search.core.indexing.ResourceReference; import com.mwmd.aem.search.core.indexing.AbstractResourceIndexer; import com.mwmd.aem.search.example.IndexFields; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ValueMap; /** * * @author Matthias Wermund */ @Indexer(resourceTypes = {"geometrixx/components/contentpage", "geometrixx/components/homepage", "foundation/components/page", "geometrixx/components/page"}) public class PageIndexer extends AbstractResourceIndexer { @Override public void indexData(Map<String, Object> data, Resource resource, String containerPath) { ValueMap properties = resource.adaptTo(ValueMap.class); data.put(IndexFields.PATH, containerPath + ".html"); data.put(IndexFields.TITLE, properties.get("jcr:title", String.class)); Matcher language = Pattern.compile("\\/content\\/.*?\\/(.*?)/.*").matcher(containerPath); if (language.matches()) { data.put(IndexFields.LANGUAGE, language.group(1)); } String description = properties.get("jcr:description", String.class); if (description != null) { data.put(IndexFields.TEXT, description); } } @Override public List<ResourceReference> getReferences(Resource contentRes) { List<ResourceReference> references = new ArrayList<ResourceReference>(); if (contentRes != null) { Resource parRes = contentRes.getChild("par"); if (parRes != null) { references = new ArrayList<ResourceReference>(); references.add(new ResourceReference(parRes, "foundation/components/parsys")); } } return references; } }