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

org.zeroturnaround.javarebel.maven.RebelXmlBuilder Maven / Gradle / Ivy

There is a newer version: 1.2.1
Show newest version
package org.zeroturnaround.javarebel.maven;

import java.io.IOException;

import java.io.Writer;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.commons.lang.StringEscapeUtils;
import org.apache.commons.lang.StringUtils;
import org.zeroturnaround.javarebel.maven.model.RebelClasspathResource;
import org.zeroturnaround.javarebel.maven.model.RebelWar;
import org.zeroturnaround.javarebel.maven.model.RebelWebResource;
import org.zeroturnaround.javarebel.maven.model.RebelResource;

/**
 * Class for constructing xml configuration.
 */
class RebelXmlBuilder {

  private String fallbackClasspath;
  private final List classpathDir = new ArrayList();
  private final List classpathJar = new ArrayList();
  private final List classpathJarset = new ArrayList();
  private final List classpathDirset = new ArrayList();

  private RebelWar war;

  private List webResources = new ArrayList();

  public void setFallbackClasspath(String fallbackClasspath) {
    this.fallbackClasspath = fallbackClasspath;
  }

  public void addClasspathDir(RebelClasspathResource dir) {
    classpathDir.add(dir);
  }

  public void addClasspathJar(RebelClasspathResource jar) {
    classpathJar.add(jar);
  }

  public void addClasspathJarset(RebelClasspathResource jarset) {
    classpathJarset.add(jarset);
  }

  public void addClasspathDirset(RebelClasspathResource dirset) {
    classpathDirset.add(dirset);
  }

  public void setWar(RebelWar war) {
    this.war = war;
  }

  public void addWebresource(RebelWebResource webResource) {
    webResources.add(webResource);
  }

  public void writeXml(Writer writer) throws IOException {
    writer.write("\n");
    writer.write("\n\n"
        + "\n");
    writer.write("\t\n");

    for (Iterator i = classpathDir.iterator(); i.hasNext();) {
      RebelClasspathResource r = (RebelClasspathResource) i.next();
      writer.write("\t\t\n");
      writeExcludeInclude(writer, r);
      writer.write("\t\t\n");
    }

    for (Iterator i = classpathJar.iterator(); i.hasNext();) {
      RebelClasspathResource r = (RebelClasspathResource) i.next();
      writer.write("\t\t\n");
      writeExcludeInclude(writer, r);
      writer.write("\t\t\n");
    }

    for (Iterator i = classpathJarset.iterator(); i.hasNext();) {
      RebelClasspathResource r = (RebelClasspathResource) i.next();
      writer.write("\t\t\n");
      writeExcludeInclude(writer, r);
      writer.write("\t\t\n");
    }

    for (Iterator i = classpathDirset.iterator(); i.hasNext();) {
      RebelClasspathResource r = (RebelClasspathResource) i.next();
      writer.write("\t\t\n");
      writeExcludeInclude(writer, r);
      writer.write("\t\t\n");
    }

    writer.write("\t\n");
    writer.write("\n");

    if (war != null && war.getPath() != null) {
      writer.write("\t\n");
      writer.write("\n");
    }

    if (webResources.size() > 0) {
      writer.write("\t\n");
      for (Iterator i = webResources.iterator(); i.hasNext();) {
        RebelWebResource r = (RebelWebResource) i.next();
        writer.write("\t\t\n");
        writer.write("\t\t\t\n");
        writeExcludeInclude(writer, r);
        writer.write("\t\t\t\n");
        writer.write("\t\t\n");
      }
      writer.write("\t\n");
      writer.write("\n");
    }

    writer.write("\n");
    writer.flush();
  }

  private void writeExcludeInclude(Writer writer, RebelClasspathResource r) throws IOException {
    writeExcludeInclude(writer, r, 3);
  }

  private void writeExcludeInclude(Writer writer, RebelWebResource r) throws IOException {
    writeExcludeInclude(writer, r, 4);
  }

  private void writeExcludeInclude(Writer writer, RebelResource r, int indent) throws IOException {
    String indention = StringUtils.repeat("\t", indent);
    if (r.getExcludes() != null) {
      for (Iterator i = r.getExcludes().iterator(); i.hasNext();) {
        String exclude = (String) i.next();
        writer.write(indention + "\n");
      }
    }
    if (r.getIncludes() != null) {
      for (Iterator i = r.getIncludes().iterator(); i.hasNext();) {
        String include = (String) i.next();
        writer.write(indention + "\n");
      }
    }
  }

  private static String e(String s) {
    return StringEscapeUtils.escapeXml(s);
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy