Exemple #1
0
  /**
   * This method will create an ANT based LoadFile task based on an infile and a property name. The
   * property will be loaded with the infile for use later by the Replace task.
   *
   * @param inFile The file to process
   * @param propName the name to assign it to
   * @return The ANT LoadFile task that loads a property with a file
   */
  protected LoadFile createLoadFileTask(String inFile, String propName) {
    LoadFile loadFileTask = (LoadFile) antProject.createTask("loadfile");
    loadFileTask.init();
    loadFileTask.setProperty(propName);
    loadFileTask.setSrcFile(new File(inFile));

    return loadFileTask;
  }
Exemple #2
0
  /**
   * This method will movie files from the source directory to the destination directory based on
   * the pattern.
   *
   * @param inSourceDirectory The source directory to copy from.
   * @param inDestinationDirectory The destination directory to copy to.
   * @param inPattern The file pattern to match to locate files to copy.
   */
  protected void moveFiles(
      final String inSourceDirectory, final String inDestinationDirectory, final String inPattern) {
    Move moveTask = (Move) antProject.createTask("move");

    FileSet fileSet = AntUtils.createFileset(inSourceDirectory, inPattern, new ArrayList());
    moveTask.setTodir(new File(inDestinationDirectory));
    moveTask.addFileset(fileSet);
    moveTask.execute();
  }
Exemple #3
0
  public File resolve(final Extension extension, final Project project) throws BuildException {
    validate();

    final Ant ant = (Ant) project.createTask("ant");
    ant.setInheritAll(false);
    ant.setAntfile(m_antfile.getName());

    try {
      final File dir = m_antfile.getParentFile().getCanonicalFile();
      ant.setDir(dir);
    } catch (final IOException ioe) {
      throw new BuildException(ioe.getMessage(), ioe);
    }

    if (null != m_target) {
      ant.setTarget(m_target);
    }

    ant.execute();

    return m_destfile;
  }
