Java tutorial
// Copyright (C) 2012 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package com.google.gerrit.httpd.plugins; import com.google.common.collect.Maps; import com.google.gerrit.common.Version; import com.google.gerrit.server.plugins.Plugin; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.Collections; import java.util.Enumeration; import java.util.Set; import java.util.concurrent.ConcurrentMap; import javax.servlet.RequestDispatcher; import javax.servlet.Servlet; import javax.servlet.ServletContext; import javax.servlet.ServletException; class WrappedContext implements ServletContext { private static final Logger log = LoggerFactory.getLogger("plugin"); private final Plugin plugin; private final String contextPath; private final ConcurrentMap<String, Object> attributes; WrappedContext(Plugin plugin, String contextPath) { this.plugin = plugin; this.contextPath = contextPath; this.attributes = Maps.newConcurrentMap(); } @Override public String getContextPath() { return contextPath; } @Override public String getInitParameter(String name) { return null; } @SuppressWarnings("rawtypes") @Override public Enumeration getInitParameterNames() { return Collections.enumeration(Collections.emptyList()); } @Override public ServletContext getContext(String name) { return null; } @Override public RequestDispatcher getNamedDispatcher(String name) { return null; } @Override public RequestDispatcher getRequestDispatcher(String name) { return null; } @Override public URL getResource(String name) throws MalformedURLException { return null; } @Override public InputStream getResourceAsStream(String name) { return null; } @SuppressWarnings("rawtypes") @Override public Set getResourcePaths(String name) { return null; } @Override public Servlet getServlet(String name) throws ServletException { return null; } @Override public String getRealPath(String name) { return null; } @Override public String getServletContextName() { return plugin.getName(); } @SuppressWarnings("rawtypes") @Override public Enumeration getServletNames() { return Collections.enumeration(Collections.emptyList()); } @SuppressWarnings("rawtypes") @Override public Enumeration getServlets() { return Collections.enumeration(Collections.emptyList()); } @Override public void log(Exception reason, String msg) { log(msg, reason); } @Override public void log(String msg) { log(msg, null); } @Override public void log(String msg, Throwable reason) { log.warn(String.format("[plugin %s] %s", plugin.getName(), msg), reason); } @Override public Object getAttribute(String name) { return attributes.get(name); } @Override public Enumeration<String> getAttributeNames() { return Collections.enumeration(attributes.keySet()); } @Override public void setAttribute(String name, Object value) { attributes.put(name, value); } @Override public void removeAttribute(String name) { attributes.remove(name); } @Override public String getMimeType(String file) { return null; } @Override public int getMajorVersion() { return 2; } @Override public int getMinorVersion() { return 5; } @Override public String getServerInfo() { String v = Version.getVersion(); return "Gerrit Code Review/" + (v != null ? v : "dev"); } }