Package com.hp.mw.buildsystem.ant

Source Code of com.hp.mw.buildsystem.ant.ModuleToProduct

/*
* JBoss, Home of Professional Open Source
* Copyright 2006, Red Hat Middleware LLC, and individual contributors
* as indicated by the @author tags.
* See the copyright.txt in the distribution for a
* full listing of individual contributors.
* This copyrighted material is made available to anyone wishing to use,
* modify, copy, or redistribute it subject to the terms and conditions
* of the GNU Lesser General Public License, v. 2.1.
* This program is distributed in the hope that it will be useful, but WITHOUT A
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public License,
* v.2.1 along with this distribution; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA  02110-1301, USA.
*
* (C) 2005-2006,
* @author JBoss Inc.
*/
package com.hp.mw.buildsystem.ant;

/**
* Ant task to take individual module jar files and create product jar files
* from them.  Parameters are <EM>destdir</EM>, <EM>destfile</EM>,
* <EM>workdir</EM> and a fileset containing the complete list of module jar
* files.
*
* Unpacks the module jar files into the work directory.  Jar files with a
* <EM>-orbname</EM> suffix are unpacked into <EM>-orbname</EM>
* directories.  Jar files without the suffix are unpacked into the default
* directory.  All these directories are then packed into jar files in the
* destination directory and are named with the prefix <EM>destfile</EM>
* converted to lower case.
*
* @author Julian Coleman (julian_coleman@hp.com)
* @version $Id: ModuleToProduct.java 2342 2006-03-30 13:06:17Z  $
*/

import java.io.File;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.taskdefs.Delete;
import org.apache.tools.ant.taskdefs.Expand;
import org.apache.tools.ant.taskdefs.Jar;
import org.apache.tools.ant.taskdefs.Mkdir;
import org.apache.tools.ant.types.FileSet;

public class ModuleToProduct extends org.apache.tools.ant.Task {

  private String  workdir = ".work";
  private String  destdir, destfile;
  private List   libs = new ArrayList() ;
  private HashSet orbList = new HashSet();
  private boolean ignoreOrb = false ;

  /**
   * Set the destination directory.
   */
  public void setDestdir(String destdir) {
    this.destdir = destdir;
  }

  /**
   * Set the destination filename root.
   */
  public void setDestfile(String destfile) {
    this.destfile = destfile.toLowerCase();
  }

  /**
   * Set the temporary working directory.
   */
  public void setWorkdir(String workdir) {
    this.workdir = workdir;
  }

  /**
   * Set the list of .jar files to process.
   */
  public void addFileset(FileSet fileSet) {
    libs.add(fileSet) ;
  }

  /**
   * Set the ignore orb glaf.
   */
  public void setIgnoreorb(final boolean ignoreOrb) {
    this.ignoreOrb = ignoreOrb;
  }

  /**
   * Unjar list of jar files into separate directories.
   * Jar directories into separate product jar files.
   */
  public void execute() throws BuildException {
    DirectoryScanner  ds;
    int  hyphen;
    String  orbName, srcDir, destDir;
    Expand  unjar = new Expand();
    Delete  delete = new Delete();
    Mkdir  mkdir = new Mkdir();
    Jar  jar = new Jar();

    try {
      /* Remove any existing work directory */
      delete.setProject(getProject());
      delete.setDir(new File(workdir));
      delete.execute();
 
      /* Get list of files */
      final int numLibs = libs.size() ;
      for(int count = 0 ; count < numLibs ; count++)
      {
        final FileSet fileSet = (FileSet)libs.get(count) ;
        ds = fileSet.getDirectoryScanner(project);
        ds.scan();
        final String[] files = ds.getIncludedFiles() ;
        for (int i = 0; i < files.length;i++) {
          /* Build extract directory name */
          destDir = workdir.concat("/classes");
          hyphen = files[i].lastIndexOf('-');
          orbName = new String();
          if (!ignoreOrb && (hyphen > 0)) {
            orbName = orbName.concat(
                files[i].substring(hyphen,
                files[i].indexOf(".jar")));
            destDir = destDir.concat(orbName);
            if (!orbList.contains(orbName)) {
              orbList.add(orbName);
            }
          } else {
            if (!orbList.contains("")) {
              orbList.add("");
            }
          }
          /* Unpack jar file */
          unjar.setProject(getProject());
          unjar.setDest(new File(destDir));
          unjar.setSrc(new File(ds.getBasedir(), files[i]));
          unjar.setOverwrite(true);
          unjar.execute();
        }
      }
      for (Iterator i = orbList.iterator(); i.hasNext();) {
        /* Delete META-INF directory */
        orbName = i.next().toString();
        srcDir = workdir.concat("/classes");
        srcDir = srcDir.concat(orbName);
        srcDir = srcDir.concat("/META-INF");
        delete.setDir(new File(srcDir));
        delete.execute();
 
        /* Create destination directory */
        mkdir.setProject(getProject());
        mkdir.setDir(new File(destdir));
        mkdir.execute();
 
        /* Create new jar files */
        srcDir = workdir.concat("/classes");
        srcDir = srcDir.concat(orbName);
        destDir = destdir.concat("/");
        destDir = destDir.concat(destfile);
        destDir = destDir.concat(orbName);
        destDir = destDir.concat(".jar");
        jar.setProject(getProject());
        jar.setBasedir(new File(srcDir));
        jar.setJarfile(new File(destDir));
        jar.execute();
      }
      /* Remove the work directory */
      delete.setDir(new File(workdir));
      delete.execute();
    }
    catch (Exception e) {
      throw new BuildException(e);
    }
  }
}
TOP

Related Classes of com.hp.mw.buildsystem.ant.ModuleToProduct

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.