Browse Source

preliminary support for reading OSGI manifest, remove unused code

tags/PRE_PIPELINE
wisberg 18 years ago
parent
commit
ab30a9d30c
1 changed files with 84 additions and 55 deletions
  1. 84
    55
      build/src/org/aspectj/internal/tools/build/Module.java

+ 84
- 55
build/src/org/aspectj/internal/tools/build/Module.java View File

@@ -19,6 +19,7 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Iterator;
@@ -28,6 +29,8 @@ import java.util.Properties;
import java.util.StringTokenizer;

import org.aspectj.internal.tools.build.Result.Kind;
import org.aspectj.internal.tools.build.Util.OSGIBundle;
import org.aspectj.internal.tools.build.Util.OSGIBundle.RequiredBundle;


/**
@@ -48,13 +51,13 @@ public class Module {
private static final String[] ATTS = new String[] { "exported", "kind",
"path", "sourcepath" };

private static final int getATTSIndex(String key) {
for (int i = 0; i < ATTS.length; i++) {
if (ATTS[i].equals(key))
return i;
}
return -1;
}
// private static final int getATTSIndex(String key) {
// for (int i = 0; i < ATTS.length; i++) {
// if (ATTS[i].equals(key))
// return i;
// }
// return -1;
// }

/**
* @return true if file is null or cannot be read or was last modified after
@@ -121,30 +124,30 @@ public class Module {
return (path.endsWith(".java") || path.endsWith(".aj")); // XXXFileLiteral
}

/** @return List of File of any module or library jar ending with suffix */
private static ArrayList findJarsBySuffix(String suffix, Kind kind,
List libJars, List required) {
ArrayList result = new ArrayList();
if (null != suffix) {
// library jars
for (Iterator iter = libJars.iterator(); iter.hasNext();) {
File file = (File) iter.next();
if (file.getPath().endsWith(suffix)) {
result.add(file);
}
}
// module jars
for (Iterator iter = required.iterator(); iter.hasNext();) {
Module module = (Module) iter.next();
Result moduleResult = module.getResult(kind);
File file = moduleResult.getOutputFile();
if (file.getPath().endsWith(suffix)) {
result.add(file);
}
}
}
return result;
}
// /** @return List of File of any module or library jar ending with suffix */
// private static ArrayList findJarsBySuffix(String suffix, Kind kind,
// List libJars, List required) {
// ArrayList result = new ArrayList();
// if (null != suffix) {
// // library jars
// for (Iterator iter = libJars.iterator(); iter.hasNext();) {
// File file = (File) iter.next();
// if (file.getPath().endsWith(suffix)) {
// result.add(file);
// }
// }
// // module jars
// for (Iterator iter = required.iterator(); iter.hasNext();) {
// Module module = (Module) iter.next();
// Result moduleResult = module.getResult(kind);
// File file = moduleResult.getOutputFile();
// if (file.getPath().endsWith(suffix)) {
// result.add(file);
// }
// }
// }
// return result;
// }
public final boolean valid;

@@ -166,9 +169,6 @@ public class Module {
/** path to output jar - may not exist */
private final File moduleJar;

/** path to fully-assembed jar - may not exist */
private final File assembledJar;

/** File list of library jars */
private final List libJars;

@@ -190,19 +190,9 @@ public class Module {
/** Module list of required modules */
private final List requiredModules;

/** List of File that are newer than moduleJar. Null until requested */
// private List newerFiles;
/** true if this has been found to be out of date */
private boolean outOfDate;

/** true if we have calculated whether this is out of date */
private boolean outOfDateSet;

/** logger */
private final Messager messager;

private final File jarDir;

Module(File moduleDir, File jarDir, String name, Modules modules,
Messager messager) {
Util.iaxIfNotCanReadDir(moduleDir, "moduleDir");
@@ -210,7 +200,6 @@ public class Module {
Util.iaxIfNull(name, "name");
Util.iaxIfNull(modules, "modules");
this.moduleDir = moduleDir;
this.jarDir = jarDir;
this.libJars = new ArrayList();
this.exportedLibJars = new ArrayList();
this.requiredModules = new ArrayList();
@@ -221,7 +210,6 @@ public class Module {
this.modules = modules;
this.messager = messager;
this.moduleJar = new File(jarDir, name + ".jar");
this.assembledJar = new File(jarDir, name + "-all.jar");
this.release = new Result(Result.RELEASE, this, jarDir);
this.releaseAll = new Result(Result.RELEASE_ALL, this, jarDir);
this.test = new Result(Result.TEST, this, jarDir);
@@ -324,14 +312,55 @@ public class Module {
}

private boolean init() {
return initClasspath() && initProperties() && reviewInit()
&& initResults();
boolean cp = initClasspath();
boolean mf = initManifest();
if (!cp && !mf) {
return false;
}
return initProperties() && reviewInit() && initResults();
}

/** read OSGI manifest.mf file XXX hacked */
private boolean initManifest() {
File metaInf = new File(moduleDir, "META-INF");
if (!metaInf.canRead() || !metaInf.isDirectory()) {
return false;
}
File file = new File(metaInf, "MANIFEST.MF"); // XXXFileLiteral
if (!file.exists()) {
return false; // ok, not OSGI
}
InputStream fin = null;
OSGIBundle bundle = null;
try {
fin = new FileInputStream(file);
bundle = new OSGIBundle(fin);
} catch (IOException e) {
messager.logException("IOException reading " + file, e);
return false;
} finally {
Util.closeSilently(fin);
}
RequiredBundle[] bundles = bundle.getRequiredBundles();
for (int i = 0; i < bundles.length; i++) {
RequiredBundle required = bundles[i];
update("src", "/" + required.name, required.text, false);
}
String[] libs = bundle.getClasspath();
for (int i = 0; i < libs.length; i++) {
update("lib", libs[i], libs[i], false);
}

return true;
}
/** read eclipse .classpath file XXX line-oriented hack */
private boolean initClasspath() {
// meaning testsrc directory, junit library, etc.
File file = new File(moduleDir, ".classpath"); // XXXFileLiteral
if (!file.exists()) {
return false; // OSGI???
}
FileReader fin = null;
try {
fin = new FileReader(file);
@@ -359,13 +388,13 @@ public class Module {
return false;
}

private boolean update(String toString, String[] attributes) {
String kind = attributes[getATTSIndex("kind")];
String path = attributes[getATTSIndex("path")];
String exp = attributes[getATTSIndex("exported")];
boolean exported = ("true".equals(exp));
return update(kind, path, toString, exported);
}
// private boolean update(String toString, String[] attributes) {
// String kind = attributes[getATTSIndex("kind")];
// String path = attributes[getATTSIndex("path")];
// String exp = attributes[getATTSIndex("exported")];
// boolean exported = ("true".equals(exp));
// return update(kind, path, toString, exported);
// }

private boolean update(String kind, String path, String toString,
boolean exported) {

Loading…
Cancel
Save