Package org.geoserver.rest

Source Code of org.geoserver.rest.IndexRestlet

/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, availible at the root
* application directory.
*/
package org.geoserver.rest;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.restlet.Context;
import org.restlet.Route;
import org.restlet.Router;
import org.restlet.Finder;
import org.restlet.data.Request;
import org.restlet.data.Response;
import org.restlet.data.MediaType;
import org.restlet.resource.Resource;


/**
* The IndexResource class lists the paths available for a Router.
* Specifically, it auto-generates an index page containing all
* non-templated paths relative to the router root.
*
* @author David Winslow <dwinslow@openplans.org>
*/
class IndexRestlet extends Finder{
    private Router myRouter;

    public IndexRestlet(Router r){
        myRouter = r;
    }

    public IndexRestlet(Context con, Router router) {
        super(con);
        myRouter = router;
    }

    public Resource findTarget(Request req, Response resp){
        Resource r = new IndexResource();
        r.init(getContext(), req, resp);
        return r;
    }

    private class IndexResource extends MapResource{

        public Map getSupportedFormats() {
            Map m = new HashMap();

            m.put("html", new FreemarkerFormat("HTMLTemplates/index.ftl", getClass(), MediaType.TEXT_HTML));
            m.put(null, m.get("html"));

            return m;
        }

        public Object getMap() {
            Map m = new HashMap();
            m.put("links", getLinkList());
            m.put("page", getPageDetails());

            return m;
        }

        private List getLinkList() {
            List l = new ArrayList();

            Iterator it = myRouter.getRoutes().iterator();

            while (it.hasNext()) {
                Route r = (Route) it.next();
                String pattern = r.getTemplate().getPattern();

                if (!pattern.contains("{") && (pattern.length() > 1)) {
                    l.add(pattern.substring(1)); // trim leading slash
                }
            }

            return l;
        }
    }
}
TOP

Related Classes of org.geoserver.rest.IndexRestlet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.