Exemple #4
0
  public boolean execute(Project project, long contentLength, InputStream content)
      throws Throwable {
    Ant ant = (Ant) project.createTask("ant");
    File baseDir = project.getBaseDir();
    if (dir != null) baseDir = new File(dir);
    ant.setDir(baseDir);
    ant.setInheritAll(inheritall);
    ant.setInheritRefs(interitrefs);

    if (target != null) ant.setTarget(target);

    if (antFile != null) ant.setAntfile(antFile);

    Enumeration e = properties.elements();
    PropertyContainer pc = null;
    Property p = null;
    while (e.hasMoreElements()) {
      pc = (PropertyContainer) e.nextElement();
      p = ant.createProperty();
      p.setName(pc.getName());
      p.setValue(pc.getValue());
    }

    e = references.elements();
    ReferenceContainer rc = null;
    Ant.Reference ref = null;
    while (e.hasMoreElements()) {
      rc = (ReferenceContainer) e.nextElement();
      ref = new Ant.Reference();
      ref.setRefId(rc.getRefId());
      ref.setToRefid(rc.getToRefId());
      ant.addReference(ref);
    }

    ant.execute();

    return false;
  }
  /** Compile the servlet from .java file to .class file */
  @Override
  protected void generateClass(String[] smap)
      throws FileNotFoundException, JasperException, Exception {

    long t1 = 0;
    if (log.isDebugEnabled()) {
      t1 = System.currentTimeMillis();
    }

    String javaEncoding = ctxt.getOptions().getJavaEncoding();
    String javaFileName = ctxt.getServletJavaFileName();
    String classpath = ctxt.getClassPath();

    String sep = System.getProperty("path.separator");

    StringBuilder errorReport = new StringBuilder();

    StringBuilder info = new StringBuilder();
    info.append("Compile: javaFileName=" + javaFileName + "\n");
    info.append("    classpath=" + classpath + "\n");

    // Start capturing the System.err output for this thread
    SystemLogHandler.setThread();

    // Initializing javac task
    getProject();
    Javac javac = (Javac) project.createTask("javac");

    // Initializing classpath
    Path path = new Path(project);
    path.setPath(System.getProperty("java.class.path"));
    info.append("    cp=" + System.getProperty("java.class.path") + "\n");
    StringTokenizer tokenizer = new StringTokenizer(classpath, sep);
    while (tokenizer.hasMoreElements()) {
      String pathElement = tokenizer.nextToken();
      File repository = new File(pathElement);
      path.setLocation(repository);
      info.append("    cp=" + repository + "\n");
    }

    if (log.isDebugEnabled())
      log.debug("Using classpath: " + System.getProperty("java.class.path") + sep + classpath);

    // Initializing sourcepath
    Path srcPath = new Path(project);
    srcPath.setLocation(options.getScratchDir());

    info.append("    work dir=" + options.getScratchDir() + "\n");

    // Initialize and set java extensions
    String exts = System.getProperty("java.ext.dirs");
    if (exts != null) {
      Path extdirs = new Path(project);
      extdirs.setPath(exts);
      javac.setExtdirs(extdirs);
      info.append("    extension dir=" + exts + "\n");
    }

    // Add endorsed directories if any are specified and we're forking
    // See Bugzilla 31257
    if (ctxt.getOptions().getFork()) {
      String endorsed = System.getProperty("java.endorsed.dirs");
      if (endorsed != null) {
        Javac.ImplementationSpecificArgument endorsedArg = javac.createCompilerArg();
        endorsedArg.setLine("-J-Djava.endorsed.dirs=" + quotePathList(endorsed));
        info.append("    endorsed dir=" + quotePathList(endorsed) + "\n");
      } else {
        info.append("    no endorsed dirs specified\n");
      }
    }

    // Configure the compiler object
    javac.setEncoding(javaEncoding);
    javac.setClasspath(path);
    javac.setDebug(ctxt.getOptions().getClassDebugInfo());
    javac.setSrcdir(srcPath);
    javac.setTempdir(options.getScratchDir());
    javac.setOptimize(!ctxt.getOptions().getClassDebugInfo());
    javac.setFork(ctxt.getOptions().getFork());
    info.append("    srcDir=" + srcPath + "\n");

    // Set the Java compiler to use
    if (options.getCompiler() != null) {
      javac.setCompiler(options.getCompiler());
      info.append("    compiler=" + options.getCompiler() + "\n");
    }

    if (options.getCompilerTargetVM() != null) {
      javac.setTarget(options.getCompilerTargetVM());
      info.append("   compilerTargetVM=" + options.getCompilerTargetVM() + "\n");
    }

    if (options.getCompilerSourceVM() != null) {
      javac.setSource(options.getCompilerSourceVM());
      info.append("   compilerSourceVM=" + options.getCompilerSourceVM() + "\n");
    }

    // Build includes path
    PatternSet.NameEntry includes = javac.createInclude();

    includes.setName(ctxt.getJavaPath());
    info.append("    include=" + ctxt.getJavaPath() + "\n");

    BuildException be = null;

    try {
      if (ctxt.getOptions().getFork()) {
        javac.execute();
      } else {
        synchronized (javacLock) {
          javac.execute();
        }
      }
    } catch (BuildException e) {
      be = e;
      log.error(Localizer.getMessage("jsp.error.javac"), e);
      log.error(Localizer.getMessage("jsp.error.javac.env") + info.toString());
    }

    errorReport.append(logger.getReport());

    // Stop capturing the System.err output for this thread
    String errorCapture = SystemLogHandler.unsetThread();
    if (errorCapture != null) {
      errorReport.append(Constants.NEWLINE);
      errorReport.append(errorCapture);
    }

    if (!ctxt.keepGenerated()) {
      File javaFile = new File(javaFileName);
      javaFile.delete();
    }

    if (be != null) {
      String errorReportString = errorReport.toString();
      log.error(Localizer.getMessage("jsp.error.compilation", javaFileName, errorReportString));
      JavacErrorDetail[] javacErrors =
          ErrorDispatcher.parseJavacErrors(errorReportString, javaFileName, pageNodes);
      if (javacErrors != null) {
        errDispatcher.javacError(javacErrors);
      } else {
        errDispatcher.javacError(errorReportString, be);
      }
    }

    if (log.isDebugEnabled()) {
      long t2 = System.currentTimeMillis();
      log.debug("Compiled " + ctxt.getServletJavaFileName() + " " + (t2 - t1) + "ms");
    }

    logger = null;
    project = null;

    if (ctxt.isPrototypeMode()) {
      return;
    }

    // JSR45 Support
    if (!options.isSmapSuppressed()) {
      SmapUtil.installSmap(smap);
    }
  }