Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/objectstyle/woproject/ant/WOCompile.java


1   /* ====================================================================
2    *
3    * The ObjectStyle Group Software License, Version 1.0
4    *
5    * Copyright (c) 2002 The ObjectStyle Group
6    * and individual authors of the software.  All rights reserved.
7    *
8    * Redistribution and use in source and binary forms, with or without
9    * modification, are permitted provided that the following conditions
10   * are met:
11   *
12   * 1. Redistributions of source code must retain the above copyright
13   *    notice, this list of conditions and the following disclaimer.
14   *
15   * 2. Redistributions in binary form must reproduce the above copyright
16   *    notice, this list of conditions and the following disclaimer in
17   *    the documentation and/or other materials provided with the
18   *    distribution.
19   *
20   * 3. The end-user documentation included with the redistribution, if
21   *    any, must include the following acknowlegement:
22   *       "This product includes software developed by the
23   *        ObjectStyle Group (http://objectstyle.org/)."
24   *    Alternately, this acknowlegement may appear in the software itself,
25   *    if and wherever such third-party acknowlegements normally appear.
26   *
27   * 4. The names "ObjectStyle Group" and "Cayenne"
28   *    must not be used to endorse or promote products derived
29   *    from this software without prior written permission. For written
30   *    permission, please contact andrus@objectstyle.org.
31   *
32   * 5. Products derived from this software may not be called "ObjectStyle"
33   *    nor may "ObjectStyle" appear in their names without prior written
34   *    permission of the ObjectStyle Group.
35   *
36   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
37   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
38   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
39   * DISCLAIMED.  IN NO EVENT SHALL THE OBJECTSTYLE GROUP OR
40   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
41   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
42   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
43   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
44   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
45   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
46   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47   * SUCH DAMAGE.
48   * ====================================================================
49   *
50   * This software consists of voluntary contributions made by many
51   * individuals on behalf of the ObjectStyle Group.  For more
52   * information on the ObjectStyle Group, please see
53   * <http://objectstyle.org/>.
54   *
55   */
56  package org.objectstyle.woproject.ant;
57  
58  import java.io.File;
59  import java.util.ArrayList;
60  import java.util.Vector;
61  
62  import org.apache.tools.ant.BuildException;
63  import org.apache.tools.ant.DirectoryScanner;
64  import org.apache.tools.ant.Project;
65  import org.apache.tools.ant.taskdefs.Javac;
66  import org.apache.tools.ant.types.Path;
67  
68  /**
69   * Customized subclass of Javac used to locate jars in frameworks.
70   *
71   * @author Anjo Krank
72   */
73  public class WOCompile extends Javac {
74      private ArrayList frameworkSets = new ArrayList();
75      
76      public void addFrameworks(FrameworkSet frameworks) throws BuildException {
77          frameworkSets.add(frameworks);
78      }
79  
80      protected String buildFrameworkPaths() {
81          StringBuffer buf = new StringBuffer();
82  
83          Project project = getProject();
84  
85          // track included jar files to avoid double entries
86          Vector jarSet = new Vector();    
87  
88          int size = frameworkSets.size();
89          for (int i = 0; i < size; i++) {
90              FrameworkSet fs = (FrameworkSet) frameworkSets.get(i);
91  
92              try {
93                  DirectoryScanner ds = fs.getDirectoryScanner(project);
94                  String[] dirs = ds.getIncludedDirectories();
95  
96                  for (int j = 0; j < dirs.length; j++) {
97                      File[] jars = fs.findJars(project, dirs[j]);
98  
99                      if (jars == null || jars.length == 0) {
100                         log("No Jars in " + dirs[j] + ", ignoring.",
101                             Project.MSG_VERBOSE);
102                         continue;
103                     }
104 
105                     int jsize = jars.length;
106                     for (int k = 0; k < jsize; k++) {
107                         if(!jarSet.contains(jars[k]))
108                             jarSet.add(jars[k]);
109                     }
110                 }
111             } catch (BuildException be) {
112                 // directory doesn't exist or is not readable
113                 log(be.getMessage(), Project.MSG_WARN);
114             }
115         }
116         Object someFiles[] = jarSet.toArray();
117         size = someFiles.length;
118         for (int i = 0; i < size; i++) {
119             log(": Framework JAR " + (File) someFiles[i], Project.MSG_VERBOSE);
120             buf.append((File) someFiles[i]).append(":");
121         }
122         return buf.toString();
123     }
124 
125     public void execute() throws BuildException {
126         Path path = new Path(getProject(), buildFrameworkPaths());
127 
128         setClasspath(path);
129         super.execute();
130     }
131 }