Author: reinhard
Date: Mon Feb 21 12:50:05 2005
New Revision: 154718
URL: http://svn.apache.org/viewcvs?view=rev&rev=154718
Log:
allow block eclipse project depending on another block eclipse project
Modified:
cocoon/trunk/tools/block-builder/java/org/apache/cocoon/blockbuilder/ant/Block.java
cocoon/trunk/tools/block-builder/java/org/apache/cocoon/blockbuilder/ant/EclipseClasspathBuilderTask.java
cocoon/trunk/tools/block-builder/targets/block-descriptor2ant-script.xsl
Modified:
cocoon/trunk/tools/block-builder/java/org/apache/cocoon/blockbuilder/ant/Block.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/tools/block-builder/java/org/apache/cocoon/blockbuilder/ant/Block.java?view=diff&r1=154717&r2=154718
==============================================================================
---
cocoon/trunk/tools/block-builder/java/org/apache/cocoon/blockbuilder/ant/Block.java
(original)
+++
cocoon/trunk/tools/block-builder/java/org/apache/cocoon/blockbuilder/ant/Block.java
Mon Feb 21 12:50:05 2005
@@ -16,8 +16,16 @@
package org.apache.cocoon.blockbuilder.ant;
import java.io.File;
+import java.io.FileInputStream;
import java.io.FilenameFilter;
+import org.apache.tools.ant.BuildException;
+import org.apache.xerces.parsers.DOMParser;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.InputSource;
+
/**
* @since 0.1
*/
@@ -26,6 +34,7 @@
private String name;
private String relativeJardir;
private String blockPath;
+ private boolean dynamicEclipseReference = false;
public Block() {
@@ -47,6 +56,18 @@
this.relativeJardir = dir;
}
+ public void setDynamicEclipseReference(boolean dynamicEclipseReference) {
+ System.out.println("dynamic reference: " + dynamicEclipseReference);
+ }
+
+ public boolean isDynamicEclipseReference() {
+ return this.dynamicEclipseReference;
+ }
+
+ public String getEclipseProjectName() throws Exception {
+ return getProjectName(new File(this.blockPath, ".project"));
+ }
+
public File[] getJarFile(File basedir) {
File jarDir = new File(basedir, blockPath + File.separator +
this.relativeJardir);
return jarDir.listFiles(new FilenameFilter() {
@@ -54,5 +75,37 @@
return name.toLowerCase().endsWith("jar");
}
});
+ }
+
+ private String getProjectName(File eclipseProjectFile) throws Exception {
+ String projectName = "";
+ try {
+ System.out.println("eclipseProjectfile: " + eclipseProjectFile);
+ String EL_PROJECTDESCRIPTION = "projectDescription";
+ String EL_NAME = "name";
+
+ DOMParser parser = new DOMParser();
+ parser.parse(new InputSource(new
FileInputStream(eclipseProjectFile)));
+ Document doc = parser.getDocument();
+
+ // read in all available libraries
+ NodeList rootNodeList = doc.getChildNodes();
+ for(int i = 0; i <= rootNodeList.getLength(); i++ ) {
+ Node rootChildNode = rootNodeList.item(i);
+ if(rootChildNode != null &&
EL_PROJECTDESCRIPTION.equals(rootChildNode.getLocalName())) {
+ NodeList projectDescriptor = rootChildNode.getChildNodes();
+ for(int x = 0; x <= projectDescriptor.getLength(); x++) {
+ Node nameNode = projectDescriptor.item(x);
+ if(nameNode != null &&
EL_NAME.equals(nameNode.getLocalName())) {
+ projectName =
nameNode.getFirstChild().getNodeValue();
+ }
+ }
+ }
+ }
+ } catch(Exception e) {
+ throw new BuildException("Make sure that a valid Eclipse project
file can be found at "
+ + eclipseProjectFile.getCanonicalPath());
+ }
+ return projectName;
}
}
Modified:
cocoon/trunk/tools/block-builder/java/org/apache/cocoon/blockbuilder/ant/EclipseClasspathBuilderTask.java
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/tools/block-builder/java/org/apache/cocoon/blockbuilder/ant/EclipseClasspathBuilderTask.java?view=diff&r1=154717&r2=154718
==============================================================================
---
cocoon/trunk/tools/block-builder/java/org/apache/cocoon/blockbuilder/ant/EclipseClasspathBuilderTask.java
(original)
+++
cocoon/trunk/tools/block-builder/java/org/apache/cocoon/blockbuilder/ant/EclipseClasspathBuilderTask.java
Mon Feb 21 12:50:05 2005
@@ -53,7 +53,7 @@
private static final String LIT_ATTR_KIND_SRC = "src";
private static final String LIT_ATTR_KIND_CON = "con";
private static final String LIT_ATTR_KIND_LIB = "lib";
- private static final String LIT_ATTR_KIND_OUT = "output";
+ // private static final String LIT_ATTR_KIND_OUT = "output";
private static final String CORE_LIB = "core";
private static final String DEFAULT_ECLIPSE_CONTAINER =
"org.eclipse.jdt.launching.JRE_CONTAINER";
@@ -100,12 +100,20 @@
// append all public block jars
Iterator blockIterator = this.blocks.iterator();
while(blockIterator.hasNext()) {
- File[] f =
((Block)blockIterator.next()).getJarFile(this.getProject().getBaseDir());
- if(f!=null) for(int i = 0; i < f.length; i++) {
+ Block block = (Block)blockIterator.next();
+ if(block.isDynamicEclipseReference()) {
+ File[] f =
block.getJarFile(this.getProject().getBaseDir());
+ if(f!=null) for(int i = 0; i < f.length; i++) {
+ Element entry = doc.createElement(EL_CLASSPATHENTRY);
+ entry.setAttribute(ATTR_KIND, LIT_ATTR_KIND_LIB);
+ entry.setAttribute(ATTR_PATH, f[i].getCanonicalPath());
+ root.appendChild(entry);
+ }
+ } else {
Element entry = doc.createElement(EL_CLASSPATHENTRY);
- entry.setAttribute(ATTR_KIND, LIT_ATTR_KIND_LIB);
- entry.setAttribute(ATTR_PATH, f[i].getCanonicalPath());
- root.appendChild(entry);
+ entry.setAttribute(ATTR_KIND, LIT_ATTR_KIND_SRC);
+ entry.setAttribute(ATTR_PATH, "/" +
block.getEclipseProjectName());
+ root.appendChild(entry);
}
}
@@ -127,10 +135,12 @@
}
// append default output dir
+ /* RP: is it really necessary?
Element outputEntry = doc.createElement(EL_CLASSPATHENTRY);
outputEntry.setAttribute(ATTR_KIND, LIT_ATTR_KIND_OUT);
outputEntry.setAttribute(ATTR_PATH, "");
root.appendChild(outputEntry);
+ */
// append container
Element containerEntry = doc.createElement(EL_CLASSPATHENTRY);
Modified:
cocoon/trunk/tools/block-builder/targets/block-descriptor2ant-script.xsl
URL:
http://svn.apache.org/viewcvs/cocoon/trunk/tools/block-builder/targets/block-descriptor2ant-script.xsl?view=diff&r1=154717&r2=154718
==============================================================================
--- cocoon/trunk/tools/block-builder/targets/block-descriptor2ant-script.xsl
(original)
+++ cocoon/trunk/tools/block-builder/targets/block-descriptor2ant-script.xsl
Mon Feb 21 12:50:05 2005
@@ -208,6 +208,7 @@
<xsl:for-each select="block:requirements/block:requires">
<block name="[EMAIL PROTECTED]" jardir="build/public">
<xsl:attribute name="path">${root.block.<xsl:value-of
select="@name"/>}</xsl:attribute>
+ <xsl:attribute
name="dynamicEclipseReference">${root.block.<xsl:value-of
select="@name"/>.eclipse.dynamic}</xsl:attribute>
</block>
</xsl:for-each>