Index: freeform/src/org/netbeans/modules/java/freeform/JavaProjectGenerator.java =================================================================== RCS file: /cvs/java/freeform/src/org/netbeans/modules/java/freeform/JavaProjectGenerator.java,v retrieving revision 1.4 diff -u -r1.4 JavaProjectGenerator.java --- freeform/src/org/netbeans/modules/java/freeform/JavaProjectGenerator.java 18 Jan 2005 00:52:41 -0000 1.4 +++ freeform/src/org/netbeans/modules/java/freeform/JavaProjectGenerator.java 20 Apr 2005 15:09:05 -0000 @@ -19,6 +19,7 @@ import java.util.Iterator; import java.util.List; import java.util.Set; +import org.netbeans.api.java.project.JavaProjectConstants; import org.netbeans.api.project.ant.AntArtifact; import org.netbeans.api.project.ant.AntArtifactQuery; import org.netbeans.modules.ant.freeform.FreeformProjectType; @@ -511,7 +512,7 @@ /** * Try to guess project's exports. See issue #49221 for more details. */ - public static List/**/ guessExports(PropertyEvaluator evaluator, + public static List/**/ guessExports(PropertyEvaluator evaluator, File baseFolder, List/**/ targetMappings, List/**/ javaCompilationUnits) { //assert ProjectManager.mutex().isReadAccess() || ProjectManager.mutex().isWriteAccess(); List/**/ exports = new ArrayList(); @@ -542,7 +543,15 @@ String output2 = evaluator.evaluate(output); if (output2.endsWith(".jar")) { // NOI18N Export e = new Export(); - e.type = "jar"; // NOI18N + e.type = JavaProjectConstants.ARTIFACT_TYPE_JAR; + e.location = output; + e.script = scriptName; + e.buildTarget = targetName; + exports.add(e); + } + else if (isFolder(evaluator, baseFolder, output2)) { + Export e = new Export(); + e.type = JavaProjectConstants.ARTIFACT_TYPE_FOLDER; e.location = output; e.script = scriptName; e.buildTarget = targetName; @@ -845,6 +854,17 @@ list.add(tm); } return list; + } + + + private static boolean isFolder (PropertyEvaluator eval, File baseFolder, String folder) { + File f = Util.resolveFile(eval, baseFolder, folder); + if (f != null && f.isDirectory()) { + return true; + } + int dotIndex = folder.lastIndexOf('.'); //NOI18N + int slashIndex = folder.lastIndexOf('/'); //NOI18N + return dotIndex == -1 || (dotIndex < slashIndex) ; } /** Index: freeform/src/org/netbeans/modules/java/freeform/ui/ProjectModel.java =================================================================== RCS file: /cvs/java/freeform/src/org/netbeans/modules/java/freeform/ui/ProjectModel.java,v retrieving revision 1.8 diff -u -r1.8 ProjectModel.java --- freeform/src/org/netbeans/modules/java/freeform/ui/ProjectModel.java 22 Mar 2005 11:46:51 -0000 1.8 +++ freeform/src/org/netbeans/modules/java/freeform/ui/ProjectModel.java 20 Apr 2005 15:09:06 -0000 @@ -150,7 +150,7 @@ JavaProjectGenerator.putSourceViews(helper, sourceFolders, null); } JavaProjectGenerator.putJavaCompilationUnits(helper, Util.getAuxiliaryConfiguration(helper), model.javaCompilationUnitsList); - List exports = JavaProjectGenerator.guessExports(model.evaluator, JavaProjectGenerator.getTargetMappings(helper), model.javaCompilationUnitsList); + List exports = JavaProjectGenerator.guessExports(model.evaluator, model.baseFolder, JavaProjectGenerator.getTargetMappings(helper), model.javaCompilationUnitsList); if (exports.size() > 0) { JavaProjectGenerator.putExports(helper, exports); } @@ -178,7 +178,7 @@ JavaProjectGenerator.putJavaCompilationUnits(helper, aux, model.javaCompilationUnitsList); model.resetState(); - List exports = JavaProjectGenerator.guessExports(model.getEvaluator(), + List exports = JavaProjectGenerator.guessExports(model.getEvaluator(), model.baseFolder, JavaProjectGenerator.getTargetMappings(helper), model.javaCompilationUnitsList); JavaProjectGenerator.putExports(helper, exports); Index: freeform/test/unit/src/org/netbeans/modules/java/freeform/JavaProjectGeneratorTest.java =================================================================== RCS file: /cvs/java/freeform/test/unit/src/org/netbeans/modules/java/freeform/JavaProjectGeneratorTest.java,v retrieving revision 1.5 diff -u -r1.5 JavaProjectGeneratorTest.java --- freeform/test/unit/src/org/netbeans/modules/java/freeform/JavaProjectGeneratorTest.java 25 Mar 2005 11:06:45 -0000 1.5 +++ freeform/test/unit/src/org/netbeans/modules/java/freeform/JavaProjectGeneratorTest.java 20 Apr 2005 15:09:06 -0000 @@ -895,18 +895,18 @@ PropertyEvaluator evaluator = PropertyUtils.sequentialPropertyEvaluator(null, new PropertyProvider[]{ PropertyUtils.fixedPropertyProvider(m)}); - List exports = JavaProjectGenerator.guessExports(evaluator, targets, units); + List exports = JavaProjectGenerator.guessExports(evaluator, getWorkDir(), targets, units); assertEquals("one export was created even though build script is not in project folder", 1, exports.size()); // XXX test stuff about that export m.put("ant", "etc/antScript"); evaluator = PropertyUtils.sequentialPropertyEvaluator(null, new PropertyProvider[]{ PropertyUtils.fixedPropertyProvider(m)}); - exports = JavaProjectGenerator.guessExports(evaluator, targets, units); + exports = JavaProjectGenerator.guessExports(evaluator, getWorkDir(), targets, units); assertEquals("one export was created", 1, exports.size()); tm.script = null; - exports = JavaProjectGenerator.guessExports(evaluator, targets, units); + exports = JavaProjectGenerator.guessExports(evaluator, getWorkDir(), targets, units); assertEquals("one export was created", 1, exports.size()); JavaProjectGenerator.Export e = (JavaProjectGenerator.Export)exports.get(0); assertEquals("export is properly configured", "jar", e.type); @@ -915,44 +915,49 @@ assertEquals("export is properly configured", "target-1", e.buildTarget); tm.targets.add("target-2"); - exports = JavaProjectGenerator.guessExports(evaluator, targets, units); + exports = JavaProjectGenerator.guessExports(evaluator, getWorkDir(), targets, units); assertEquals("no export was created when there are two targets", 0, exports.size()); tm.targets.remove("target-2"); - exports = JavaProjectGenerator.guessExports(evaluator, targets, units); + exports = JavaProjectGenerator.guessExports(evaluator, getWorkDir(), targets, units); assertEquals("one export was created", 1, exports.size()); tm.name = "buildXX"; - exports = JavaProjectGenerator.guessExports(evaluator, targets, units); + exports = JavaProjectGenerator.guessExports(evaluator, getWorkDir(), targets, units); assertEquals("no export was created when there is no action with build name", 0, exports.size()); tm.name = "build"; - exports = JavaProjectGenerator.guessExports(evaluator, targets, units); + exports = JavaProjectGenerator.guessExports(evaluator, getWorkDir(), targets, units); assertEquals("one export was created", 1, exports.size()); JavaProjectGenerator.JavaCompilationUnit cu2 = new JavaProjectGenerator.JavaCompilationUnit(); cu2.output = new ArrayList(); cu2.output.add("build/classes"); units.add(cu2); - exports = JavaProjectGenerator.guessExports(evaluator, targets, units); - assertEquals("one export was created", 1, exports.size()); + exports = JavaProjectGenerator.guessExports(evaluator, getWorkDir(), targets, units); + assertEquals("two exports was created", 2, exports.size()); cu2.output.add("dist/proj.jar"); cu2.output.add("dist/proj2.jar"); tm.script = "antScript"; - exports = JavaProjectGenerator.guessExports(evaluator, targets, units); - assertEquals("two exports were created", 3, exports.size()); + exports = JavaProjectGenerator.guessExports(evaluator, getWorkDir(), targets, units); + assertEquals("four exports were created", 4, exports.size()); e = (JavaProjectGenerator.Export)exports.get(0); assertEquals("export is properly configured", "jar", e.type); assertEquals("export is properly configured", "${outputfile}", e.location); assertEquals("export is properly configured", "antScript", e.script); assertEquals("export is properly configured", "target-1", e.buildTarget); e = (JavaProjectGenerator.Export)exports.get(1); + assertEquals("export is properly configured", "folder", e.type); + assertEquals("export is properly configured", "build/classes", e.location); + assertEquals("export is properly configured", "antScript", e.script); + assertEquals("export is properly configured", "target-1", e.buildTarget); + e = (JavaProjectGenerator.Export)exports.get(2); assertEquals("export is properly configured", "jar", e.type); assertEquals("export is properly configured", "dist/proj.jar", e.location); assertEquals("export is properly configured", "antScript", e.script); assertEquals("export is properly configured", "target-1", e.buildTarget); - e = (JavaProjectGenerator.Export)exports.get(2); + e = (JavaProjectGenerator.Export)exports.get(3); assertEquals("export is properly configured", "jar", e.type); assertEquals("export is properly configured", "dist/proj2.jar", e.location); assertEquals("export is properly configured", "antScript", e.script); @@ -986,11 +991,13 @@ Element el = helper.getPrimaryConfigurationData(true); List subElements = Util.findSubElements(el); // 4, i.e. name, two exports and one view of build.xml file - assertEquals(4, subElements.size()); + assertEquals(5, subElements.size()); // compare first compilation unit Element el2 = (Element)subElements.get(0); assertElement(el2, "name", null); el2 = (Element)subElements.get(1); + assertElement(el2, "properties", null); + el2 = (Element)subElements.get(2); assertElement(el2, "export", null); List l1 = Util.findSubElements(el2); assertEquals(5, l1.size()); @@ -998,14 +1005,14 @@ new String[]{"type", "location", "script", "build-target", "clean-target"}, new String[]{"jar", "path/smth.jar", "someScript", "build_target", "clean_target"}); // compare second compilation unit - el2 = (Element)subElements.get(2); + el2 = (Element)subElements.get(3); assertElement(el2, "export", null); l1 = Util.findSubElements(el2); assertEquals(3, l1.size()); assertElementArray(l1, new String[]{"type", "location", "build-target"}, new String[]{"jar", "something/else.jar", "bldtrg"}); - el2 = (Element)subElements.get(3); + el2 = (Element)subElements.get(4); assertElement(el2, "view", null); // validate against schema: ProjectManager.getDefault().saveAllProjects(); @@ -1024,18 +1031,20 @@ el = helper.getPrimaryConfigurationData(true); subElements = Util.findSubElements(el); // 3, i.e. name, export and one view of build.xml file - assertEquals(3, subElements.size()); + assertEquals(4, subElements.size()); // compare first compilation unit el2 = (Element)subElements.get(0); assertElement(el2, "name", null); el2 = (Element)subElements.get(1); + assertElement(el2, "properties", null); + el2 = (Element)subElements.get(2); assertElement(el2, "export", null); l1 = Util.findSubElements(el2); assertEquals(3, l1.size()); assertElementArray(l1, new String[]{"type", "location", "build-target"}, new String[]{"jar", "aaa/bbb.jar", "ccc"}); - el2 = (Element)subElements.get(2); + el2 = (Element)subElements.get(3); assertElement(el2, "view", null); // validate against schema: ProjectManager.getDefault().saveAllProjects(); Index: j2seproject/src/org/netbeans/modules/java/j2seproject/ui/customizer/AntArtifactChooser.java =================================================================== RCS file: /cvs/java/j2seproject/src/org/netbeans/modules/java/j2seproject/ui/customizer/AntArtifactChooser.java,v retrieving revision 1.12 diff -u -r1.12 AntArtifactChooser.java --- j2seproject/src/org/netbeans/modules/java/j2seproject/ui/customizer/AntArtifactChooser.java 3 Feb 2005 11:36:46 -0000 1.12 +++ j2seproject/src/org/netbeans/modules/java/j2seproject/ui/customizer/AntArtifactChooser.java 20 Apr 2005 15:09:06 -0000 @@ -20,6 +20,10 @@ import java.io.File; import java.io.IOException; import java.net.URI; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; import javax.swing.DefaultListModel; import javax.swing.JFileChooser; import javax.swing.JPanel; @@ -44,12 +48,12 @@ */ public class AntArtifactChooser extends JPanel implements PropertyChangeListener { - // XXX to become an array later - private String artifactType; + + private String[] artifactTypes; /** Creates new form JarArtifactChooser */ - public AntArtifactChooser( String artifactType, JFileChooser chooser ) { - this.artifactType = artifactType; + public AntArtifactChooser( String[] artifactTypes, JFileChooser chooser ) { + this.artifactTypes = artifactTypes; initComponents(); jListArtifacts.setModel( new DefaultListModel() ); @@ -154,13 +158,17 @@ jTextFieldName.setText(project == null ? "" : ProjectUtils.getInformation(project).getDisplayName()); //NOI18N if ( project != null ) { - - AntArtifact artifacts[] = AntArtifactQuery.findArtifactsByType( project, artifactType ); - - for( int i = 0; i < artifacts.length; i++ ) { - URI uris[] = artifacts[i].getArtifactLocations(); + + List/**/ artifacts = new ArrayList (); + for (int i=0; i - + + + Added artifact type representing folder + + + + + +

+ The freeform project may have as its output a folder rather than a jar archive. + The JavaProjectConstants was extended by the ARTIFACT_TYPE_FOLDER constant to represent such an output. +

+
+ + +
Added a new factory method for creating the name/package chooser wizard panel into the templates SPI. Index: project/src/org/netbeans/api/java/project/JavaProjectConstants.java =================================================================== RCS file: /cvs/java/project/src/org/netbeans/api/java/project/JavaProjectConstants.java,v retrieving revision 1.5 diff -u -r1.5 JavaProjectConstants.java --- project/src/org/netbeans/api/java/project/JavaProjectConstants.java 18 Jun 2004 03:00:14 -0000 1.5 +++ project/src/org/netbeans/api/java/project/JavaProjectConstants.java 20 Apr 2005 15:09:07 -0000 @@ -33,6 +33,15 @@ * @see org.netbeans.api.project.ant.AntArtifact */ public static final String ARTIFACT_TYPE_JAR = "jar"; // NOI18N + + + /** + * Standard artifact type representing a folder containing classes, presumably + * used as a Java library of some kind. + * @see org.netbeans.api.project.ant.AntArtifact + * @since org.netbeans.modules.java.project/1 1.4 + */ + public static final String ARTIFACT_TYPE_FOLDER = "folder"; //NOI18N /** * Standard command for running Javadoc on a project.