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

io.airlift.http.server.model.WebServerDefinitionBuilder Maven / Gradle / Ivy

There is a newer version: 0.0.6
Show newest version
package io.airlift.http.server.model;

import java.io.File;
import java.util.List;
import java.util.Map;

import javax.servlet.Filter;
import javax.servlet.http.HttpServlet;

import com.google.common.collect.Lists;
import com.google.common.collect.Maps;

public class WebServerDefinitionBuilder {

  private WebServerDefinition webServerDefinition;
  private StaticResourceDefinition staticContentDefinition;
  private FilterDefinition filterDefinition;
  private ServletDefinition servletDefinition;

  public WebServerDefinitionBuilder() {
    webServerDefinition = new WebServerDefinition();
  }

  public WebServerDefinitionBuilder port(int port) {
    webServerDefinition.setPort(port);
    return this;
  }

  public WebServerDefinitionBuilder filter(String pattern) {
    filterDefinition = new FilterDefinition();
    filterDefinition.setPattern(pattern);
    return this;
  }

  public WebServerDefinitionBuilder through(Class filterClass) {
    filterDefinition.setFilterClass(filterClass);
    webServerDefinition.addFilterDefinition(filterDefinition);
    return this;
  }

  public WebServerDefinitionBuilder serve(String pattern) {
    return serve(pattern, Lists.newArrayList());
  }

  public WebServerDefinitionBuilder serve(String pattern, List welcomeFiles) {
    servletDefinition = new ServletDefinition();
    servletDefinition.setPattern(pattern);
    return this;
  }

  public WebServerDefinitionBuilder with(Class servletClass) {
    return with(servletClass, Maps.newHashMap());
  }

  public WebServerDefinitionBuilder with(Class servletClass, Map parameters) {
    servletDefinition.setServletClass(servletClass);
    servletDefinition.setParameters(parameters);
    webServerDefinition.addServletDefinition(servletDefinition);
    return this;
  }

  public WebServerDefinitionBuilder with(HttpServlet servlet) {
    servletDefinition.setServlet(servlet);
    webServerDefinition.addServletDefinition(servletDefinition);
    return this;
  }

  public WebServerDefinitionBuilder with(File war) {
    servletDefinition.setWar(war);
    webServerDefinition.addServletDefinition(servletDefinition);
    return this;
  }  
  
  public WebServerDefinitionBuilder at(String path) {
    staticContentDefinition = new StaticResourceDefinition();
    staticContentDefinition.setPath(path);
    return this;
  }

  public WebServerDefinitionBuilder resource(String resource) {
    return resource(resource, Lists.newArrayList());
  }

  public WebServerDefinitionBuilder resource(String resource, List welcomeFiles) {
    return resource(resource, welcomeFiles, false);
  } 

  public WebServerDefinitionBuilder resource(String resource, List welcomeFiles, boolean listing) {
    staticContentDefinition.setResource(resource);
    staticContentDefinition.setListing(listing);
    if (welcomeFiles != null) {
      staticContentDefinition.setWelcomeFiles(welcomeFiles);
    }
    webServerDefinition.addStaticContentDefinition(staticContentDefinition);
    return this;
  }
  
  
  public WebServerDefinition build() {
    return webServerDefinition;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy