/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.jaxygen.apibrowser.pages; import java.io.File; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import org.jaxygen.invoker.ClassRegistry; import org.jaxygen.netservice.html.*; /** * * @author artur */ public class Page implements HTMLElement { private ClassRegistry registry; private final HTML html = new HTML(); private final HTMLBody body = new HTMLBody(); private final HTMLHead head = new HTMLHead(); protected String home; protected String servletContext; protected String browserPath; protected String invokerPath; protected String beansPath; public Page(ServletContext context, HttpServletRequest request, String classRegistry, String beansPath) throws ServletException { final String serletPath = request.getServletPath(); this.browserPath = "APIBrowser"; this.home = "."; this.invokerPath = home + "/invoker"; this.servletContext = ".."; String classRegistryName = classRegistry; if (classRegistryName == null) { classRegistryName = context.getInitParameter("classRegistry"); } openClassRegistry(classRegistryName); this.beansPath = beansPath; if (this.beansPath == null) { this.beansPath = context.getInitParameter("servicePath"); } HTMLLinkCSS css = new HTMLLinkCSS(); css.setHref("css/org/jaxygen/apibrowser/page.css"); head.append(css); css = new HTMLLinkCSS(); css.setHref("css/org/jaxygen/apibrowser/classes-snippest.css"); head.append(css); final HTMLDiv pagetHeader = new HTMLDiv(); final HTMLDiv pagetFooter = new HTMLDiv(); final HTMLHeading pageTitle = new HTMLHeading(HTMLHeading.Level.H2, new HTMLLabel("Jaxygen API Browser")); pagetHeader.setCSSClassName("jaxygen-page-header"); pagetFooter.setCSSClassName("jaxygen-page-footer"); pagetHeader.append(pageTitle); body.append(pagetHeader); html.append(head); html.append(body); html.append(pagetFooter); } public void append(HTMLElement... elements) { body.append(elements); } public String render() { return html.render(); } private void openClassRegistry(String registryClassName) throws ServletException { if (registryClassName != null) { try { Class<ClassRegistry> registryClass = (Class<ClassRegistry>) Thread.currentThread().getContextClassLoader().loadClass(registryClassName); setRegistry(registryClass.newInstance()); } catch (InstantiationException ex) { throw new ServletException("Cann not instantiate class registy " + registryClassName + ". Please check classRegistry property in your web.xml <context-param> section", ex); } catch (IllegalAccessException ex) { throw new ServletException("Class registry provider not found. Please check classRegistry property in your web.xml <context-param> section", ex); } catch (ClassNotFoundException ex) { throw new ServletException("Class registry provider not found. Please check classRegistry property in your web.xml <context-param> section", ex); } } } /** * @return the registry */ public ClassRegistry getRegistry() { return registry; } /** * @param registry the registry to set */ public void setRegistry(ClassRegistry registry) { this.registry = registry; } }