SearchResultsResource.java 2.47 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  org.apache.sling.api.resource.AbstractResource
 *  org.apache.sling.api.resource.Resource
 *  org.apache.sling.api.resource.ResourceMetadata
 *  org.apache.sling.api.resource.ResourceResolver
 *  org.apache.sling.api.resource.ValueMap
 *  org.apache.sling.api.wrappers.ValueMapDecorator
 */
package com.adobe.granite.rest.impl;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.sling.api.resource.AbstractResource;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceMetadata;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ValueMap;
import org.apache.sling.api.wrappers.ValueMapDecorator;

public class SearchResultsResource
extends AbstractResource {
    public static final String RESOURCE_TYPE = "granite/rest/core/searchresults";
    private ResourceMetadata metadata = new ResourceMetadata();
    private ValueMap valueMap;
    private final String path;
    private final ResourceResolver resolver;
    private final List<Resource> results;

    public SearchResultsResource(Resource resource, String path, List<Resource> results) {
        this.resolver = resource.getResourceResolver();
        this.path = path;
        this.results = results;
        this.valueMap = new SearchResultsValueMap();
        this.metadata.setResolutionPath(path);
        this.valueMap.put((Object)"name", (Object)resource.getName());
        this.valueMap.putAll((Map)resource.adaptTo(ValueMap.class));
    }

    public String getPath() {
        return this.path;
    }

    public ResourceMetadata getResourceMetadata() {
        return this.metadata;
    }

    public ResourceResolver getResourceResolver() {
        return this.resolver;
    }

    public String getResourceSuperType() {
        return null;
    }

    public String getResourceType() {
        return "granite/rest/core/searchresults";
    }

    public Iterator<Resource> listChildren() {
        return this.results.iterator();
    }

    public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
        if (type == ValueMap.class) {
            return (AdapterType)this.valueMap;
        }
        return (AdapterType)super.adaptTo(type);
    }

    private class SearchResultsValueMap
    extends ValueMapDecorator {
        public SearchResultsValueMap() {
            super(new HashMap());
        }
    }

}