All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jboss.resteasy.plugins.server.servlet.ListenerBootstrap Maven / Gradle / Ivy

There is a newer version: 1.1.1
Show newest version
package org.jboss.resteasy.plugins.server.servlet;

import org.jboss.resteasy.spi.ResteasyConfiguration;
import org.jboss.resteasy.spi.ResteasyDeployment;

import javax.servlet.ServletContext;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

/**
 * @author Bill Burke
 * @version $Revision: 1 $
 */
public class ListenerBootstrap extends ConfigurationBootstrap
{
   protected ServletContext servletContext;

   public ListenerBootstrap(ServletContext servletContext)
   {
      this.servletContext = servletContext;
   }

   private static Object RD_LOCK = new Object();

   @Override
   public ResteasyDeployment createDeployment()
   {
      ResteasyDeployment deployment = (ResteasyDeployment) servletContext.getAttribute(ResteasyDeployment.class.getName());
      if (deployment == null) deployment = super.createDeployment();
      deployment.getDefaultContextObjects().put(ServletContext.class, servletContext);
      deployment.getDefaultContextObjects().put(ResteasyConfiguration.class, this);
      String servletMappingPrefix = getParameter(ResteasyContextParameters.RESTEASY_SERVLET_MAPPING_PREFIX);
      if (servletMappingPrefix == null) servletMappingPrefix = "";
      servletMappingPrefix = servletMappingPrefix.trim();

      synchronized (RD_LOCK)
      {
         Map deployments = (Map) servletContext.getAttribute(ResteasyContextParameters.RESTEASY_DEPLOYMENTS);
         if (deployments == null)
         {
            deployments = new ConcurrentHashMap();
            servletContext.setAttribute("resteasy.deployments", deployments);
         }
         deployments.put(servletMappingPrefix, deployment);
      }
      return deployment;
   }

   public static URL[] findWebInfLibClasspaths(ServletContext servletContext)
   {
      ArrayList list = new ArrayList();
      Set libJars = servletContext.getResourcePaths("/WEB-INF/lib");
      if (libJars == null)
      {
         URL[] empty = {};
         return empty;
      }
      for (Object jar : libJars)
      {
         try
         {
            list.add(servletContext.getResource((String) jar));
         }
         catch (MalformedURLException e)
         {
            throw new RuntimeException(e);
         }
      }
      return list.toArray(new URL[list.size()]);
   }

   @Override
   public Set getParameterNames()
   {
      return getServletContextNames();
   }

   protected Set getServletContextNames()
   {
      Enumeration en = servletContext.getInitParameterNames();
      HashSet set = new HashSet();
      while (en.hasMoreElements()) set.add(en.nextElement());
      return set;
   }

   @Override
   public Set getInitParameterNames()
   {
      return getParameterNames();
   }

   public String getParameter(String name)
   {
      return servletContext.getInitParameter(name);
   }

   @Override
   public String getInitParameter(String name)
   {
      return servletContext.getInitParameter(name);
   }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy