Quellcode durchsuchen

move sdk to trunk

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@6972 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
nor..67 vor 14 Jahren
Commit
fbeb17e033
100 geänderte Dateien mit 6230 neuen und 0 gelöschten Zeilen
  1. 1 0
      BasicGameTemplate/MANIFEST.MF
  2. 76 0
      BasicGameTemplate/build.xml
  3. 22 0
      BasicGameTemplate/master-application.jnlp
  4. 8 0
      BasicGameTemplate/nbproject/genfiles.properties
  5. 77 0
      BasicGameTemplate/nbproject/project.properties
  6. 13 0
      BasicGameTemplate/nbproject/project.xml
  7. 44 0
      BasicGameTemplate/src/mygame/Main.java
  8. 74 0
      JME3TestsTemplate/build.xml
  9. 880 0
      JME3TestsTemplate/nbproject/build-impl.xml
  10. 8 0
      JME3TestsTemplate/nbproject/genfiles.properties
  11. 76 0
      JME3TestsTemplate/nbproject/project.properties
  12. 13 0
      JME3TestsTemplate/nbproject/project.xml
  13. 41 0
      README.TXT
  14. BIN
      ant-lib/ant-contrib.jar
  15. BIN
      ant-lib/ant-deb.jar
  16. BIN
      ant-lib/ant-jme.jar
  17. 7 0
      branding/core/core.jar/org/netbeans/core/startup/Bundle.properties
  18. BIN
      branding/core/core.jar/org/netbeans/core/startup/frame.gif
  19. BIN
      branding/core/core.jar/org/netbeans/core/startup/frame32.gif
  20. BIN
      branding/core/core.jar/org/netbeans/core/startup/frame48.gif
  21. BIN
      branding/core/core.jar/org/netbeans/core/startup/splash.gif
  22. 21 0
      branding/modules/ext/updater.jar/org/netbeans/updater/Bundle.properties
  23. BIN
      branding/modules/ext/updater.jar/org/netbeans/updater/resources/updatersplash.gif
  24. 2 0
      branding/modules/org-netbeans-core-windows.jar/org/netbeans/core/windows/view/ui/Bundle.properties
  25. 2 0
      branding/modules/org-netbeans-core.jar/org/netbeans/core/ui/Bundle.properties
  26. BIN
      branding/modules/org-netbeans-modules-java-j2seproject.jar/org/netbeans/modules/java/j2seproject/ui/resources/j2seProject.png
  27. 265 0
      build.xml
  28. 2 0
      debscripts/postrm
  29. 1284 0
      harness/README
  30. BIN
      harness/antlib/bindex-2.2.jar
  31. BIN
      harness/antlib/jsearch-2.0_05.jar
  32. 303 0
      harness/build.xml
  33. 1028 0
      harness/common.xml
  34. 9 0
      harness/config/Modules/org-netbeans-insane.xml
  35. 9 0
      harness/config/Modules/org-netbeans-libs-nbi-ant.xml
  36. 9 0
      harness/config/Modules/org-netbeans-libs-nbi-engine.xml
  37. 9 0
      harness/config/Modules/org-netbeans-modules-apisupport-harness.xml
  38. 9 0
      harness/config/Modules/org-netbeans-modules-apisupport-tc-cobertura.xml
  39. 9 0
      harness/config/Modules/org-netbeans-modules-jellytools-platform.xml
  40. 9 0
      harness/config/Modules/org-netbeans-modules-jemmy.xml
  41. 9 0
      harness/config/Modules/org-netbeans-modules-nbjunit.xml
  42. 30 0
      harness/etc/Info.plist
  43. 14 0
      harness/etc/app.conf
  44. BIN
      harness/etc/applicationIcon.icns
  45. 242 0
      harness/jdk.xml
  46. 454 0
      harness/jnlp.xml
  47. BIN
      harness/jnlp/jnlp-launcher.jar
  48. BIN
      harness/launchers/app.exe
  49. 104 0
      harness/launchers/app.sh
  50. BIN
      harness/launchers/pre7_app.exe
  51. BIN
      harness/launchers/pre7_app_w.exe
  52. BIN
      harness/modules/ext/jemmy-2.3.0.0.jar
  53. BIN
      harness/modules/ext/locale/nbi-engine_ja.jar
  54. BIN
      harness/modules/ext/locale/nbi-engine_pt_BR.jar
  55. BIN
      harness/modules/ext/locale/nbi-engine_zh_CN.jar
  56. BIN
      harness/modules/ext/nbi-ant-tasks.jar
  57. BIN
      harness/modules/ext/nbi-engine.jar
  58. BIN
      harness/modules/ext/nbi-registries-management.jar
  59. BIN
      harness/modules/locale/org-netbeans-insane_ja.jar
  60. BIN
      harness/modules/locale/org-netbeans-insane_pt_BR.jar
  61. BIN
      harness/modules/locale/org-netbeans-insane_zh_CN.jar
  62. BIN
      harness/modules/locale/org-netbeans-libs-nbi-ant_ja.jar
  63. BIN
      harness/modules/locale/org-netbeans-libs-nbi-ant_pt_BR.jar
  64. BIN
      harness/modules/locale/org-netbeans-libs-nbi-ant_zh_CN.jar
  65. BIN
      harness/modules/locale/org-netbeans-libs-nbi-engine_ja.jar
  66. BIN
      harness/modules/locale/org-netbeans-libs-nbi-engine_pt_BR.jar
  67. BIN
      harness/modules/locale/org-netbeans-libs-nbi-engine_zh_CN.jar
  68. BIN
      harness/modules/locale/org-netbeans-modules-apisupport-harness_ja.jar
  69. BIN
      harness/modules/locale/org-netbeans-modules-apisupport-harness_pt_BR.jar
  70. BIN
      harness/modules/locale/org-netbeans-modules-apisupport-harness_zh_CN.jar
  71. BIN
      harness/modules/locale/org-netbeans-modules-apisupport-tc-cobertura_ja.jar
  72. BIN
      harness/modules/locale/org-netbeans-modules-apisupport-tc-cobertura_pt_BR.jar
  73. BIN
      harness/modules/locale/org-netbeans-modules-apisupport-tc-cobertura_zh_CN.jar
  74. BIN
      harness/modules/locale/org-netbeans-modules-jellytools-platform_ja.jar
  75. BIN
      harness/modules/locale/org-netbeans-modules-jellytools-platform_pt_BR.jar
  76. BIN
      harness/modules/locale/org-netbeans-modules-jellytools-platform_zh_CN.jar
  77. BIN
      harness/modules/locale/org-netbeans-modules-jemmy_ja.jar
  78. BIN
      harness/modules/locale/org-netbeans-modules-jemmy_pt_BR.jar
  79. BIN
      harness/modules/locale/org-netbeans-modules-jemmy_zh_CN.jar
  80. BIN
      harness/modules/locale/org-netbeans-modules-nbjunit_ja.jar
  81. BIN
      harness/modules/locale/org-netbeans-modules-nbjunit_pt_BR.jar
  82. BIN
      harness/modules/locale/org-netbeans-modules-nbjunit_zh_CN.jar
  83. BIN
      harness/modules/org-netbeans-insane.jar
  84. BIN
      harness/modules/org-netbeans-libs-nbi-ant.jar
  85. BIN
      harness/modules/org-netbeans-libs-nbi-engine.jar
  86. BIN
      harness/modules/org-netbeans-modules-apisupport-harness.jar
  87. BIN
      harness/modules/org-netbeans-modules-apisupport-tc-cobertura.jar
  88. BIN
      harness/modules/org-netbeans-modules-jellytools-platform.jar
  89. BIN
      harness/modules/org-netbeans-modules-jemmy.jar
  90. BIN
      harness/modules/org-netbeans-modules-nbjunit.jar
  91. 48 0
      harness/nbi/stub/build.properties
  92. 202 0
      harness/nbi/stub/build.xml
  93. 74 0
      harness/nbi/stub/ext/components/products/helloworld/build.xml
  94. 41 0
      harness/nbi/stub/ext/components/products/helloworld/data/Bundle.properties
  95. BIN
      harness/nbi/stub/ext/components/products/helloworld/data/icon.png
  96. BIN
      harness/nbi/stub/ext/components/products/helloworld/data/icon48.png
  97. 1 0
      harness/nbi/stub/ext/components/products/helloworld/manifest.mf
  98. 631 0
      harness/nbi/stub/ext/components/products/helloworld/nbproject/build-impl.xml
  99. 8 0
      harness/nbi/stub/ext/components/products/helloworld/nbproject/genfiles.properties
  100. 62 0
      harness/nbi/stub/ext/components/products/helloworld/nbproject/project.properties

+ 1 - 0
BasicGameTemplate/MANIFEST.MF

@@ -0,0 +1 @@
+X-Comment: Created with jMonkeyPlatform

+ 76 - 0
BasicGameTemplate/build.xml

@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- You may freely edit this file. See commented blocks below for -->
+<!-- some examples of how to customize the build. -->
+<!-- (If you delete it and reopen the project it will be recreated.) -->
+<!-- By default, only the Clean and Build commands use this build script. -->
+<!-- Commands such as Run, Debug, and Test only use this build script if -->
+<!-- the Compile on Save feature is turned off for the project. -->
+<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
+<!-- in the project's Project Properties dialog box.-->
+<project name="BasicGameTemplate" default="default" basedir=".">
+    <description>Builds, tests, and runs the project BasicGameTemplate.</description>
+    <import file="nbproject/build-impl.xml"/>
+
+    <!--
+
+    There exist several targets which are by default empty and which can be 
+    used for execution of your tasks. These targets are usually executed 
+    before and after some main targets. They are: 
+
+      -pre-init:                 called before initialization of project properties
+      -post-init:                called after initialization of project properties
+      -pre-compile:              called before javac compilation
+      -post-compile:             called after javac compilation
+      -pre-compile-single:       called before javac compilation of single file
+      -post-compile-single:      called after javac compilation of single file
+      -pre-compile-test:         called before javac compilation of JUnit tests
+      -post-compile-test:        called after javac compilation of JUnit tests
+      -pre-compile-test-single:  called before javac compilation of single JUnit test
+      -post-compile-test-single: called after javac compilation of single JUunit test
+      -pre-jar:                  called before JAR building
+      -post-jar:                 called after JAR building
+      -post-clean:               called after cleaning build products
+
+    (Targets beginning with '-' are not intended to be called on their own.)
+
+    Example of inserting an obfuscator after compilation could look like this:
+
+        <target name="-post-compile">
+            <obfuscate>
+                <fileset dir="${build.classes.dir}"/>
+            </obfuscate>
+        </target>
+
+    For list of available properties check the imported 
+    nbproject/build-impl.xml file. 
+
+
+    Another way to customize the build is by overriding existing main targets.
+    The targets of interest are: 
+
+      -init-macrodef-javac:     defines macro for javac compilation
+      -init-macrodef-junit:     defines macro for junit execution
+      -init-macrodef-debug:     defines macro for class debugging
+      -init-macrodef-java:      defines macro for class execution
+      -do-jar-with-manifest:    JAR building (if you are using a manifest)
+      -do-jar-without-manifest: JAR building (if you are not using a manifest)
+      run:                      execution of project 
+      -javadoc-build:           Javadoc generation
+      test-report:              JUnit report generation
+
+    An example of overriding the target for project execution could look like this:
+
+        <target name="run" depends="BasicGameTemplate-impl.jar">
+            <exec dir="bin" executable="launcher.exe">
+                <arg file="${dist.jar}"/>
+            </exec>
+        </target>
+
+    Notice that the overridden target depends on the jar target and not only on 
+    the compile target as the regular run target does. Again, for a list of available 
+    properties which you can use, check the target you are overriding in the
+    nbproject/build-impl.xml file. 
+
+    -->
+    
+</project>

+ 22 - 0
BasicGameTemplate/master-application.jnlp

@@ -0,0 +1,22 @@
+<jnlp spec="1.0+" codebase="${jnlp.codebase}" href="launch.jnlp">
+    <information>
+        <title>${APPLICATION.TITLE}</title>
+        <vendor>${APPLICATION.VENDOR}</vendor>
+        <homepage href="${APPLICATION.HOMEPAGE}"/>
+        <description>${APPLICATION.DESC}</description>
+        <description kind="short">${APPLICATION.DESC.SHORT}</description>
+<!--${JNLP.ICONS}-->
+<!--${JNLP.OFFLINE.ALLOWED}-->
+    </information>
+<!--${JNLP.SECURITY}-->
+    <resources>
+<!--${JNLP.RESOURCES.RUNTIME}-->
+<!--${JNLP.RESOURCES.MAIN.JAR}-->
+<!--${JNLP.RESOURCES.JARS}-->
+<jar href='lib/assets.jar'/>
+<!--${JNLP.RESOURCES.EXTENSIONS}-->
+    </resources>
+    <application-desc main-class="${jnlp.main.class}">
+<!--${JNLP.APPLICATION.ARGS}-->
+    </application-desc>
+</jnlp>

+ 8 - 0
BasicGameTemplate/nbproject/genfiles.properties

@@ -0,0 +1,8 @@
+build.xml.data.CRC32=94bf7c61
+build.xml.script.CRC32=79a29eb7
[email protected]
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=94bf7c61
+nbproject/build-impl.xml.script.CRC32=0f295843
+nbproject/[email protected]

+ 77 - 0
BasicGameTemplate/nbproject/project.properties

@@ -0,0 +1,77 @@
+application.title=MyGame
+application.vendor=MyCompany
+assets.jar.name=assets.jar
+assets.excludes=**/*.mesh\.xml,**/*.skeleton\.xml,**/*.scene,**/*.material,**/*.obj,**/*.mtl,**/*.j3odata
+assets.folder.name=assets
+assets.compress=true
+build.classes.dir=${build.dir}/classes
+build.classes.excludes=**/*.java,**/*.form
+# This directory is removed when the project is cleaned:
+build.dir=build
+build.generated.dir=${build.dir}/generated
+build.generated.sources.dir=${build.dir}/generated-sources
+# Only compile against the classpath explicitly listed here:
+build.sysclasspath=ignore
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+# Uncomment to specify the preferred debugger connection transport:
+#debug.transport=dt_socket
+debug.classpath=\
+    ${run.classpath}
+debug.test.classpath=\
+    ${run.test.classpath}
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/${application.title}.jar
+dist.javadoc.dir=${dist.dir}/javadoc
+endorsed.classpath=
+excludes=
+includes=**
+jar.compress=false
+javac.classpath=\
+    ${libs.jme3.classpath}:\
+    ${libs.jme3-libraries.classpath}
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.deprecation=false
+javac.source=1.5
+javac.target=1.5
+javac.test.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}:\
+    ${libs.junit.classpath}:\
+    ${libs.junit_4.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=${source.encoding}
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+jaxbwiz.endorsed.dirs="${netbeans.home}/../ide12/modules/ext/jaxb/api"
+jnlp.codebase.type=local
+jnlp.descriptor=application
+jnlp.enabled=false
+jnlp.offline-allowed=false
+jnlp.signed=false
+main.class=mygame.Main
+meta.inf.dir=${src.dir}/META-INF
+manifest.file=MANIFEST.MF
+platform.active=default_platform
+run.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}:\
+    ${assets.folder.name}
+# Space-separated list of JVM arguments used when running the project
+# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
+# or test-sys-prop.name=value to set system properties for unit tests):
+run.jvmargs=
+run.test.classpath=\
+    ${javac.test.classpath}:\
+    ${build.test.classes.dir}
+source.encoding=UTF-8
+src.dir=src

+ 13 - 0
BasicGameTemplate/nbproject/project.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.java.j2seproject</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/j2se-project/3">
+            <name>BasicGameTemplate</name>
+            <source-roots>
+                <root id="src.dir"/>
+            </source-roots>
+            <test-roots/>
+        </data>
+    </configuration>
+</project>

+ 44 - 0
BasicGameTemplate/src/mygame/Main.java

@@ -0,0 +1,44 @@
+package mygame;
+
+import com.jme3.app.SimpleApplication;
+import com.jme3.material.Material;
+import com.jme3.math.ColorRGBA;
+import com.jme3.math.Vector3f;
+import com.jme3.renderer.RenderManager;
+import com.jme3.scene.Geometry;
+import com.jme3.scene.shape.Box;
+
+/**
+ * test
+ * @author normenhansen
+ */
+public class Main extends SimpleApplication {
+
+    public static void main(String[] args) {
+        Main app = new Main();
+        app.start();
+    }
+
+    @Override
+    public void simpleInitApp() {
+        Box b = new Box(Vector3f.ZERO, 1, 1, 1);
+        Geometry geom = new Geometry("Box", b);
+        geom.updateModelBound();
+
+        Material mat = new Material(assetManager, "Common/MatDefs/Misc/SolidColor.j3md");
+        mat.setColor("m_Color", ColorRGBA.Blue);
+        geom.setMaterial(mat);
+
+        rootNode.attachChild(geom);
+    }
+
+    @Override
+    public void simpleUpdate(float tpf) {
+        //TODO: add update code
+    }
+
+    @Override
+    public void simpleRender(RenderManager rm) {
+        //TODO: add render code
+    }
+}

+ 74 - 0
JME3TestsTemplate/build.xml

@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- You may freely edit this file. See commented blocks below for -->
+<!-- some examples of how to customize the build. -->
+<!-- (If you delete it and reopen the project it will be recreated.) -->
+<!-- By default, only the Clean and Build commands use this build script. -->
+<!-- Commands such as Run, Debug, and Test only use this build script if -->
+<!-- the Compile on Save feature is turned off for the project. -->
+<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
+<!-- in the project's Project Properties dialog box.-->
+<project name="JME3TestsTemplate" default="default" basedir=".">
+    <description>Builds, tests, and runs the project JME3TestsTemplate.</description>
+    <import file="nbproject/build-impl.xml"/>
+    <!--
+
+    There exist several targets which are by default empty and which can be 
+    used for execution of your tasks. These targets are usually executed 
+    before and after some main targets. They are: 
+
+      -pre-init:                 called before initialization of project properties
+      -post-init:                called after initialization of project properties
+      -pre-compile:              called before javac compilation
+      -post-compile:             called after javac compilation
+      -pre-compile-single:       called before javac compilation of single file
+      -post-compile-single:      called after javac compilation of single file
+      -pre-compile-test:         called before javac compilation of JUnit tests
+      -post-compile-test:        called after javac compilation of JUnit tests
+      -pre-compile-test-single:  called before javac compilation of single JUnit test
+      -post-compile-test-single: called after javac compilation of single JUunit test
+      -pre-jar:                  called before JAR building
+      -post-jar:                 called after JAR building
+      -post-clean:               called after cleaning build products
+
+    (Targets beginning with '-' are not intended to be called on their own.)
+
+    Example of inserting an obfuscator after compilation could look like this:
+
+        <target name="-post-compile">
+            <obfuscate>
+                <fileset dir="${build.classes.dir}"/>
+            </obfuscate>
+        </target>
+
+    For list of available properties check the imported 
+    nbproject/build-impl.xml file. 
+
+
+    Another way to customize the build is by overriding existing main targets.
+    The targets of interest are: 
+
+      -init-macrodef-javac:     defines macro for javac compilation
+      -init-macrodef-junit:     defines macro for junit execution
+      -init-macrodef-debug:     defines macro for class debugging
+      -init-macrodef-java:      defines macro for class execution
+      -do-jar-with-manifest:    JAR building (if you are using a manifest)
+      -do-jar-without-manifest: JAR building (if you are not using a manifest)
+      run:                      execution of project 
+      -javadoc-build:           Javadoc generation
+      test-report:              JUnit report generation
+
+    An example of overriding the target for project execution could look like this:
+
+        <target name="run" depends="JME3TestsTemplate-impl.jar">
+            <exec dir="bin" executable="launcher.exe">
+                <arg file="${dist.jar}"/>
+            </exec>
+        </target>
+
+    Notice that the overridden target depends on the jar target and not only on 
+    the compile target as the regular run target does. Again, for a list of available 
+    properties which you can use, check the target you are overriding in the
+    nbproject/build-impl.xml file. 
+
+    -->
+</project>

+ 880 - 0
JME3TestsTemplate/nbproject/build-impl.xml

@@ -0,0 +1,880 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+*** GENERATED FROM project.xml - DO NOT EDIT  ***
+***         EDIT ../build.xml INSTEAD         ***
+
+For the purpose of easier reading the script
+is divided into following sections:
+
+  - initialization
+  - compilation
+  - jar
+  - execution
+  - debugging
+  - javadoc
+  - junit compilation
+  - junit execution
+  - junit debugging
+  - applet
+  - cleanup
+
+        -->
+<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="JME3TestsTemplate-impl">
+    <fail message="Please build using Ant 1.7.1 or higher.">
+        <condition>
+            <not>
+                <antversion atleast="1.7.1"/>
+            </not>
+        </condition>
+    </fail>
+    <target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
+    <!-- 
+                ======================
+                INITIALIZATION SECTION 
+                ======================
+            -->
+    <target name="-pre-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init" name="-init-private">
+        <property file="nbproject/private/config.properties"/>
+        <property file="nbproject/private/configs/${config}.properties"/>
+        <property file="nbproject/private/private.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private" name="-init-user">
+        <property file="${user.properties.file}"/>
+        <!-- The two properties below are usually overridden -->
+        <!-- by the active platform. Just a fallback. -->
+        <property name="default.javac.source" value="1.4"/>
+        <property name="default.javac.target" value="1.4"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user" name="-init-project">
+        <property file="nbproject/configs/${config}.properties"/>
+        <property file="nbproject/project.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
+        <available file="${manifest.file}" property="manifest.available"/>
+        <available file="${application.splash}" property="splashscreen.available"/>
+        <condition property="main.class.available">
+            <and>
+                <isset property="main.class"/>
+                <not>
+                    <equals arg1="${main.class}" arg2="" trim="true"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="manifest.available+main.class">
+            <and>
+                <isset property="manifest.available"/>
+                <isset property="main.class.available"/>
+            </and>
+        </condition>
+        <condition property="do.mkdist">
+            <and>
+                <isset property="libs.CopyLibs.classpath"/>
+                <not>
+                    <istrue value="${mkdist.disabled}"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="manifest.available+main.class+mkdist.available">
+            <and>
+                <istrue value="${manifest.available+main.class}"/>
+                <isset property="do.mkdist"/>
+            </and>
+        </condition>
+        <condition property="manifest.available+main.class+mkdist.available+splashscreen.available">
+            <and>
+                <istrue value="${manifest.available+main.class+mkdist.available}"/>
+                <istrue value="${splashscreen.available}"/>
+            </and>
+        </condition>
+        <condition property="do.archive">
+            <not>
+                <istrue value="${jar.archive.disabled}"/>
+            </not>
+        </condition>
+        <condition property="do.archive+manifest.available">
+            <and>
+                <isset property="manifest.available"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+manifest.available+main.class">
+            <and>
+                <istrue value="${manifest.available+main.class}"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+manifest.available+main.class+mkdist.available">
+            <and>
+                <istrue value="${manifest.available+main.class+mkdist.available}"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="do.archive+manifest.available+main.class+mkdist.available+splashscreen.available">
+            <and>
+                <istrue value="${manifest.available+main.class+mkdist.available+splashscreen.available}"/>
+                <istrue value="${do.archive}"/>
+            </and>
+        </condition>
+        <condition property="have.tests">
+            <or/>
+        </condition>
+        <condition property="have.sources">
+            <or>
+                <available file="${src.dir}"/>
+            </or>
+        </condition>
+        <condition property="netbeans.home+have.tests">
+            <and>
+                <isset property="netbeans.home"/>
+                <isset property="have.tests"/>
+            </and>
+        </condition>
+        <condition property="no.javadoc.preview">
+            <and>
+                <isset property="javadoc.preview"/>
+                <isfalse value="${javadoc.preview}"/>
+            </and>
+        </condition>
+        <property name="run.jvmargs" value=""/>
+        <property name="javac.compilerargs" value=""/>
+        <property name="work.dir" value="${basedir}"/>
+        <condition property="no.deps">
+            <and>
+                <istrue value="${no.dependencies}"/>
+            </and>
+        </condition>
+        <property name="javac.debug" value="true"/>
+        <property name="javadoc.preview" value="true"/>
+        <property name="application.args" value=""/>
+        <property name="source.encoding" value="${file.encoding}"/>
+        <property name="runtime.encoding" value="${source.encoding}"/>
+        <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
+            <and>
+                <isset property="javadoc.encoding"/>
+                <not>
+                    <equals arg1="${javadoc.encoding}" arg2=""/>
+                </not>
+            </and>
+        </condition>
+        <property name="javadoc.encoding.used" value="${source.encoding}"/>
+        <property name="includes" value="**"/>
+        <property name="excludes" value=""/>
+        <property name="do.depend" value="false"/>
+        <condition property="do.depend.true">
+            <istrue value="${do.depend}"/>
+        </condition>
+        <path id="endorsed.classpath.path" path="${endorsed.classpath}"/>
+        <condition else="" property="endorsed.classpath.cmd.line.arg" value="-Xbootclasspath/p:'${toString:endorsed.classpath.path}'">
+            <length length="0" string="${endorsed.classpath}" when="greater"/>
+        </condition>
+        <property name="javac.fork" value="false"/>
+        <property name="jar.index" value="false"/>
+        <available file="${meta.inf.dir}/persistence.xml" property="has.persistence.xml"/>
+    </target>
+    <target name="-post-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
+        <fail unless="src.dir">Must set src.dir</fail>
+        <fail unless="build.dir">Must set build.dir</fail>
+        <fail unless="dist.dir">Must set dist.dir</fail>
+        <fail unless="build.classes.dir">Must set build.classes.dir</fail>
+        <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
+        <fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
+        <fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
+        <fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
+        <fail unless="dist.jar">Must set dist.jar</fail>
+    </target>
+    <target name="-init-macrodef-property">
+        <macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute name="name"/>
+            <attribute name="value"/>
+            <sequential>
+                <property name="@{name}" value="${@{value}}"/>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-macrodef-javac-with-processors">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <attribute default="${javac.processorpath}" name="processorpath"/>
+            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="${javac.debug}" name="debug"/>
+            <attribute default="${empty.dir}" name="sourcepath"/>
+            <attribute default="${empty.dir}" name="gensrcdir"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.dir}/empty" name="empty.dir"/>
+                <mkdir dir="${empty.dir}"/>
+                <mkdir dir="@{apgeneratedsrcdir}"/>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+                    <src>
+                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+                            <include name="*"/>
+                        </dirset>
+                    </src>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.compilerargs}"/>
+                    <compilerarg value="-processorpath"/>
+                    <compilerarg path="@{processorpath}:${empty.dir}"/>
+                    <compilerarg line="${ap.processors.internal}"/>
+                    <compilerarg line="${annotation.processing.processor.options}"/>
+                    <compilerarg value="-s"/>
+                    <compilerarg path="@{apgeneratedsrcdir}"/>
+                    <compilerarg line="${ap.proc.none.internal}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-ap-cmdline-properties" name="-init-macrodef-javac-without-processors" unless="ap.supported.internal">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <attribute default="${javac.processorpath}" name="processorpath"/>
+            <attribute default="${build.generated.sources.dir}/ap-source-output" name="apgeneratedsrcdir"/>
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="${javac.debug}" name="debug"/>
+            <attribute default="${empty.dir}" name="sourcepath"/>
+            <attribute default="${empty.dir}" name="gensrcdir"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.dir}/empty" name="empty.dir"/>
+                <mkdir dir="${empty.dir}"/>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" fork="${javac.fork}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}" tempdir="${java.io.tmpdir}">
+                    <src>
+                        <dirset dir="@{gensrcdir}" erroronmissingdir="false">
+                            <include name="*"/>
+                        </dirset>
+                    </src>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <compilerarg line="${javac.compilerargs}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-macrodef-javac-with-processors,-init-macrodef-javac-without-processors" name="-init-macrodef-javac">
+        <macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <sequential>
+                <depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </depend>
+            </sequential>
+        </macrodef>
+        <macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <sequential>
+                <fail unless="javac.includes">Must set javac.includes</fail>
+                <pathconvert pathsep="," property="javac.includes.binary">
+                    <path>
+                        <filelist dir="@{destdir}" files="${javac.includes}"/>
+                    </path>
+                    <globmapper from="*.java" to="*.class"/>
+                </pathconvert>
+                <delete>
+                    <files includes="${javac.includes.binary}"/>
+                </delete>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-junit">
+        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <sequential>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true" tempdir="${build.dir}">
+                    <batchtest todir="${build.test.results.dir}"/>
+                    <classpath>
+                        <path path="${run.test.classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target depends="-init-debug-args" name="-init-macrodef-nbjpda">
+        <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${main.class}" name="name"/>
+            <attribute default="${debug.classpath}" name="classpath"/>
+            <attribute default="" name="stopclassname"/>
+            <sequential>
+                <nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="${debug-transport}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </nbjpdastart>
+            </sequential>
+        </macrodef>
+        <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${build.classes.dir}" name="dir"/>
+            <sequential>
+                <nbjpdareload>
+                    <fileset dir="@{dir}" includes="${fix.classes}">
+                        <include name="${fix.includes}*.class"/>
+                    </fileset>
+                </nbjpdareload>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-debug-args">
+        <property name="version-output" value="java version &quot;${ant.java.version}"/>
+        <condition property="have-jdk-older-than-1.4">
+            <or>
+                <contains string="${version-output}" substring="java version &quot;1.0"/>
+                <contains string="${version-output}" substring="java version &quot;1.1"/>
+                <contains string="${version-output}" substring="java version &quot;1.2"/>
+                <contains string="${version-output}" substring="java version &quot;1.3"/>
+            </or>
+        </condition>
+        <condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
+            <istrue value="${have-jdk-older-than-1.4}"/>
+        </condition>
+        <condition else="dt_socket" property="debug-transport-by-os" value="dt_shmem">
+            <os family="windows"/>
+        </condition>
+        <condition else="${debug-transport-by-os}" property="debug-transport" value="${debug.transport}">
+            <isset property="debug.transport"/>
+        </condition>
+    </target>
+    <target depends="-init-debug-args" name="-init-macrodef-debug">
+        <macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${main.class}" name="classname"/>
+            <attribute default="${debug.classpath}" name="classpath"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" dir="${work.dir}" fork="true">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=${debug-transport},address=${jpda.address}"/>
+                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-java">
+        <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${main.class}" name="classname"/>
+            <attribute default="${run.classpath}" name="classpath"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" dir="${work.dir}" fork="true">
+                    <jvmarg line="${endorsed.classpath.cmd.line.arg}"/>
+                    <jvmarg value="-Dfile.encoding=${runtime.encoding}"/>
+                    <redirector errorencoding="${runtime.encoding}" inputencoding="${runtime.encoding}" outputencoding="${runtime.encoding}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-copylibs">
+        <macrodef name="copylibs" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <element name="customize" optional="true"/>
+            <sequential>
+                <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+                <pathconvert property="run.classpath.without.build.classes.dir">
+                    <path path="${run.classpath}"/>
+                    <map from="${build.classes.dir.resolved}" to=""/>
+                </pathconvert>
+                <pathconvert pathsep=" " property="jar.classpath">
+                    <path path="${run.classpath.without.build.classes.dir}"/>
+                    <chainedmapper>
+                        <flattenmapper/>
+                        <globmapper from="*" to="lib/*"/>
+                    </chainedmapper>
+                </pathconvert>
+                <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+                <copylibs compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
+                    <fileset dir="${build.classes.dir}"/>
+                    <manifest>
+                        <attribute name="Class-Path" value="${jar.classpath}"/>
+                        <customize/>
+                    </manifest>
+                </copylibs>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-presetdef-jar">
+        <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <jar compress="${jar.compress}" index="${jar.index}" jarfile="${dist.jar}">
+                <j2seproject1:fileset dir="${build.classes.dir}"/>
+            </jar>
+        </presetdef>
+    </target>
+    <target name="-init-ap-cmdline-properties">
+        <property name="annotation.processing.enabled" value="true"/>
+        <property name="annotation.processing.processors.list" value=""/>
+        <property name="annotation.processing.processor.options" value=""/>
+        <property name="annotation.processing.run.all.processors" value="true"/>
+        <property name="javac.processorpath" value="${javac.classpath}"/>
+        <property name="javac.test.processorpath" value="${javac.test.classpath}"/>
+        <condition property="ap.supported.internal" value="true">
+            <not>
+                <matches pattern="1\.[0-5](\..*)?" string="${javac.source}"/>
+            </not>
+        </condition>
+    </target>
+    <target depends="-init-ap-cmdline-properties" if="ap.supported.internal" name="-init-ap-cmdline-supported">
+        <condition else="" property="ap.processors.internal" value="-processor ${annotation.processing.processors.list}">
+            <isfalse value="${annotation.processing.run.all.processors}"/>
+        </condition>
+        <condition else="" property="ap.proc.none.internal" value="-proc:none">
+            <isfalse value="${annotation.processing.enabled}"/>
+        </condition>
+    </target>
+    <target depends="-init-ap-cmdline-properties,-init-ap-cmdline-supported" name="-init-ap-cmdline">
+        <property name="ap.cmd.line.internal" value=""/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar,-init-ap-cmdline" name="init"/>
+    <!--
+                ===================
+                COMPILATION SECTION
+                ===================
+            -->
+    <target name="-deps-jar-init" unless="built-jar.properties">
+        <property location="${build.dir}/built-jar.properties" name="built-jar.properties"/>
+        <delete file="${built-jar.properties}" quiet="true"/>
+    </target>
+    <target if="already.built.jar.${basedir}" name="-warn-already-built-jar">
+        <echo level="warn" message="Cycle detected: JME3TestsTemplate was already built"/>
+    </target>
+    <target depends="init,-deps-jar-init" name="deps-jar" unless="no.deps">
+        <mkdir dir="${build.dir}"/>
+        <touch file="${built-jar.properties}" verbose="false"/>
+        <property file="${built-jar.properties}" prefix="already.built.jar."/>
+        <antcall target="-warn-already-built-jar"/>
+        <propertyfile file="${built-jar.properties}">
+            <entry key="${basedir}" value=""/>
+        </propertyfile>
+    </target>
+    <target depends="init,-check-automatic-build,-clean-after-automatic-build" name="-verify-automatic-build"/>
+    <target depends="init" name="-check-automatic-build">
+        <available file="${build.classes.dir}/.netbeans_automatic_build" property="netbeans.automatic.build"/>
+    </target>
+    <target depends="init" if="netbeans.automatic.build" name="-clean-after-automatic-build">
+        <antcall target="clean"/>
+    </target>
+    <target depends="init,deps-jar" name="-pre-pre-compile">
+        <mkdir dir="${build.classes.dir}"/>
+    </target>
+    <target name="-pre-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="do.depend.true" name="-compile-depend">
+        <pathconvert property="build.generated.subdirs">
+            <dirset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="*"/>
+            </dirset>
+        </pathconvert>
+        <j2seproject3:depend srcdir="${src.dir}:${build.generated.subdirs}"/>
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile, -copy-persistence-xml,-compile-depend" if="have.sources" name="-do-compile">
+        <j2seproject3:javac gensrcdir="${build.generated.sources.dir}"/>
+        <copy todir="${build.classes.dir}">
+            <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target if="has.persistence.xml" name="-copy-persistence-xml">
+        <mkdir dir="${build.classes.dir}/META-INF"/>
+        <copy todir="${build.classes.dir}/META-INF">
+            <fileset dir="${meta.inf.dir}" includes="persistence.xml"/>
+        </copy>
+    </target>
+    <target name="-post-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
+    <target name="-pre-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:force-recompile/>
+        <j2seproject3:javac excludes="" gensrcdir="${build.generated.sources.dir}" includes="${javac.includes}" sourcepath="${src.dir}"/>
+    </target>
+    <target name="-post-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-verify-automatic-build,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
+    <!--
+                ====================
+                JAR BUILDING SECTION
+                ====================
+            -->
+    <target depends="init" name="-pre-pre-jar">
+        <dirname file="${dist.jar}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+    </target>
+    <target name="-pre-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive" name="-do-jar-without-manifest" unless="manifest.available">
+        <j2seproject1:jar/>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive+manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
+        <j2seproject1:jar manifest="${manifest.file}"/>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="do.archive+manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
+        <j2seproject1:jar manifest="${manifest.file}">
+            <j2seproject1:manifest>
+                <j2seproject1:attribute name="Main-Class" value="${main.class}"/>
+            </j2seproject1:manifest>
+        </j2seproject1:jar>
+        <echo>To run this application from the command line without Ant, try:</echo>
+        <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <pathconvert property="run.classpath.with.dist.jar">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
+        </pathconvert>
+        <echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar,-init-macrodef-copylibs" if="do.archive+manifest.available+main.class+mkdist.available+splashscreen.available" name="-do-jar-with-libraries-and-splashscreen">
+        <basename file="${application.splash}" property="splashscreen.basename"/>
+        <mkdir dir="${build.classes.dir}/META-INF"/>
+        <copy failonerror="false" file="${application.splash}" todir="${build.classes.dir}/META-INF"/>
+        <j2seproject3:copylibs>
+            <customize>
+                <attribute name="Main-Class" value="${main.class}"/>
+                <attribute name="SplashScreen-Image" value="META-INF/${splashscreen.basename}"/>
+            </customize>
+        </j2seproject3:copylibs>
+        <echo>To run this application from the command line without Ant, try:</echo>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <echo>java -jar "${dist.jar.resolved}"</echo>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar,-init-macrodef-copylibs" if="do.archive+manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries" unless="splashscreen.available">
+        <j2seproject3:copylibs>
+            <customize>
+                <attribute name="Main-Class" value="${main.class}"/>
+            </customize>
+        </j2seproject3:copylibs>
+        <echo>To run this application from the command line without Ant, try:</echo>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <echo>java -jar "${dist.jar.resolved}"</echo>
+    </target>
+    <target name="-post-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries-and-splashscreen,-do-jar-with-libraries,-post-jar" description="Build JAR." name="jar"/>
+    <!--
+                =================
+                EXECUTION SECTION
+                =================
+            -->
+    <target depends="init,compile" description="Run a main class." name="run">
+        <j2seproject1:java>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <target name="-do-not-recompile">
+        <property name="javac.includes.binary" value=""/>
+    </target>
+    <target depends="init,compile-single" name="run-single">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <j2seproject1:java classname="${run.class}"/>
+    </target>
+    <target depends="init,compile-test-single" name="run-test-with-main">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <j2seproject1:java classname="${run.class}" classpath="${run.test.classpath}"/>
+    </target>
+    <!--
+                =================
+                DEBUGGING SECTION
+                =================
+            -->
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger">
+        <j2seproject1:nbjpdastart name="${debug.class}"/>
+    </target>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger-main-test">
+        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${debug.class}"/>
+    </target>
+    <target depends="init,compile" name="-debug-start-debuggee">
+        <j2seproject3:debug>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
+        <j2seproject1:nbjpdastart stopclassname="${main.class}"/>
+    </target>
+    <target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
+    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <j2seproject3:debug classname="${debug.class}"/>
+    </target>
+    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
+    <target depends="init,compile-test-single" if="netbeans.home" name="-debug-start-debuggee-main-test">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <j2seproject3:debug classname="${debug.class}" classpath="${debug.test.classpath}"/>
+    </target>
+    <target depends="init,compile-test-single,-debug-start-debugger-main-test,-debug-start-debuggee-main-test" if="netbeans.home" name="debug-test-with-main"/>
+    <target depends="init" name="-pre-debug-fix">
+        <fail unless="fix.includes">Must set fix.includes</fail>
+        <property name="javac.includes" value="${fix.includes}.java"/>
+    </target>
+    <target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
+        <j2seproject1:nbjpdareload/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
+    <!--
+                ===============
+                JAVADOC SECTION
+                ===============
+            -->
+    <target depends="init" if="have.sources" name="-javadoc-build">
+        <mkdir dir="${dist.javadoc.dir}"/>
+        <javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
+            <classpath>
+                <path path="${javac.classpath}"/>
+            </classpath>
+            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
+                <filename name="**/*.java"/>
+            </fileset>
+            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="**/*.java"/>
+            </fileset>
+        </javadoc>
+        <copy todir="${dist.javadoc.dir}">
+            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
+                <filename name="**/doc-files/**"/>
+            </fileset>
+            <fileset dir="${build.generated.sources.dir}" erroronmissingdir="false">
+                <include name="**/doc-files/**"/>
+            </fileset>
+        </copy>
+    </target>
+    <target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
+        <nbbrowse file="${dist.javadoc.dir}/index.html"/>
+    </target>
+    <target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
+    <!--
+                =========================
+                JUNIT COMPILATION SECTION
+                =========================
+            -->
+    <target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
+        <mkdir dir="${build.test.classes.dir}"/>
+    </target>
+    <target name="-pre-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="do.depend.true" name="-compile-test-depend">
+        <j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir=""/>
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
+        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" processorpath="${javac.test.processorpath}" srcdir=""/>
+        <copy todir="${build.test.classes.dir}"/>
+    </target>
+    <target name="-post-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
+    <target name="-pre-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
+        <j2seproject3:javac apgeneratedsrcdir="${build.test.classes.dir}" classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" processorpath="${javac.test.processorpath}" sourcepath="" srcdir=""/>
+        <copy todir="${build.test.classes.dir}"/>
+    </target>
+    <target name="-post-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
+    <!--
+                =======================
+                JUNIT EXECUTION SECTION
+                =======================
+            -->
+    <target depends="init" if="have.tests" name="-pre-test-run">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
+        <j2seproject3:junit testincludes="**/*Test.java"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init" if="have.tests" name="test-report"/>
+    <target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
+    <target depends="init" if="have.tests" name="-pre-test-run-single">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
+        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
+        <j2seproject3:junit excludes="" includes="${test.includes}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
+        <fail if="tests.failed" unless="ignore.failing.tests">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
+    <!--
+                =======================
+                JUNIT DEBUGGING SECTION
+                =======================
+            -->
+    <target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-test">
+        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
+        <property location="${build.test.results.dir}/TEST-${test.class}.xml" name="test.report.file"/>
+        <delete file="${test.report.file}"/>
+        <mkdir dir="${build.test.results.dir}"/>
+        <j2seproject3:debug classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner" classpath="${ant.home}/lib/ant.jar:${ant.home}/lib/ant-junit.jar:${debug.test.classpath}">
+            <customize>
+                <syspropertyset>
+                    <propertyref prefix="test-sys-prop."/>
+                    <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                </syspropertyset>
+                <arg value="${test.class}"/>
+                <arg value="showoutput=true"/>
+                <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
+                <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
+        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
+    </target>
+    <target depends="init,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
+    <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
+        <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
+    <!--
+                =========================
+                APPLET EXECUTION SECTION
+                =========================
+            -->
+    <target depends="init,compile-single" name="run-applet">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject1:java classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <!--
+                =========================
+                APPLET DEBUGGING  SECTION
+                =========================
+            -->
+    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject3:debug classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
+    <!--
+                ===============
+                CLEANUP SECTION
+                ===============
+            -->
+    <target name="-deps-clean-init" unless="built-clean.properties">
+        <property location="${build.dir}/built-clean.properties" name="built-clean.properties"/>
+        <delete file="${built-clean.properties}" quiet="true"/>
+    </target>
+    <target if="already.built.clean.${basedir}" name="-warn-already-built-clean">
+        <echo level="warn" message="Cycle detected: JME3TestsTemplate was already built"/>
+    </target>
+    <target depends="init,-deps-clean-init" name="deps-clean" unless="no.deps">
+        <mkdir dir="${build.dir}"/>
+        <touch file="${built-clean.properties}" verbose="false"/>
+        <property file="${built-clean.properties}" prefix="already.built.clean."/>
+        <antcall target="-warn-already-built-clean"/>
+        <propertyfile file="${built-clean.properties}">
+            <entry key="${basedir}" value=""/>
+        </propertyfile>
+    </target>
+    <target depends="init" name="-do-clean">
+        <delete dir="${build.dir}"/>
+        <delete dir="${dist.dir}" followsymlinks="false" includeemptydirs="true"/>
+    </target>
+    <target name="-post-clean">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
+    <target name="-check-call-dep">
+        <property file="${call.built.properties}" prefix="already.built."/>
+        <condition property="should.call.dep">
+            <not>
+                <isset property="already.built.${call.subproject}"/>
+            </not>
+        </condition>
+    </target>
+    <target depends="-check-call-dep" if="should.call.dep" name="-maybe-call-dep">
+        <ant antfile="${call.script}" inheritall="false" target="${call.target}">
+            <propertyset>
+                <propertyref prefix="transfer."/>
+                <mapper from="transfer.*" to="*" type="glob"/>
+            </propertyset>
+        </ant>
+    </target>
+</project>

+ 8 - 0
JME3TestsTemplate/nbproject/genfiles.properties

@@ -0,0 +1,8 @@
+build.xml.data.CRC32=0f706f4a
+build.xml.script.CRC32=0b0b23c4
[email protected]
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=0f706f4a
+nbproject/build-impl.xml.script.CRC32=7c2e5d21
+nbproject/[email protected]

+ 76 - 0
JME3TestsTemplate/nbproject/project.properties

@@ -0,0 +1,76 @@
+application.title=JME3TestsTemplate
+application.vendor=jMonkeyEngine
+build.classes.dir=${build.dir}/classes
+build.classes.excludes=**/*.java,**/*.form
+# This directory is removed when the project is cleaned:
+build.dir=build
+build.generated.dir=${build.dir}/generated
+build.generated.sources.dir=${build.dir}/generated-sources
+# Only compile against the classpath explicitly listed here:
+build.sysclasspath=ignore
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+# Uncomment to specify the preferred debugger connection transport:
+#debug.transport=dt_socket
+debug.classpath=\
+    ${run.classpath}
+debug.test.classpath=\
+    ${run.test.classpath}
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/JME3TestsTemplate.jar
+dist.javadoc.dir=${dist.dir}/javadoc
+endorsed.classpath=
+excludes=
+includes=**
+jar.compress=false
+javac.classpath=\
+    ${libs.jme3.classpath}:\
+    ${libs.jme3-libraries.classpath}:\
+    ${libs.jme3-test-data.classpath}
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.deprecation=false
+javac.source=1.5
+javac.target=1.5
+javac.test.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}:\
+    ${libs.junit.classpath}:\
+    ${libs.junit_4.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=${source.encoding}
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+jaxbwiz.endorsed.dirs="${netbeans.home}/../ide12/modules/ext/jaxb/api"
+jnlp.applet.class=jme3test.awt.TestApplet
+jnlp.applet.height=300
+jnlp.applet.width=300
+jnlp.codebase.type=local
+jnlp.descriptor=application
+jnlp.enabled=false
+jnlp.offline-allowed=false
+jnlp.signed=false
+main.class=jme3test.TestChooser
+manifest.file=manifest.mf
+meta.inf.dir=${src.dir}/META-INF
+platform.active=default_platform
+run.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}
+# Space-separated list of JVM arguments used when running the project
+# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
+# or test-sys-prop.name=value to set system properties for unit tests):
+run.jvmargs=
+run.test.classpath=\
+    ${javac.test.classpath}:\
+    ${build.test.classes.dir}
+source.encoding=UTF-8
+src.dir=src

+ 13 - 0
JME3TestsTemplate/nbproject/project.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.java.j2seproject</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/j2se-project/3">
+            <name>JME3TestsTemplate</name>
+            <source-roots>
+                <root id="src.dir" name="JME3 Examples"/>
+            </source-roots>
+            <test-roots/>
+        </data>
+    </configuration>
+</project>

+ 41 - 0
README.TXT

@@ -0,0 +1,41 @@
+What is the jMonkeyEngine SDK?
+------------------------------
+
+The jMonkeyEngine 3 SDK is a software development kit for Java 3-D game developers.
+It contains the jMonkeyEngine3 library and the jMonkeyPlatform, a game development environment.
+The jMonkeyEngine and the jMonkeyPlatform are platform-independent, open-source and free.
+
+This is an alpha release (May 2010). If you encounter any issues, please tell us!
+http://www.jmonkeyengine.com/wiki/doku.php/report_bugs
+We are looking forward to your feedback.
+
+
+Starting the jMonkeyPlatform
+----------------------------
+
+Windows:   Double-Click the "bin/jmonkeyplatform.exe" file
+
+Mac OS:    Double-Click the "jmonkeyplatform.app" Application
+
+Linux:     chmod u+x bin/jmonkeyplatform; ./bin/jmonkeyplatform &
+
+
+Running jMonkeyEngine Demos
+---------------------------
+
+Choose File > New Project in the jMonkeyPlatform and create a "JME3 Tests" project. 
+Run the test project to see JME3 feature demos. 
+Browse the demo source code to learn from examples.
+
+
+Creating 3-D Games with the jMonkeyPlatform
+-------------------------------------------
+
+Using the jMonkeyPlatform is the easiest method to develop jMonkeyEngine-based 3-D games. 
+Choose File > New Project and create a "Base Game" project to get started. 
+
+See the online Documentation for jMonkeyPlatform at
+http://www.jmonkeyengine.com/wiki/doku.php/jme3:jmonkeyplatform
+
+Get jMonkeyEngine 3 tutorials at
+http://www.jmonkeyengine.com/wiki/doku.php/jme3

BIN
ant-lib/ant-contrib.jar


BIN
ant-lib/ant-deb.jar


BIN
ant-lib/ant-jme.jar


+ 7 - 0
branding/core/core.jar/org/netbeans/core/startup/Bundle.properties

@@ -0,0 +1,7 @@
+currentVersion=jMonkeyPlatform Alpha-4
+LBL_splash_window_title=Starting jMonkeyPlatform
+SPLASH_HEIGHT=350
+SPLASH_WIDTH=500
+SplashProgressBarBounds=0,250,500,6
+SplashRunningTextBounds=0,235,497,12
+SplashRunningTextFontSize=12

BIN
branding/core/core.jar/org/netbeans/core/startup/frame.gif


BIN
branding/core/core.jar/org/netbeans/core/startup/frame32.gif


BIN
branding/core/core.jar/org/netbeans/core/startup/frame48.gif


BIN
branding/core/core.jar/org/netbeans/core/startup/splash.gif


+ 21 - 0
branding/modules/ext/updater.jar/org/netbeans/updater/Bundle.properties

@@ -0,0 +1,21 @@
+UpdaterFrame.TextBackground_R=0
+UpdaterFrame.TextBackground_G=0
+UpdaterFrame.TextBackground_B=0
+
+UpdaterFrame.TextForeground_R=255
+UpdaterFrame.TextForeground_G=255
+UpdaterFrame.TextForeground_B=255
+
+UpdaterFrame.Background_R=0
+UpdaterFrame.Background_G=0
+UpdaterFrame.Background_B=0
+
+UpdaterFrame.outerColor_R=28
+UpdaterFrame.outerColor_G=43
+UpdaterFrame.outerColor_B=29
+
+UpdaterFrame.centerColor_R=85
+UpdaterFrame.centerColor_G=73
+UpdaterFrame.centerColor_B=16
+
+UpdaterFrame.isGradient=false

BIN
branding/modules/ext/updater.jar/org/netbeans/updater/resources/updatersplash.gif


+ 2 - 0
branding/modules/org-netbeans-core-windows.jar/org/netbeans/core/windows/view/ui/Bundle.properties

@@ -0,0 +1,2 @@
+CTL_MainWindow_Title=jMonkeyPlatform Alpha-4
+CTL_MainWindow_Title_No_Project=jMonkeyPlatform Alpha-4

+ 2 - 0
branding/modules/org-netbeans-core.jar/org/netbeans/core/ui/Bundle.properties

@@ -0,0 +1,2 @@
+LBL_Copyright=<p><strong>The \u2018Core Team\u2019</strong></p>\n<p>Kirill Vainer \u2018Momoko_Fan\u2019<br><em>Lead Programmer, jME3 Architect</em></p>\n<p>Erlend Sogge Heggen \u2018erlend_sh\u2019<br><em>Project Manager, Junior Webmaster</em></p>\n<p>Skye Book \u2018sbook\u2019<br><em>Project Manager, Senior Webmaster</em></p>\n<p>Normen Hansen \u2018normen\u2019<br><em>jMP architect &amp; general integrations</em></p>\n<p>Ruth Kusterer \u2018Zathras\u2019<br><em>Head of wiki, Docs expert</em></p>\n<p><em>Copyright &copy; 2010 jMonkeyEngine.\n<br>Please visit <a style="color: #1E2A60;" href="http://www.jmonkeyengine.com">http://www.jmonkeyengine.com</a> for more information.</em></p>
+URL_ON_IMG=http://www.jmonkeyengine.com/

BIN
branding/modules/org-netbeans-modules-java-j2seproject.jar/org/netbeans/modules/java/j2seproject/ui/resources/j2seProject.png


+ 265 - 0
build.xml

@@ -0,0 +1,265 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
+<!-- for some information on what you could do (e.g. targets to override). -->
+<!-- If you delete this file and reopen the project it will be recreated. -->
+<project name="jme-gde" basedir=".">
+    <description>Builds the module suite jme-gde.</description>
+    <import file="nbproject/build-impl.xml"/>
+    <!--Load ant extensions-->
+    <path id="ant-import.classpath">
+        <fileset dir="ant-lib/" includes="*.jar"/>
+    </path>
+    <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpathref="ant-import.classpath"/>
+    <taskdef name="deb" classname="com.googlecode.ant_deb_task.Deb" classpathref="ant-import.classpath"/>
+    <taskdef name="desktopentry" classname="com.googlecode.ant_deb_task.DesktopEntry" classpathref="ant-import.classpath"/>
+
+    <!--zips up the templates and adds them to the template project-->
+    <target name="zip-templates" description="Updates the template zip files">
+        <zip basedir="BasicGameTemplate/" destfile="jme3-templates/src/com/jme3/gde/templates/BasicGameProject.zip">
+            <exclude name="**/build/"/>
+            <exclude name="**/dist/"/>
+            <exclude name="**/nbproject/private/"/>
+        </zip>
+        <zip basedir="JME3TestsTemplate/" destfile="jme3-tests-template/src/com/jme3/gde/templates/tests/JmeTestsProject.zip">
+            <exclude name="**/build/"/>
+            <exclude name="**/dist/"/>
+            <exclude name="**/nbproject/private/"/>
+        </zip>
+    </target>
+
+    <!--override build to include netbeans config file creation-->
+    <target name="build" depends="-create-netbeans-config, suite.build">
+    </target>
+
+    <!--replaces default values in jmonkeyplatform.conf file with run.args.extra from project.properties-->
+    <target name="-create-netbeans-config">
+        <property file="nbproject/project.properties"/>
+        <mkdir dir="build/launcher/etc"/>
+        <copy file="${harness.dir}/etc/app.conf" tofile="build/launcher/etc/${app.name}.conf">
+            <filterchain>
+                <replacestring from="$${branding.token}" to="${branding.token}"/>
+                <replacestring from="-J-Xmx64m" to="${run.args.extra}"/>
+            </filterchain>
+        </copy>
+    </target>
+
+    <!--creates update center version via hudson build server-->
+    <target name="dist-gde-hudson" depends="suite.clean, -revert-svn-changes, -update-help-sets, zip-templates, -set-impl-version-hudson, suite.nbms, -unset-impl-version-hudson">
+    </target>
+
+    <!--zip up mac version using command line tool-->
+    <target name="jmp-release-mac" depends="build-mac" description="Build Mac OS X Application and zip it">
+        <exec executable="zip" dir="dist/">
+            <arg value="-yr"/>
+            <arg value="${app.release.name}-MacOSX.zip"/>
+            <arg value="jmonkeyplatform.app"/>
+            <arg value="../README.TXT"/>
+        </exec>
+    </target>
+
+    <target name="set-impl-version">
+        <property file="nbproject/project.properties"/>
+        <antcall target="-create-jme3-svn-properties" inheritall="true">
+            <param name="jme3_dir" value="../jme3/"/>
+        </antcall>
+        <foreach target="-do-impl-version" list="${modules}" delimiter=":" param="module_dir" inheritall="true">
+            <param name="set_impl_version" value="true"/>
+        </foreach>
+    </target>
+
+    <target name="unset-impl-version">
+        <property file="nbproject/project.properties"/>
+        <foreach target="-do-impl-version" list="${modules}" delimiter=":" param="module_dir" inheritall="true">
+            <param name="set_impl_version" value="false"/>
+        </foreach>
+    </target>
+
+    <target name="-set-impl-version-hudson">
+        <property file="nbproject/project.properties"/>
+        <antcall target="-create-jme3-svn-properties" inheritall="true">
+            <param name="jme3_dir" value="../../jme3/workspace/"/>
+        </antcall>
+        <foreach target="-do-impl-version" list="${modules}" delimiter=":" param="module_dir" inheritall="true">
+            <param name="set_impl_version" value="true"/>
+        </foreach>
+    </target>
+
+    <target name="-unset-impl-version-hudson">
+        <property file="nbproject/project.properties"/>
+        <foreach target="-do-impl-version" list="${modules}" delimiter=":" param="module_dir" inheritall="true">
+            <param name="set_impl_version" value="false"/>
+        </foreach>
+    </target>
+
+    <!--sets/unsets implementation version to svn revision for plugins-->
+    <target name="-do-impl-version">
+        <!--jme3 libraries-->
+        <if>
+            <or>
+                <equals arg1="${module_dir}" arg2="jme3-core-libraries"/>
+                <equals arg1="${module_dir}" arg2="jme3-project-libraries"/>
+            </or>
+            <then>
+                <!--set jme3 libraries svn revision-->
+                <property prefix="svn" file="build/jme3-lib-svn.properties"/>
+            </then>
+            <else>
+                <!--jme3 core-->
+                <if>
+                    <or>
+                        <equals arg1="${module_dir}" arg2="jme3-core-baselibs"/>
+                        <equals arg1="${module_dir}" arg2="jme3-project-baselibs"/>
+                    </or>
+                    <then>
+                        <!--set jme3 svn revision-->
+                        <property prefix="svn" file="build/jme3-svn.properties"/>
+                    </then>
+                    <else>
+                        <!--jme3 test data-->
+                        <if>
+                            <equals arg1="${module_dir}" arg2="jme3-project-testdata"/>
+                            <then>
+                                <!--set jme3 testdata svn revision-->
+                                <property prefix="svn" file="build/jme3-testdata-svn.properties"/>
+                            </then>
+                            <else>
+                                <!--jme3 tests-->
+                                <if>
+                                    <equals arg1="${module_dir}" arg2="jme3-tests-template"/>
+                                    <then>
+                                        <!--set jme3 tests svn revision-->
+                                        <property prefix="svn" file="build/jme3-tests-svn.properties"/>
+                                    </then>
+                                    <!--"normal" module-->
+                                    <else>
+                                        <!--load svn revision of this modules folder if we are setting the value-->
+                                        <if>
+                                            <equals arg1="${set_impl_version}" arg2="true"/>
+                                            <then>
+                                                <exec executable="svn" output="build/${module_dir}-svn.properties" dir="${module_dir}">
+                                                    <arg value="info" />
+                                                </exec>
+                                                <replace file="build/${module_dir}-svn.properties" token=" " value=""/>
+                                            </then>
+                                        </if>
+                                        <!--set svn revision of module-->
+                                        <property prefix="svn" file="build/${module_dir}-svn.properties"/>
+                                    </else>
+                                </if>
+                            </else>
+                        </if>
+                    </else>
+                </if>
+            </else>
+        </if>
+
+        <if>
+            <equals arg1="${set_impl_version}" arg2="true"/>
+            <then>
+                <echo>Setting implementation version for ${module_dir} to revision: ${svn.LastChangedRev}</echo>
+                <replace  file="${module_dir}/manifest.mf" token="OpenIDE-Module-Implementation-Version: 0" value="OpenIDE-Module-Implementation-Version: ${svn.LastChangedRev}"/>
+            </then>
+            <else>
+                <echo>Removing implementation version for ${module_dir} from revision: ${svn.LastChangedRev}</echo>
+                <replace file="${module_dir}/manifest.mf" token="OpenIDE-Module-Implementation-Version: ${svn.LastChangedRev}" value="OpenIDE-Module-Implementation-Version: 0"/>
+            </else>
+        </if>
+
+    </target>
+
+    <!--reverts svn changes (in case the revision numbers haven't been reset-->
+    <target name="-revert-svn-changes">
+        <!--remove changes from jMP (old version numbers)-->
+        <exec executable="svn" dir=".">
+            <arg value="revert" />
+            <arg value="." />
+            <arg value="-R" />
+        </exec>
+        <!--update gde svn revision-->
+        <exec executable="svn" dir=".">
+            <arg value="update" />
+        </exec>
+    </target>
+
+    <!--updates the help sets-->
+    <target name="-update-help-sets">
+        <ant antfile="build.xml" target="update-help-sets" inheritall="false" inheritrefs="false" dir="jme3-core/"/>
+    </target>
+
+    <!--creates properties files containing svn info for the jme3 folders-->
+    <target name="-create-jme3-svn-properties">
+        <mkdir dir="build"/>
+        <!--jme3 svn properties-->
+        <exec executable="svn" dir="${jme3_dir}" output="build/jme3-svn.properties">
+            <arg value="info" />
+        </exec>
+        <replace file="build/jme3-svn.properties" token=" " value=""/>
+        <!--jme3 test data svn properties-->
+        <exec executable="svn" dir="${jme3_dir}/src/test-data/" output="build/jme3-testdata-svn.properties">
+            <arg value="info" />
+        </exec>
+        <replace file="build/jme3-testdata-svn.properties" token=" " value=""/>
+        <!--jme3 libraries svn properties-->
+        <exec executable="svn" dir="${jme3_dir}/lib/" output="build/jme3-lib-svn.properties">
+            <arg value="info" />
+        </exec>
+        <replace file="build/jme3-lib-svn.properties" token=" " value=""/>
+        <!--jme3 tests svn properties-->
+        <exec executable="svn" dir="${jme3_dir}/src/test/" output="build/jme3-tests-svn.properties">
+            <arg value="info" />
+        </exec>
+        <replace file="build/jme3-tests-svn.properties" token=" " value=""/>
+    </target>
+
+    <target name="create-private-config">
+        <exec executable="mkdir" dir="./nbproject/" failonerror="false">
+            <arg value="private" />
+        </exec>
+        <exec executable="echo" dir="." output="./nbproject/private/platform-private.properties">
+            <arg value="nbplatform.default.netbeans.dest.dir=/var/www/platform/base/alpha/platform-base/netbeans"/>
+        </exec>
+        <exec executable="echo" dir="." output="./nbproject/private/platform-private.properties" append="true">
+            <arg value="nbplatform.default.harness.dir=/var/www/platform/base/alpha/platform-base/netbeans/harness"/>
+        </exec>
+    </target>
+    
+    <!--creates a debian package from the installer-->
+    <target name="create-deb-package" depends="suite.build-zip">
+        <unzip src="${dist.dir}/${app.name}.zip" dest="${dist.dir}/${app.name}">
+            <globmapper from="${app.name}/*" to="*"/>
+        </unzip>
+        <desktopentry
+            toFile="build/jmonkeyplatform.desktop"
+            name="jMonkeyEngine3 SDK"
+            comment="jMonkeyEngine3 Game SDK"
+            exec="/usr/local/jmonkeyplatform/bin/jmonkeyplatform"
+            icon="/usr/local/jmonkeyplatform/jmonkeyplatform.png"
+            categories="Development;Java"
+        />
+        <deb toDir="dist"
+            package="jme3-sdk"
+            version="0.6.1"
+            section="devel"
+            depends="sun-java6-jdk"
+            maintainer="jMonkeyEngine"
+            homepage="http://www.jmonkeyengine.com"
+            postrm="debscripts/postrm"
+            >
+            <tarfileset dir="dist/jmonkeyplatform/" prefix="usr/local/jmonkeyplatform">
+                <exclude name="bin/**"/>
+            </tarfileset>
+            <tarfileset dir="dist/jmonkeyplatform/bin" prefix="usr/local/jmonkeyplatform/bin" filemode="755">
+                <exclude name="*.exe"/>
+            </tarfileset>
+            <tarfileset file="build/jmonkeyplatform.desktop" prefix="usr/share/applications"/>
+            <tarfileset file="jmonkeyplatform.png" prefix="usr/local/jmonkeyplatform"/>
+            <description synopsis="jMonkeyEngine3 SDK is a complete solution for Java OpenGL game development.">
+jMonkeyEngine 3 was rebuilt from the ground up to be a modern 3D game engine,
+compatible with OpenGL 2.0 and above.
+Its architecture is shader-based, making it fully capable of current and
+next generation graphics standards. The jMonkeyPlatform gives you a complete IDE
+for coding and for managing and creating game assets.</description>
+        </deb>
+    </target>
+
+</project>

+ 2 - 0
debscripts/postrm

@@ -0,0 +1,2 @@
+#!/bin/bash
+rm -rf $HOME/.jmonkeyplatform

+ 1284 - 0
harness/README

@@ -0,0 +1,1284 @@
+INTRODUCTION
+------------
+
+This build harness permits modules outside of the netbeans.org CVS tree to be
+built against a NetBeans-based application: the NB platform, the NB IDE, or any
+derivative product. The semantics of configuration files is synchronized with
+the NBM project type module, so that you can open any module in the NB IDE and
+work with it naturally: build and test it using Ant, use Java code completion,
+and so on.
+
+Questions and comments should go to: [email protected]
+
+BASIC FILE LAYOUT
+-----------------
+
+Within the netbeans.org CVS tree, modules are detected as projects of the "NBM"
+(NetBeans module) type. The project directory may be top-level (e.g. "beans"),
+second-level (e.g. "ant/project"), or third-level (e.g.
+"objectbrowser/navigator/javanavigation"). The project.xml for the project must
+specify
+
+    <type>org.netbeans.modules.apisupport.project</type>
+
+to indicate that it is an NBM project, and the configuration must be
+
+    <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
+
+Note that this schema is a change from the /2 schema used in NetBeans 5.0.
+(/2 is still supported for compatibility.)
+NetBeans 4.0 and 4.1 use schema /1 which is no longer supported.
+
+Outside of the netbeans.org CVS tree, modules can take two forms. They may be
+marked with
+
+    <standalone/>
+
+in which case they can build into a platform binary but not refer to any other
+source modules. Or they may be marked with
+
+    <suite-component/>
+
+in which case they are contained within a module suite. The suite enumerates
+modules it contains, and each module points back to the suite that contains it.
+
+The meaning of the project.xml elements, as well as property names in
+project.properties and other files, will be discussed later.
+
+The project directory should contain "manifest.mf" (more on this later),
+"build.xml" (more later), a directory "src" with the main package root of the
+module's classes, optionally "test/unit/src" with unit tests, and perhaps some
+other files.
+
+If there is a subdirectory "javahelp" it is used to keep JavaHelp documentation,
+which will be built automatically.
+
+If there is a file "module-auto-deps.xml" it will automatically be used to
+upgrade modules depending on you to new dependencies, as described in the
+Modules API.
+
+STANDALONE MODULES: CONFIGURATION FILES
+---------------------------------------
+
+Standalone modules may keep configuration in several properties files, in the
+following order of loading:
+
+${basedir}/nbproject/private/platform-private.properties
+${basedir}/nbproject/platform.properties
+${user.properties.file}
+[definition of 'harness.dir' and 'netbeans.dest.dir' or 'cluster.path' based on value of ${nbplatform.active}]
+${basedir}/nbproject/private/private.properties
+${basedir}/nbproject/project.properties	
+
+Projects generated by NB 6.5 and earlier:
+-----------------------------------------
+The properties 'harness.dir' and 'netbeans.dest.dir' must be defined by the
+project. Usually this is accomplished by defining the property
+'nbplatform.active' in platform.properties, and ${user.properties.file}
+(normally build.properties in the user directory, usually defined in
+platform-private.properties) can define properties like
+'nbplatform.NAME.netbeans.dest.dir' (this would be used for 'netbeans.dest.dir'
+in case ${nbplatform.active} had the value 'NAME').
+
+Projects generated by NB 6.7 and later (for 6.7 platform):
+----------------------------------------------------------
+6.7 and newer projects may be distinguished by the presence of 'cluster.path' 
+property in nbproject/platform.properties file or simply by the fact that an 
+attempt to build a standalone module without it results in error: 
+
+  'You must specify path to 'platform' cluster in ${cluster.path} property.'
+ 
+In such case property 'cluster.path' must be defined by the project. It must 
+contain classpath-like list of absolute or relative paths to individual clusters 
+against which will be the module build. "Bare", i.e. not numbered cluster names 
+can be used, which simplifies later transitions to newer version of the 
+platform. Content of 'cluster.path' can also reference other properties defined 
+in the project, properties file generated by the IDE e.g uses property 
+'nbplatform.active.dir' pointing to root folder of specified active platform. 
+'nbplatform.active' is used like before. Properties 'netbeans.dest.dir', 
+'enabled.clusters' and 'disabled.clusters' *must not* be defined in the 
+projects. They would be ignored anyway so there is a dedicated check that 
+project is not trying to setup something that would not work anyway. 
+
+For more info on uses of 'cluster.path' property and setting it in IDE, see
+http://wiki.netbeans.org/DevFaqHowToReuseModules.
+
+MODULE SUITES: CONFIGURATION FILES
+----------------------------------
+
+Modules in a suite have a slightly more complicated list of properties files in
+which they may keep configuration:
+
+${basedir}/nbproject/private/suite-private.properties
+${basedir}/nbproject/suite.properties
+${suite.dir}/nbproject/private/platform-private.properties
+${suite.dir}/nbproject/platform.properties
+${user.properties.file}
+[definition of 'harness.dir' and 'netbeans.dest.dir' or 'cluster.path' based on value of ${nbplatform.active}]
+${basedir}/nbproject/private/private.properties
+${basedir}/nbproject/project.properties
+
+'suite.dir' is normally defined in suite-private.properties (or suite.properties
+in case it is a relative path). platform-private.properties and
+platform.properties are then used to define the NB platform in the same way as
+for standalone modules.
+
+The suite itself (the project located in ${suite.dir}) can load properties from:
+
+${basedir}/nbproject/private/platform-private.properties
+${basedir}/nbproject/platform.properties
+${user.properties.file}
+[definition of 'harness.dir' and 'netbeans.dest.dir' or 'cluster.path' based on value of ${nbplatform.active}]
+${basedir}/nbproject/private/private.properties
+${basedir}/nbproject/project.properties
+
+It must define a property 'modules' enumerating modules it contains (in path
+format, with each entry being a module project directory). This is usually done
+in project.properties, perhaps also with private.properties to help with
+absolute paths.
+
+USING A RELATIVE PATH FOR THE PLATFORM WITH A MODULE SUITE
+----------------------------------------------------------
+
+Though not directly supported by the GUI, it is possible to set up a module
+suite in such a way that the path to the NetBeans platform is given as relative,
+and sharable in VCS. This may be helpfully especially for multi-developer teams
+who frequently develop against new NetBeans builds (or build NetBeans from CVS
+sources). You need to:
+
+1. Make sure that each module's suite.properties specifies 'suite.dir' as
+relative to its base directory, not as a bare relative path, e.g.
+
+    suite.dir=${basedir}/..
+
+2. Edit the suite's platform.properties to give a fallback value for 'suite.dir'
+(so the suite's own master build script can work), and define *both*
+netbeans.dest.dir and harness.dir in terms of the suite directory, e.g.:
+
+    suite.dir=${basedir}
+	
+	# for platform 6.7 and later, use:
+	# 'platform.base' is only a helper property, it has no meaning in harness
+	platform.base=${suite.dir}/../nb_sources/nbbuild/netbeans
+	cluster.path=${platform.base}/platform:<other clusters you need>
+	harness.dir=${platform.base}/harness
+	
+	# for platform 6.5 and earlier, use:
+    netbeans.dest.dir=${suite.dir}/../nb_sources/nbbuild/netbeans
+    harness.dir=${netbeans.dest.dir}/harness
+
+platform.properties need not define 'nbplatform.active' in this case.
+
+Relative-path source and Javadoc associations for the platform is not yet
+supported in this scenario (#70876). Each developer with a checkout of the suite
+may need to configure a platform (with an arbitrary name) in the NetBeans
+Platform Manager dialog with a binary location matching the value you gave for
+${netbeans.dest.dir}, and with source and/or Javadoc associations of their
+choice. However, as a convenience, special associations may be predefined in the
+IDE in the special case that the destination directory is the subsubdirectory
+"nbbuild/netbeans" of a netbeans.org CVS checkout (i.e. if you build NetBeans
+from sources and then build your suite against that).
+
+"CHAINING" SUITES (INTER-SUITE DEPENDENCIES HOWTO)
+--------------------------------------------------
+
+As of platform version 6.7, suite-chaining as described here is superseded by
+using 'cluster.path' property, see previous chapters and developer FAQ
+http://wiki.netbeans.org/DevFaqHowToReuseModules. For platform versions 6.5
+and older, read on.
+
+Suppose you have one platform P1, say the bare NetBeans Platform. Then you have
+a module suite S1 with modules M1a...M1z which uses P1. Now it may happen that
+you want another suite S2 with modules M2a...M2z to depend on S1 as well as P1.
+This is possible, though not yet trivial to set up. Basically, you will make a
+new platform P2 by building S1 + P1. Here's what you need to do in brief:
+
+1. Set up S1 with P1 in the normal way.
+
+2. Edit S1/build.xml to include a target to make a platform P2. For example:
+
+    <target name="create-platform" depends="build-zip">
+        <mkdir dir="${p2}"/>
+        <unzip src="${dist.dir}/${app.name}.zip" dest="${p2}"/>
+    </target>
+
+where S1/nbproject/project.properties or S1/nbproject/private/private.properties
+defines:
+
+    p2=...path.../myplatform
+
+Note that the ZIP will currently contain S1's ${app.name} as its top-level dir,
+so you can either move the unpacked files up one dir, or use the dir p2/s1name
+as the actual platform location.
+
+As of NetBeans 6.0, you may simply run the 'create-platform' target in your suite's
+build.xml, which will create a platform in ${dist.dir}/${app.name}.
+
+3. Now configure S2 to use P2 as its platform. If an absolute path, you can use
+the Platform Manager, else for relative paths see the preceding section.
+
+(Setting harness.dir to ${netbeans.dest.dir}/harness will only work if P2
+includes a harness/ subdirectory, for example if S1 was configured to include
+the harness cluster. Otherwise, try ${netbeans.home}/../harness, or any location
+you prefer to keep a standard copy of the harness in.)
+
+4. To associate sources with binaries for P2, you will need to use the Platform
+Manager. You can select multiple source associations. In this case, use a
+netbeans.org CVS checkout or source download for the P1 (NetBeans platform)
+portion of P2, and use S1 (the suite directory) for the M1a...M1z modules in P2.
+
+5. In an S2 module like M2a you should be able to depend on any module in P2,
+including both NetBeans modules and modules from S1 like M1a. Code completion,
+popup Javadoc, etc. should work if source associations have been correctly
+configured in step #5.
+
+6. In case S1 was an application module with configured branding, you might wish
+to use S1's branding in S2 rather than making a new app for S2. Or, in place of
+a suite S2 you might have a standalone module M2. In either case, you can use
+S1's branding by configuring nbproject/project.properties in S2 (or standalone
+module M2):
+
+    branding.token=s1
+    branding.dir=none
+
+where 's1' was the branding token you chose for S1. This will permit Run,
+Reload, etc. on S2 and its modules like M2a, or standalone module M2, to work
+correctly.
+
+netbeans.org MODULES: CONFIGURATION FILES
+-----------------------------------------
+
+Modules inside the netbeans.org CVS tree need not define a platform; it is
+always "nbbuild/netbeans" in the CVS tree. They also do not have an explicit
+harness; they use various files located in "nbbuild". Unlike external modules
+which by default always use the cluster "devel", netbeans.org modules usually
+specify a cluster in "nbbuild/cluster.properties" ("extra" by default).
+
+PLATFORM DEFINITIONS
+--------------------
+
+The file build.properties in the user directory is used to store all information
+about NetBeans platforms. Each platform has an ID string; the default platform's
+ID is 'default'. The available properties for each platform are:
+
+1. nbplatform.ID.netbeans.dest.dir (mandatory) - absolute path to the
+destination directory (i.e. NetBeans platform installation).
+
+2. nbplatform.ID.harness.dir (mandatory) - path to the build harness. Normally
+will be "${nbplatform.ID.netbeans.dest.dir}/harness".
+
+3. nbplatform.ID.sources (optional) - see next section.
+
+4. nbplatform.ID.javadoc (optional) - see next section.
+
+SOURCE AND JAVADOC ASSOCIATIONS
+-------------------------------
+
+Modules inside the netbeans.org CVS tree need not do anything special to
+associate sources with binaries (the module JAR files under "nbbuild/netbeans");
+it is automatic. Javadoc may be associated with an API-providing module just by
+building its Javadoc (into "nbbuild/build/javadoc"), or by downloading the
+NetBeans API Documentation module, which will cause 'nbplatform.default.javadoc'
+to be defined in build.properties in the user directory (to the location of a
+ZIP of Javadoc).
+
+For external modules, sources and Javadoc may be associated with the active
+platform by defining in build.properties in the user directory these properties:
+
+1. nbplatform.ID.sources - an Ant-style path (e.g. ':' separated) containing
+source roots you wish to associate with the binary modules in
+${nbplatform.ID.netbeans.dest.dir}. Entries may be a checkout of the
+netbeans.org CVS tree, or source roots of other module suites which are included
+in the platform in binary form. Defining a source association permits you to
+step through sources while debugging, use Go To Class, get popup Javadoc in code
+completion, etc.
+
+2. nbplatform.ID.javadoc - a path containing roots of Javadoc for API-providing
+modules in the platform. Useful in case you wish to get Javadoc in View |
+Documentation Indices; or in the code completion popup (if you do not have
+sources). Each root may be a directory or a ZIP file. Within a root, the API for
+org.netbeans.modules.foo is expected to be inside the subdir named
+"org-netbeans-modules-foo".
+
+For examples of complete and functioning "external" module suites, see
+apisupport/project/test/unit/data/example-external-projects in netbeans.org
+sources.
+
+FORMAT OF YOUR project.xml's MAIN CONFIGURATION SECTION
+-------------------------------------------------------
+
+The format of project.xml is controlled by XML Schema. For the main section of
+new modules, use:
+
+  http://www.netbeans.org/ns/nb-module-project/3.xsd
+
+If you wish to edit project.xml by hand rather than using the IDE's GUI, you
+should validate all changes against this schema. If using the IDE's XML text
+editor, just type Alt-Shift-F9 to validate the current document. (Make sure the
+file is valid BEFORE saving it, as the IDE will refuse to load a malformed
+project.xml.)
+
+You must specify the "code name base" of your module. This is the value of
+OpenIDE-Module in manifest.mf, *except* without any major release version (e.g.
+"/1"). In the future OpenIDE-Module might be generated from this, but not yet.
+
+    <code-name-base>org.netbeans.modules.foo</code-name-base>
+
+For external modules, you must specify either <suite-component/> or
+<standalone/>; for netbeans.org modules, you must not. See above discussion of
+file layout.
+
+Specify your dependencies on other modules:
+
+    <module-dependencies>
+        <dependency>
+            <!-- The code name base, *not* with any major release version: -->
+            <code-name-base>some.other.module</code-name-base>
+            <!-- Usually, include this to say that it needs to be built -->
+            <!-- *before* your module, if in the same suite: -->
+            <build-prerequisite/>
+            <!-- Usually also include this, to say that it needs to be in your module's classpath: -->
+            <compile-dependency/>
+            <!-- Always include this, to say that the module system should register a dependency: -->
+            <run-dependency>
+                <!-- Optional; use if and only if the other module uses e.g. /1 in its code name: -->
+                <release-version>1</release-version>
+                <!-- Optional; request a minimum version of another module: -->
+                <specification-version>3.9</specification-version>
+            </run-dependency>
+        </dependency>
+        <!-- and others as you need them... -->
+        <!-- use org.openide for openide.jar -->
+    </module-dependencies>
+
+In a <run-dependency> you can also use just
+
+    <implementation-version/>
+
+in place of <specification-version>, meaning to declare an implementation
+dependency on another module. The actual version is taken directly from that
+module's current JAR so you do not need to keep track of it. *Important*: if you
+either *export* or *import* any implementation dependencies, you should probably
+use spec.version.base (see below).
+
+Specify your test dependencies on other modules [since 5.0u2, requires /3
+schema]. The tags in project.xml are 
+described below:
+
+    <test-dependencies>
+        <! -- Dependencies for a source root with tests: -->
+        <test-type>
+            <!--
+            Name of test type. Normally you will use 'unit'.
+            netbeans.org modules also support 'qa-functional' test-type.
+            -->
+            <name>unit</name>
+            <!-- A dependency on a module or its tests: -->
+            <test-dependency>
+                <!-- Identification of module our tests depend upon: -->
+                <code-name-base>org.netbeans.modules.java.project</code-name-base>
+                <!-- Include also transitive module dependencies of that module: -->
+                <recursive/>
+                <!-- Always available when running, but to include at compile time also: -->
+                <compile-dependency/>
+                <!-- To request the tests of that module as well: -->
+                <test/>
+            </test-dependency>
+        </test-type>
+    </test-dependencies>
+
+Source root for a test type:
+{project.dir}/test/${test-type.name}/src
+
+{project.dir}/test/unit/src  - source root for unit test
+
+
+For example you have three modules with code name bases A,B,C. A has runtime
+dependency on B, B on C. You want to add test dependencies to unit test type
+of module D:
+
+Use case 1: Runtime dependency on module.
+
+<test-type>
+ <name>unit</name>
+ <test-dependency>
+    <code-name-base>A</code-name-base>
+ </test-dependency> 
+</testtype>
+
+Runtime classpath is D + A. 
+Compile classpath is D.
+
+Use case 2: Runtime dependency on a module and its recursive runtime classpath.
+
+<test-type>
+ <name>unit</name>
+ <test-dependency>
+    <code-name-base>A</code-name-base>
+    <recursive/>
+ </test-dependency> 
+</testtype>
+
+Runtime classpath is A + B + C + D.
+Compile classpath is D.
+
+Use case 3: Compile and runtime dependency on a module its recursive runtime classpath.
+
+<test-type>
+ <name>unit</name>
+ <test-dependency>
+    <code-name-base>A</code-name-base>
+    <compile-dependency/>
+    <recursive/>
+ </test-dependency> 
+</testtype>
+
+Runtime classpath is A + B + C + D.
+Compile classpath is A + B + C + D.
+Note one feature of recursive compile-time dependency: modules B and C are added
+to compile classpath as well, even if A has only runtime dependency on B and B on C.
+
+Use case 4: Compile and runtime dependency on a module, its recursive runtime classpath 
+and tests.
+
+<test-type>
+ <name>unit</name>
+ <test-dependency>
+    <code-name-base>A</code-name-base>
+    <compile-dependency/>
+    <recursive/>
+    <test/>
+ </test-dependency> 
+</testtype>
+
+Runtime classpath is A + B + C + D + A/test/unit.
+Compile classpath is A + B + C + D + A/test/unit.
+
+Declare any public API/SPI packages you export:
+
+    <public-packages>
+        <package>org.netbeans.api.foo</package>
+        <package>org.netbeans.spi.foo</package>
+    </public-packages>
+
+If you do not export any API, say so:
+
+    <public-packages/>
+
+If you export an API to selected modules only, you can use (NB 5.0+ only!):
+
+    <friend-packages>
+        <friend>org.netbeans.modules.brother</friend>
+        <package>org.netbeans.modules.foo.spi</package>
+    </friend-packages>
+
+If you bundle a special library which you want to expose to modules depending on
+you, you need not enumerate every package explicitly:
+
+    <public-packages>
+        <subpackages>javax.foo</subpackages>
+    </public-packages>
+
+Exported implementation "APIs" do not need to be declared; anyone depending on
+your module with an implementation dependency gets access to *all* your
+packages. Be careful and avoid this situation whenever possible.
+
+If your module bundles one or more third-party libraries, declare them:
+
+    <class-path-extension>
+        <!-- Deployed path, relative to dir containing module: -->
+        <runtime-relative-path>ext/foolib.jar</runtime-relative-path>
+        <!-- Path of library in your own sources, relative to project basedir: -->
+        <binary-origin>external/foolib.jar</binary-origin>
+    </class-path-extension>
+
+You still need to separately copy the JAR to the output directory (see below).
+This just declares that Class-Path in your module's manifest should be defined,
+and adds a compile-time classpath entry for your module and modules depending on
+it.
+
+If your bundled library is built from sources, just use
+
+    <class-path-extension>
+        <runtime-relative-path>ext/foolib.jar</runtime-relative-path>
+    </class-path-extension>
+
+Sometimes a module will produce some extra JARs (in modules/ext/ for Class-Path,
+in ant/nblib/, etc.), or will just need to have some extra sources for
+miscellaneous purposes (e.g. custom Ant tasks). You can declare them, somewhat
+similarly to how freeform projects permit compilation units to be declared; you
+will still need to explicitly compile and JAR them in your build.xml. For
+example, for in-IDE automatic Ant tasks you might use:
+
+    <extra-compilation-unit>
+        <!-- Root of Java packages, relative to project basedir: -->
+        <package-root>antsrc</package-root>
+        <!-- Compile-time classpath: -->
+        <classpath>${ant.home}/lib/ant.jar:${openide.dir}/core/openide.jar</classpath>
+        <!-- Places where classes are deposited: -->
+        <built-to>build/antclasses</built-to>
+        <built-to>${cluster}/ant/nblib/${code.name.base.dashes}.jar</built-to>
+    </extra-compilation-unit>
+
+Or for a Class-Path extension built from sources, you might use:
+
+    <extra-compilation-unit>
+        <package-root>libsrc</package-root>
+        <classpath/>
+        <built-to>build/libclasses</built-to>
+        <built-to>${cluster}/modules/ext/foolib.jar</built-to>
+    </extra-compilation-unit>
+
+A custom Ant task (or set of tasks) you use only during your own build might
+look like:
+
+    <extra-compilation-unit>
+        <package-root>antsrc</package-root>
+        <classpath>${ant.home}/lib/ant.jar</classpath>
+        <built-to>build/antclasses</built-to>
+        <built-to>build/tasks.jar</built-to>
+    </extra-compilation-unit>
+
+Note that <classpath> may contain Ant property references, so for a complex
+classpath, define it once in project.properties and use that property in
+<classpath> as well as in your Ant script.
+
+In order for the IDE to recognize references to those classes defined in the 
+<extra-compilation-unit>, you may also need add/modify your module's cp.extra
+property to include the value specified in the <package-root> element.
+
+AN IMPORTANT NOTE: CUSTOMIZATION OF BUILD SCRIPTS
+-------------------------------------------------
+
+Harness scripts allow a great degree of customization in your project's build
+script and properties files (see sections on properties and Ant targets
+below). Due to open nature of Ant scripts (everything is public) special
+attention must be paid to migrating customized build scripts to newer version of
+harness. In order to avoid unexpected use of newer version of  harness with new
+IDE, make sure that your either define harness location explicitly via
+harness.dir property or that you use harness supplied with NB platform you are
+building against ('Harness supplied with Platform' option on Harness tab in
+NetBeans Platform Manager).
+
+Of course sometimes you want to upgrade to newer version of harness. To minimize
+the chances that it will break your (customized) build, follow these
+simple rules:
+
+ * Use only properties listed in the following sections and avoid overriding
+   those marked 'Do not override' or similarly.
+ * Depend on/override only targets listed in sections 'Targets available for
+   overriding...' below
+ * When overriding targets, use only pre- or post-hooks (described below) for
+   your code and call original target as a whole in 'depends' attribute of the
+   target.
+
+Note that even when sticking to these rules, there is always possibility that
+migration to newer version of harness will break your build, especially when you
+depend on some implementation details, like a property *not* being set in
+particular internal target, concrete calling order of targets, etc.
+
+PROPERTIES WHICH MAY BE DEFINED IN YOUR project.properties
+----------------------------------------------------------
+
+If needed, these properties may also be defined in private.properties (to make
+them applicable to only your own checkout of sources). Only selected properties
+are listed here; others may be interpreted, but see the Ant script for details.
+
+Unless otherwise noted, properties listed here *are* available for use in
+selected fields in project.xml, *are* available for use in your build.xml
+(depend on some init target to make sure), and *are not* available for use when
+defining other properties in project.properties (unless you defined them in
+private.properties).
+
+app.icon.icns [since 6.9] - "${harness.dir}/etc/applicationIcon.icns" by default,
+path to application's icon in Mac (.icns) format; used for creating ".app" 
+directory hierarchy in "build-mac" target.
+
+basedir - you cannot define this; it is always the project directory of the
+module (as in any Ant script). Available in all other properties files.
+
+build.classes.dir - "build/classes", used to send compiled classes to.
+
+build.compiler.debug - default "true" to include debugging info when compiling
+(needed if you want to step through sources).
+
+build.compiler.debuglevel - default "source,lines,vars" to include all debugging info.
+
+build.compiler.deprecation - default "true" to display deprecation warnings when
+compiling. If you want to disable deprecations, it is recommended you use
+private.properties:
+
+    build.compiler.deprecation=false
+
+build.test.unit.classes.dir - "build/test/unit/classes", where unit tests are
+compiled to.
+
+buildnumber - generated timestamp for use in
+OpenIDE-Module-Implementation-Version (or OpenIDE-Module-Build-Version if
+OpenIDE-Module-Implementation-Version was explicitly defined in the manifest).
+
+catalog.base.url [since 6.9] - distribution base for the suite modules NBMs
+location for which the catalog is generated. Default is ".". 
+
+cluster - cluster directory your module is to be built into. For netbeans.org
+modules, this is a subdirectory of nbbuild/netbeans/; the subdirectory name is
+defined automatically from nbbuild/cluster.properties, with a fallback to
+"extra". For suite component modules, it defaults to
+"${suite.dir}/build/cluster", though you could override it if you wanted (e.g.
+in platform.properties); similarly, for standalone modules, it defaults to
+"${basedir}/build/cluster". Available in project.properties for netbeans.org
+modules only.
+
+code.name.base - your code name base as org.netbeans.modules.foo
+
+code.name.base.dashes - your code name base as org-netbeans-modules-foo
+
+code.name.base.slashes - ditto, as org/netbeans/modules/foo
+
+cp.extra - extra JARs you have to compile module sources against. Rarely needed
+any more, but if you have defined extra source trees with <extra-compilation-unit>,
+it may be necessary to add/modify this value to include the value specified in 
+its <package-root> element.
+
+extra.module.files - list of special files you build alongside your module JAR
+which you want to register for update tracking and include in your NBM.
+*Everything* you put into your cluster should be enumerated. Paths are relative
+to the cluster directory. Ant-style patternsets (most simply a trailing slash)
+are permitted if you can be sure no other modules' files would also match.
+Example:
+
+    extra.module.files=\
+        ext/foolib.jar,\
+        docs/FooAPI.zip,\
+        SpecialThirdPartyTool1.0/
+
+(You do *not* need to include: the module JAR itself; your JavaHelp JAR if you
+build one; your module declaration file; any module-auto-deps.xml; an
+ant/nblib/*.jar corresponding to your module; or any files in ${release.dir}.
+These are all included by default.)
+
+foo/bar.dir - absolute path of cluster directory to which the netbeans.org
+module "foo/bar" is built. Only defined for netbeans.org modules, and only if
+foo/bar was *already* built before yours (specify <build-dependency/>).
+Available in project.properties.
+
+harness.dir - location of the build harness (for external modules). Usually
+"${netbeans.dest.dir}/harness".
+
+is.autoload and is.eager - default false, but if true, make this module an
+autoload or eager module.
+
+javac.compilerargs [since 5.0u1] - default none; additional arguments to pass
+to the Java compiler, e.g. "-Xlint:unchecked".
+
+javac.source - default "1.4"; to use JDK 1.5 features like generics:
+
+    javac.source=1.5
+
+javac.target - default ${javac.source}; controls version of generated bytecode
+
+javadoc.apichanges - optional location of an API changes list. Currently for
+netbeans.org modules only.
+
+javadoc.arch - optional location of an architecture XML description. Highly
+recommended as it makes your module self-documenting.
+
+    javadoc.arch=${basedir}/arch.xml
+
+javadoc.overview - optional location of a Javadoc overview page. Discouraged
+since it disables the default content which links to various generated documents
+which you would need to manually add to your own overview.
+
+javadoc.title - title for Javadoc build. Optional for external modules.
+DEPRECATED since 5.0u1; taken from other module metadata.
+
+javahelp.base - "${code.name.base.slashes}/docs" by default; directory
+containing your help set, under "javahelp/".
+
+javahelp.excludes - optionally, list of file name patterns to exclude from
+JavaHelp search index construction.
+
+javahelp.jar - "modules/docs/${code.name.base.dashes}.jar". Do not override.
+Constructed from ${javahelp.jar.basename} and ${javahelp.jar.dir}.
+
+javahelp.search - "JavaHelpSearch" by default; name of search database
+directory, relative to your help set. Must match what your help set specifies.
+
+jhall.jar - for external modules, if you wish to build JavaHelp, you must define
+the location of jhall.jar from the JavaHelp distribution, as this is needed to
+run the search indexer. DEPRECATED since 5.0u1; the 5.0u1 harness now includes
+jsearch-*.jar so you do not need to specify this property any longer.
+
+keystore - Key store for signing NBMs. A candidate for private.properties - you
+do *not* want to share this file! Also ${nbm_alias} and ${storepass} are used in
+the NBM signing process.
+
+license.file - optional. Location of license text to use when creating an NBM.
+(External modules only.)
+
+manifest.mf - JAR manifest location. Avoid overriding.
+
+module.auto.deps.xml - "module-auto-deps.xml" in your project directory by
+default. Optional configuration file.
+
+module.classpath - your main module source's compile-time classpath, according
+to <module-dependencies>. Since 5.0u1 uses public-package-only JARs where
+appropriate.
+
+module.run.classpath [since 5.0u1] - your main module source's run-time
+classpath, according to <module-dependencies>. Similar to ${module.classpath}
+except does not use public-package-only JARs; includes run-time-only
+dependencies; and processes dependencies transitively.
+
+module.jar - location of module JAR relative to cluster directory. Do not
+override directly; override ${module.jar.basename} (default
+"${code.name.base.dashes}.jar") and/or ${module.jar.dir} (default "modules") if
+necessary (not without a good reason!).
+
+module.jar.verifylinkageignores [since 6.0] - regexp pattern for class names
+that are excluded from linkage check
+
+module.javadoc.packages - comma-separated list of packages to be included in
+Javadoc. Defaulted according to <public-packages> or <friend-packages>, but if
+you used <subpackages> (or if you have not specified any public or friend
+packages at all) you will need to specify it explicitly.
+
+nbm.distribution - optional URL to location where your NBM can be downloaded
+from.
+
+nbm.executable.files [since 6.8] - comma- or space- separated list of patterns of 
+files relative to cluster directory for which executable permissions should be set 
+on Unix system when building the module and on NBM installation/update in runtime.
+
+nbm.homepage - optional URL to HTML homepage for background about the module.
+
+nbm.is.global - set to "true" if NBM cannot be installed in user directory.
+
+nbm.module.author - author info for an NBM.
+
+nbm.needs.restart - set to "true" if NBM cannot be installed (even for the first
+time) without restarting the IDE.
+
+nbm.target.cluster [since 5.0u2] - allow to declare a target cluster where
+install if NBM install globally.
+
+autoupdate.catalog.url - if you want to use module's or suite's update target
+during build, you need to specify the URL of your NBMs catalog.
+
+nbplatform.active - optional name of a NB platform to build and run against. See
+discussion above for details of how this is used.
+
+netbeans.dest.dir - [up to 6.5.1] absolute pathname of NB platform (or IDE or 
+whatever) that you are building your module against, and into which your module 
+will be built. Available in project.properties (and in all properties files for 
+netbeans.org modules). Specified folder must exist and must contain valid NB 
+platform. Do not define in suite modules if suite's platform.properties defines 
+"cluster.path" property. Also do not depend on this property to be defined, it 
+will not be in projects created with NB 6.7 or later. 
+
+
+netbeans.home - location of "platform*" cluster of the NetBeans IDE installation
+you are running. *Only defined* when you run an Ant script *inside* the IDE.
+
+nbjdk.active [since 5.0u1] - name of a Java platform (JDK) to use when building
+and running. Will try to load (e.g. from ${userdir}/build.properties, where Java
+Platform Manager stores its information) the properties
+
+    nbjdk.home=${platforms.${nbjdk.active}.home}
+      - JDK (not JRE!) home directory
+    nbjdk.bootclasspath=${platforms.${nbjdk.active}.bootclasspath}
+      - JRE JARs, e.g. rt.jar (default: ${nbjdk.home}/jre/lib/rt.jar)
+    nbjdk.java=${platforms.${nbjdk.active}.java}
+      - java executable (default: ${nbjdk.home}/bin/java)
+    nbjdk.javac=${platforms.${nbjdk.active}.javac}
+      - javac executable (default: ${nbjdk.home}/bin/javac)
+    nbjdk.javadoc=${platforms.${nbjdk.active}.javadoc}
+      - javadoc executable (default: ${nbjdk.home}/bin/javadoc)
+
+if they are not already defined. Uses <presetdef> to make <java>, <javac>,
+<javadoc>, <junit>, and <nbjpdastart> use this JDK. Optional; if unset (or set to
+'default'), will use the current VM's Java platform instead. Define in
+platform.properties (in a standalone module, or in the suite for a suite component
+module, or in nbbuild/user.build.properties for a netbeans.org module). You may
+also define just ${nbjdk.home} directly, without using ${nbjdk.active}, if you do
+not need to use the Java Platform Manager to set up the JDK definition.
+
+use.pack200 [since 6.9] - whether to Pack200 compress NBMs; default true.
+
+pack200.excludes [since 6.9] - comma- or space- separated list of patterns of 
+files relative to cluster directory for which pack200 compression should not be used 
+while creating NBMs.
+
+project.license [since 6.0] - license to use for newly created files in the project
+(applies also to suites); default is 'cddl' for modules inside netbeans.org.
+
+release.dir - "${basedir}/release"; location of a directory full of files to
+copy unmodified to the output cluster. Since 6.0 beta2 also applies to module
+suite projects. DO NOT ATTEMPT to create files in this directory during the
+build; it is ONLY for static content (versioned files present in a clean source
+project). Dynamically generated cluster content should be placed directly in
+${cluster} as part of a netbeans-extra target, and be sure to mention such files
+in ${extra.module.files}.
+
+run.app.exe - "bin\netbeans.exe"; name of Windows launcher to start (inside
+${netbeans.dest.dir}) if trying to run the application for interactive testing.
+Only relevant if ${app.name} is unset.
+
+run.app.sh - "bin/netbeans"; same but for Unix (and Mac OS X).
+
+run.args.extra - empty; any added arguments to pass to the launcher.
+
+run.jdkhome - location of JDK to run application with for interactive testing.
+Defaults to JDK the Ant script was using, or that selected by ${nbjdk.active}.
+DEPRECATED - for compatibility only. Use ${nbjdk.active} instead.
+
+spec.version.base - this is a little subtle. If you export an implementation
+dependency to other modules, *and/or* depend on one or more other modules using
+implementation dependencies, you are advised to use this property *in place of*
+writing OpenIDE-Module-Specification-Version explicitly in your manifest. It
+should be a dotted number to serve as the base of a specification version; keep
+the number of components *fixed* even if you branch the module, so e.g. in a
+development version use
+
+    spec.version.base=1.7.0
+
+and if you need to increment this in a release branch use e.g.
+
+    spec.version.base=1.7.1
+
+The harness will automatically append integers to it as follows to create the
+actual specification version:
+
+1. Your OpenIDE-Module-Implementation-Version, if specified and an integer.
+
+2. The OpenIDE-Module-Implementation-Version of modules you depend on using
+implementation dependencies, if integers; ordered by alphabetizing the
+dependencies.
+
+(Example: if you have impl version 3, and you depend on org.netbeans.modules.foo
+= 6 and org.netbeans.modules.bar = 7, your actual spec version would be
+1.7.0.3.7.6.)
+
+This is very handy for Auto Update: whenever you or anyone else makes a change
+to an implementation API, just increment the
+OpenIDE-Module-Implementation-Version of the providing module. That module and
+any modules depending on its API will get a higher
+OpenIDE-Module-Specification-Version automatically, so the whole set of
+interdependent modules can be published to users at once on an update center.
+
+src.dir - "src", module source directory. Avoid overriding.
+
+test.timeout [since 6.1] - timeout (in msec) for unit tests, default 600000 (10
+minutes). A test running longer than this will be halted.
+
+test.run.args [since 6.5] - general VM arguments to pass when running tests.
+Defaults to just "-ea".
+
+test.config [since 6.5] - name of a test configuration to run, specifying a set
+of unit and/or functional tests which should be run by the 'test' target.
+Defaults to 'default'. ${test.config.NAME.includes} specifies the includes list
+(format: classpath resources). The standard value of ${test.config.NAME.includes}
+depends on NAME. In case of 'default', it includes every test ('**/*Test.class').
+In case of any other NAME the includes list is empty.
+${test.config.NAME.excludes} (default '') specifies an excludes list.
+
+test.unit.cp.extra - any additional classpath you might need to compile your
+unit tests. If left empty, you can compile against JUnit; the NB test extensions
+in nbjunit.jar; your module; and anything your module compiled against (since
+5.0u1, ${module.run.classpath}). As of 5.0u2 you can and should include other
+modules in project.xml's <test-dependencies> but in earlier releases these must
+be listed in this property.
+
+    test.unit.cp.extra=\
+        ${tools.jar}:\
+        ${basedir}/lib/custom-junit-helpers.jar
+
+test.unit.run.cp.extra - any additional classpath you might need to *run* your
+unit tests with (beyond what they are already compiled with). As of 5.0u2 you
+can and should include other modules in project.xml's <test-dependencies> but in
+earlier releases these must be listed in this property.
+
+test.unit.lib.cp - path to some basic libraries which can be used in unit tests:
+junit.jar, nbjunit.jar, and insanelib.jar. Not needed for netbeans.org modules.
+For external modules, may be needed if you do not have the junit and testtools
+modules installed in the target platform *or* the developing IDE, and the target
+platform is not inside a netbeans.org build tree (in nbbuild/netbeans).
+DEPRECATED as of 6.5; even basic libraries should instead be declared as regular
+test dependencies (they are now included in the harness cluster).
+
+test.unit.src.dir - "test/unit/src"; avoid overriding.
+
+test-unit-sys-prop.<NAME> - will set a system property <NAME> when running your
+unit tests.
+
+test.dist.dir - directory with test distribution. 
+
+test.unit.folder - output directory for tests of module.
+
+test.unit.out.folder - this property can be overriden when you want to change 
+test.unit.folder property.
+
+continue.after.failing.tests - controls behavior of running tests on all modules
+in suite. Default value is "true", which causes suite.test target to continue 
+with another module even if tests in previous module failed. Set to "false" 
+in your suite's project.properties to force test target to stop after tests
+in one module failed. In module project this controls whether test target
+fails when tests fail (when set to "false" or unset) or succeeds even if 
+test failed (when set to "true").
+
+extra.test.libs.dir - directory with extra libraries needed for test run. 
+
+tools.jar [since 5.0u1] - set to location of tools.jar in active JDK. Useful in
+case your module needs to compile against JDK-only classes. Meaningless on Mac
+OS X.
+
+To support builds of JNLP-based applications additional properties may be used
+or redefined in JNLP-related targets:
+
+jnlp.servlet.jar - must point to jnlp-servlet.jar as provided by JDK 5 in
+  the directory sample/jnlp/servlet/jnlp-servlet.jar if one wants to build 
+  a packaged war file of JNLP version of your suite
+
+jnlp.dest.dir - the location where to generate the JNLP files and signed 
+  jars. By default it is your ${suite.dir}/build/jnlp
+
+jnlp.master.dir - (category='private') location of a directory in which
+  to generate pieces of master JNLP file to be included in the resources
+  section.
+
+jnlp.signjar.alias -
+jnlp.signjar.keystore - 
+jnlp.signjar.password - allow you to sign your app with your own private key, if
+  unspecified then a default keystore is generated. Nice for trying things for
+  the first time, but not for production, then you very likely want to generate
+  your key and set these properties
+jnlp.signjar.vendor - you can override this to be the default dname for the keystore
+
+jnlp.platform.codebase - can point to a shared repository which can be generated
+  by ant -f nbbuild/build.xml build-jnlp. Then your WAR file will contain only 
+  modules of your suite and platform modules will be referenced by the value of
+  this property. Sample values with prebuilt binaries (good for testing):
+http://bits.netbeans.org/6.5/jnlp/
+http://bits.netbeans.org/6.7/fcs/jnlp/
+http://deadlock.netbeans.org/hudson/job/ide-jnlp/lastStableBuild/artifact/nbbuild/build/jnlp/
+
+jnlp.indirect.jars [since 6.0] - optional pattern of JARs in the cluster to load
+  in JNLP mode even though they are not listed as Class-Path extensions of the
+  module JAR. The module ought not directly refer to classes in these JARs (it
+  could not do so in non-JNLP mode) but it may load them reflectively using
+  InstalledFileLocator using the same path in regular as in JNLP mode. Note that
+  the physical path on disk to the resulting JAR will not necessarily contain
+  the directory prefix that the JAR in the cluster uses, so do not expect that
+  jar.getParentFile() is meaningful. The implementation creates an empty JAR
+  entry META-INF/clusterpath/$path where $path is the ('/'-separated) path
+  within the cluster where the JAR would be found in a normal installation.
+
+jnlp.indirect.files [since 7.0M1] - optional pattern of files in the cluster to
+  load in JNLP mode. The module may load these files using InstalledFileLocator
+  using the same path in regular as in JNLP mode. Note that the physical path on
+  disk to the resulting file will not necessarily contain the directory prefix
+  that the file in the cluster uses, so do not expect that file.getParentFile()
+  is meaningful. The implementation creates a JAR entry META-INF/files/$path
+  where $path is the ('/'-separated) path within the cluster where the file
+  would be found in a normal installation.
+
+jnlp.verify.excludes - the default implementation of "jnlp" task in common.xml
+  does verification and compares that all files from module NBM are really
+  referenced from the JNLP file. Sometimes not all of them need to be, for
+  them you can put their full names (relative to your cluster root) into this
+  property and separate them by comma.
+
+jnlp.permissions - allows altering of the fragment in the resulting .jnlp file
+  that sets the permissions for individual modules. The default value is
+  &lt;security&gt;&lt;all-permissions/&gt;&lt;/security&gt; when jnlp.sign.jars
+  is true, &lt;security/&gt; when jnlp.sign.jars is false.
+  If you want to change the default to something else please define the value
+  of the property.
+
+jnlp.sign.jars [since 6.0] - defaults to true. If set to false the jars 
+  will not be signed, only the main (startup) jar. This should allow for 
+  faster startup but might compromise JNLP security. Use with extreme care.
+
+jnlp.generate.versions [since 6.7] - Defaults to false, which means versioning 
+  info is not generated (see 
+  http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/downloadservletguide.html#resources).
+  If set true, build-jnlp target creates versioning info in jnlp descriptors and version.xml files.
+  This allows for incremental updates of Webstart applications, but requires download via
+  JnlpDownloadServlet (thus run-jnlp and debug-jnlp does not create versioning info even with this
+  property set to true).
+  
+[XXX some of the above should be listed in "Suite Properties"]
+
+
+TARGETS AVAILABLE FOR OVERRIDING IN YOUR build.xml
+--------------------------------------------------
+
+Obscure or mostly internal targets are skipped here, but again examine the
+actual harness script if in doubt. If you want to keep the original
+implementation and just add a before hook, try e.g.
+
+    <target name="-pre-javahelp">
+        <!-- your stuff here -->
+    </target>
+    <target name="javahelp" depends="-pre-javahelp,harness.javahelp"/>
+
+(some original targets are projectized-common.* rather than harness.*). If you
+want to add an after hook, try e.g.
+
+    <target name="javahelp" depends="harness.javahelp">
+        <!-- your stuff here -->
+    </target>
+
+basic-init - define some properties such as file locations; enough to do a clean
+at least.
+
+build-init - define more properties needed for compiling and other build tasks.
+
+clean - remove all build products: the "build" directory under your project
+directory, and any files left in the build cluster (including
+${extra.module.files}).
+
+compile - compile Java sources for the module.
+
+compile-single - compile selected Java sources (F9).
+
+compile-test-single - compile selected unit test classes (F9).
+
+debug - build module and then start target platform in debug mode. Use from
+within the IDE (there is a context menu item for it) to debug the app.
+
+debug-fix-nb - loads a hotfix for a module class while debugging. Run -> Apply
+Code Changes from the IDE.
+
+debug-fix-test-nb - same, for unit test classes.
+
+debug-test-single-nb - run one single unit test in the debugger (e.g. to see why
+it is failing). Available from the IDE's menus.
+
+files-init - define list of files in the NBM fileset. Use ${extra.module.files}
+rather than overriding this.
+
+init - all normal initialization.
+
+jar - build the module JAR.
+
+jar-prep - prepare to build the module JAR; define ${buildnumber}.
+
+javadoc - build module Javadoc.
+
+jnlp - generetes the JNLP component file for this module and all necessary
+  resources for it into ${jnlp.dest.dir} directory and also a fragment of
+  the master JNLP into ${jnlp.master.dir}
+
+javadoc-nb - same, and open it in a web browser (only from the IDE). Available
+as Build -> Generate Javadoc.
+
+javahelp - build JavaHelp.
+
+nbm - build the NBM. You might override this to give a complex (multipart)
+license text. Copy basic impl from common.xml and edit.
+
+netbeans - build everything needed for the NBM. Do not override; use
+netbeans-extra instead.
+
+netbeans-extra - hook target: does nothing unless overridden, but called when
+building a module. Override to insert any additional build tasks you need to do:
+copying libraries to the cluster, etc.
+
+profile - used from inside the IDE (if the NetBeans profiler is installed) to
+profile the entire application.
+
+profile-test-single-nb - run one unit test under the profiler. Available from the
+IDE's menus if the NetBeans profiler is installed.
+
+release - copies contents of ${release.dir} to ${cluster}.
+
+reload - reloads the module in the target IDE/app to try out changes interactively.
+
+reload-in-ide - reloads the module in the current IDE to try out changes
+interactively. Only available when run from inside NetBeans. Use with care.
+
+run - build module and then run application interactively. Only for external
+modules. Either way, available from context menu in Projects tab.
+
+test - run all unit tests for the module. Run -> Test... in the IDE.
+
+test-generate-html [since 6.5 M2] - can be used after test target to generate
+test reports in html.
+
+test-build - build unit tests for the module.
+
+test-init - define properties used for building and running unit tests.
+
+test-preinit - I'm not sure, actually.
+
+test-single - run a selected unit test only. Available in the IDE's menus.
+
+testuserdir-delete - deletes just the testing user directory (if not currently in use).
+
+verify-class-linkage [since 5.0u1] - checks for possible linkage errors in your module
+and its Class-Path extensions.
+
+SUITE PROPERTIES
+----------------
+
+Some properties are shared with module projects, such as ${cluster}.
+
+app.name - filename of application launchers to create, suite name to create,
+etc.
+
+app.version - version of the application, used in building the MacOS application
+bundle for example. (Since 6.0 beta2)
+
+app.conf - location of an alternative configuration file. If not specified,
+default one from harness/etc/app.conf is taken (Since 6.9)
+
+branding.dir (default "${suite.dir}/branding") - directory containing branding
+overrides.
+
+branding.token - optional token defining an application branding.
+
+enabled.clusters - comma-separated list of cluster names in the target platform
+(e.g. "platform") which should be included in the application. Should be stored
+in platform.properties, not project.properties. Available since 5.0u1. Since 6.5,
+can elide version numbers from the end, e.g. just "platform" suffices.
+
+disabled.clusters - comma-separated list of cluster names in the target platform
+(e.g. "ide") which should be completely excluded from the application.
+DEPRECATED since 5.0u1 in favor of ${enabled.clusters} and ignored if that is nonempty.
+
+disabled.modules - comma-separated list of code name bases of modules in the
+target platform (e.g. "org.netbeans.modules.autoupdate") which should be
+excluded from the application. There is no need to specify modules already
+excluded by ${disabled.clusters} (if used) or by modules from clusters not included
+in ${enabled.clusters}. Since 5.0u1, should be stored in platform.properties,
+not project.properties.
+
+dist.dir - directory (if not 'dist') to place the final application in. Since 6.1.
+
+modules - list of contained modules. Path format; entries resolved against the
+suite directory as needed.
+
+jnlp.codebase [since 5.0u1] - in case one wants to build a static repository not
+packaged in a WAR file, one needs to pass in the full URL for it. By default it
+is specified as "$$codebase" and replaced dynamically by the servlet packaged in
+the WAR file.
+
+
+TARGETS AVAILABLE FOR OVERRIDING IN YOUR SUITE build.xml
+--------------------------------------------------
+
+-init - set up properties. Most importantly, ${modules.sorted} contains a list
+of absolute path names to the base directories of the modules in the suite,
+topologically sorted by build order; suitable for use with <subant>, for
+example. Some other basic properties like ${netbeans.dest.dir} will also be
+defined.
+
+branding - building branding JARs, if applicable. Example: if ${branding.token}
+is "foo", then a file such as
+
+    ${branding.dir}/modules/org-netbeans-modules-x.jar/org/netbeans/modules/x/resources/Bundle.properties
+
+will be packed into
+
+    ${cluster}/modules/locale/org-netbeans-modules-x_foo.jar!/org/netbeans/modules/x/resources/Bundle_foo.properties
+
+build - build all suite modules.
+
+build-jnlp - builds a JNLP WAR file from your application suitable for
+publishing in a Java EE container.
+
+build-mac [since 5.0u2] - creates a Mac OS X application.
+
+build-zip - builds a ZIP file containing your application including launchers.
+
+clean - clean everything.
+
+debug - like run, but run in the JPDA debugger. (Only available from inside the
+IDE.)
+
+debug-jnlp - starts debuging of your JNLP application (works only from NetBeans IDE)
+
+nbms [since 5.0u1] - creates NBMs for all modules in the suite, and generates
+an XML descriptor listing them suitable for use from Auto Update.
+
+profile - used from inside the NetBeans IDE to profile the entire suite
+
+run - start application for testing.
+
+run-jnlp - executes your JNLP application (currently from local files)
+
+test - run all module unit tests. Since NetBeans 6.8 runs tests of all suite modules
+by default, even if some of them fails and target succeeds regardless of test status.
+When property 'continue.after.failing.tests' is set to 'false', this target fails
+immediately after tests in some module fail and does not continue testing the rest
+of the suite (this was the default up to version 6.7).
+
+testuserdir-delete - deletes just the testing user directory (if not currently in use).
+
+CONTENTS OF YOUR manifest.mf
+----------------------------
+
+This file is just a prototype of the module JAR manifest, as described in the
+Modules API. It must contain the attribute OpenIDE-Module and is strongly
+encouraged to contain also OpenIDE-Module-Localizing-Bundle; other attributes
+are generally optional.
+
+Several attributes in the main section should *not* be written into this file as
+they are automatically generated during the build:
+
+    Class-Path
+    OpenIDE-Module-Build-Version
+    OpenIDE-Module-Friends
+    OpenIDE-Module-Implementation-Version (unless you are exporting an impl API)
+    OpenIDE-Module-Module-Dependencies
+    OpenIDE-Module-Public-Packages
+    OpenIDE-Module-Specification-Version (unless you are *not* using spec.version.base)
+
+Do not forget that manifest files must begin with the magic phrase
+
+    Manifest-Version: 1.0
+
+and to be safe should end in *two* newlines.
+
+TEST COVERAGE SUPPORT SPI
+-------------------------
+
+There is a support for test coverage measurement for apisupport projects 
+since 6.7. There is a general contract under which alternative 
+implementations may by added (in case of multiple impls present, only 
+one is used). NetBeans 6.7 and 6.8 use Cobertura implementation. 
+
+A contract for test coverage implementation for module projects is to 
+create Ant script testcoverage.xml in 'harness' cluster. Script 
+must: 
+
+  * reside directly in root folder of the cluster
+  * set property testcoverage.present to true outside of any target
+  * define target 'coverage-report' in the script
+  * set property testcoverage.report.dir in 'coverage-report' target to dir
+    with index.html file with results.
+  * As of 6.8, unit and functional tests are supported.
+
+A contract for test coverage implementation for suite projects is to 
+create Ant script testcoverage-suite.xml in 'harness' cluster. Script 
+must: 
+
+  * reside directly in root folder of the cluster
+  * set property testcoverage.suite.present to true outside of any target
+  * define target 'coverage-report' in the script
+  * set property testcoverage.report.dir in 'coverage-report' target to dir
+    with index.html file with results.
+  * As of 6.8, only unit tests are supported for suite projects.
+	
+Clients should make no other assumptions beyond these contracts. All 
+other related files must be stored in 'testcoverage/<impl name>' 
+subfolder. 
+
+
+----------------
+Hey Emacs!
+Local Variables:
+mode: text
+fill-column: 80
+End:

BIN
harness/antlib/bindex-2.2.jar


BIN
harness/antlib/jsearch-2.0_05.jar


+ 303 - 0
harness/build.xml

@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+Other names may be trademarks of their respective owners.
+
+
+The contents of this file are subject to the terms of either the GNU
+General Public License Version 2 only ("GPL") or the Common
+Development and Distribution License("CDDL") (collectively, the
+"License"). You may not use this file except in compliance with the
+License. You can obtain a copy of the License at
+http://www.netbeans.org/cddl-gplv2.html
+or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+specific language governing permissions and limitations under the
+License.  When distributing the software, include this License Header
+Notice in each file and include the License file at
+nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
+particular file as subject to the "Classpath" exception as provided
+by Oracle in the GPL Version 2 section of the License file that
+accompanied this code. If applicable, add the following below the
+License Header, with the fields enclosed by brackets [] replaced by
+your own identifying information:
+"Portions Copyrighted [year] [name of copyright owner]"
+
+Contributor(s):
+
+The Original Software is NetBeans. The Initial Developer of the Original
+Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
+Microsystems, Inc. All Rights Reserved.
+
+If you wish your version of this file to be governed by only the CDDL
+or only the GPL Version 2, indicate your decision by adding
+"[Contributor] elects to include this software in this distribution
+under the [CDDL or GPL Version 2] license." If you do not indicate a
+single choice of license, a recipient has the option to distribute
+your version of this file under either the CDDL, the GPL Version 2 or
+to extend the choice of license to its licensees as provided above.
+However, if you add GPL Version 2 code and therefore, elected the GPL
+Version 2 license, then the option applies only if the new code is
+made subject to such option by the copyright holder.
+-->
+<project name="harness" basedir="." default="netbeans">
+
+    <import file="common.xml"/>
+    <import file="jdk.xml"/>
+    
+    <target name="taskdefs" unless="harness.taskdefs.done">
+        <dirname property="harness.dir" file="${harness.file}"/>
+        <taskdef classpath="${harness.dir}/tasks.jar" resource="org/netbeans/nbbuild/taskdefs.properties"/>
+        <typedef name="pathfileset" classname="org.netbeans.nbbuild.PathFileSet"
+                 classpath="${harness.dir}/tasks.jar"/>
+        <property name="harness.taskdefs.done" value="true"/>
+        <fail message="When using cluster.path property, remove netbeans.dest.dir, enabled.clusters and disabled.clusters properties from platform config, they would be ignored.">
+            <condition>
+                <and>
+                    <isset property="cluster.path.evaluated"/>
+                    <or>
+                        <isset property="netbeans.dest.dir"/>
+                        <isset property="enabled.clusters"/>
+                        <isset property="disabled.clusters"/>
+                    </or>
+                    <not>
+                        <isset property="suite.dir"/>
+                    </not>
+                </and>
+            </condition>
+        </fail>
+    </target>
+
+    <target name="-convert-old-project" unless="cluster.path.evaluated">
+        <fail unless="netbeans.dest.dir" message="Either cluster.path/cluster.path.evaluated properties or netbeans.dest.dir must be set."/>
+
+        <pathconvert property="old.project.update.tracking">
+            <fileset dir="${netbeans.dest.dir}" includes="**/update_tracking/*.xml"/>
+        </pathconvert>
+
+        <!-- standalone modules don't specify enabled/disabled clusters -->
+        <property name="enabled.clusters" value=""/>
+        <property name="disabled.clusters" value=""/>
+        <property name="disabled.modules" value=""/>
+
+        <selector id="old.project.included.files">
+            <custom classpath="${harness.dir}/tasks.jar" classname="org.netbeans.nbbuild.ModuleSelector">
+                <param name="excludeModules" value="${disabled.modules}"/>
+                <!-- XXX inc/exc clusters -->
+                <param name="includeClusters" value="${enabled.clusters}"/>
+                <param name="excludeClusters" value="${disabled.clusters}"/>
+                <param name="updateTrackingFiles" value="${old.project.update.tracking}"/>
+            </custom>
+        </selector>
+
+        <pathconvert property="old.project.clusters.duplicates" pathsep="&#10;">
+            <fileset dir="${netbeans.dest.dir}">
+                <selector refid="old.project.included.files"/>
+            </fileset>
+            <chainedmapper>
+                <mapper type="regexp" from="(^.+)[/\\]config[/\\]Modules[/\\]" to="\1"/> <!-- #71849 -->
+                <filtermapper>
+                    <linecontainsregexp negate="true">
+                        <regexp pattern="update[/\\]backup[/\\]netbeans[/\\]?$"/>
+                    </linecontainsregexp>
+                </filtermapper>
+            </chainedmapper>
+        </pathconvert>
+        <tempfile property="old.project.clusters.duplicates.file" destdir="${basedir}/build" deleteonexit="true" prefix="duplicates"/>
+        <mkdir dir="${basedir}/build"/>
+        <echo file="${old.project.clusters.duplicates.file}" message="${old.project.clusters.duplicates}"/>
+
+        <pathconvert property="cluster.path.evaluated">
+            <union id="old.project.clusters"> <!-- union removes duplicates -->
+                <files includesfile="${old.project.clusters.duplicates.file}"/>
+            </union>
+        </pathconvert>
+    </target>
+
+    <target name="common-init" depends="taskdefs,-convert-old-project">
+        <property name="netbeans.javadoc.dir" location="build/javadoc"/>
+        <condition property="cluster.path.basedir" value="${suite.dir}" else="${basedir}">
+            <isset property="suite.dir"/>
+        </condition>
+        <convertclusterpath from="${cluster.path.evaluated}" to="cluster.path.final" id="cluster.path.id" basedir="${cluster.path.basedir}"/>
+    </target>
+
+    <target name="basic-init" depends="projectized-common.basic-init">
+        <!-- Must be done even without build-init, or clean will not work. -->
+        <condition property="cluster" value="${suite.dir}/build/cluster"> <!-- #59872 -->
+            <isset property="suite.dir"/>
+        </condition>
+        <property name="cluster" location="build/cluster"/>
+
+        <condition property="test.dist.dir" value="${suite.dir}/build/testdist">
+            <isset property="suite.dir"/>
+        </condition>
+        <property name="test.dist.dir" location="build/testdist"/>
+        <property name="build.classes.dir" location="build/classes"/>
+
+    </target>
+
+    <target name="init" depends="basic-init,files-init,build-init,-javac-init"/>
+
+    <target name="nbm-license-init" unless="license.file">
+        <mkdir dir="build"/>
+        <property name="license.file" location="build/no-license.txt"/>
+        <echo file="${license.file}">[NO LICENSE SPECIFIED]</echo>
+    </target>
+
+    <target name="build-init" depends="basic-init,nbm-license-init">
+        <condition property="public.package.jar.dir" value="${suite.dir}/build/public-package-jars">
+            <isset property="suite.dir"/>
+        </condition>
+        <property name="public.package.jar.dir" location="build/public-package-jars"/>
+        <mkdir dir="${public.package.jar.dir}"/>
+        <!-- Similar to projectized.xml but does not try to set NBM homepage/distribution, nor is javahelp.excludes predefined. -->
+        <parseprojectxml
+            project="."
+            publicpackagesproperty="public.packages"
+            friendsproperty="friends"
+            javadocpackagesproperty="module.javadoc.packages"
+            moduledependenciesproperty="module.dependencies"
+            moduleclasspathproperty="module.classpath"
+            publicpackagejardir="${public.package.jar.dir}"
+            modulerunclasspathproperty="module.run.classpath"
+            classpathextensionsproperty="class.path.extensions"
+        >
+            <testtype name="unit"
+                      folder="test.unit.folder"
+                      runtimecp="test.unit.runtime.cp"
+                      compilecp="test.unit.compile.cp"
+                      compiledep="test.unit.testdep"/>
+            <testtype name="qa-functional"
+                      folder="test.qa-functional.folder"
+                      runtimecp="test.qa-functional.runtime.cp"
+                      compilecp="test.qa-functional.compile.cp"
+                      compiledep="test.qa-functional.testdep"/>
+        </parseprojectxml>
+        <condition property="is.regular">
+            <not>
+                <or>
+                    <isset property="is.autoload"/>
+                    <isset property="is.eager"/>
+                    <equals arg1="${module.jar.dir}" arg2="core"/>
+                    <equals arg1="${module.jar.dir}" arg2="lib"/>
+                </or>
+            </not>
+        </condition>
+        <property name="build.compiler.debug" value="true"/>
+        <property name="build.compiler.debuglevel" value="source,lines,vars"/>
+        <property name="build.compiler.deprecation" value="true"/>
+        <property name="build.sysclasspath" value="ignore"/>
+        <property name="build.compiler.optimize" value="off"/>
+        <property name="build.package.compress" value="false"/>
+        <property name="build.package.index" value="false"/>
+        <property name="manifest.mf" location="manifest.mf"/>
+        <property name="src.dir" location="src"/>
+        <property name="nbm" value="${code.name.base.dashes}.nbm"/>
+        <property name="nbm.module.author" value=""/>
+        <property name="nbm.release.date" value=""/>
+        <property name="nbm.needs.restart" value="false"/>
+        <property name="nbm.is.global" value=""/>
+        <!-- Override if you want to use these: -->
+        <property name="nbm.distribution" value=""/>
+        <property name="nbm.homepage" value=""/>
+        <property name="build.javahelp.dir" location="build/javahelp"/>
+        <property name="javahelp.base" value="${code.name.base.slashes}/docs"/>
+        <property name="javahelp.search" value="JavaHelpSearch"/>
+    </target>
+
+    <target name="test-lib-init" depends="init">
+        <!-- NbModuleSuite must be made to ignore disabled.modules during a test; see discussion in #136621: -->
+        <delete failonerror="false">
+            <fileset dir="${suite.dir}">
+                <include name="build/cluster/config/Modules/*.xml_hidden"/>
+            </fileset>
+        </delete>
+        <path id="test.unit.lib.cp">
+            <pathelement path="${test.unit.lib.cp}"/> <!-- for manual override -->
+            <!-- As a fallback for old platforms which do not include the right modules: -->
+            <pathfileset include="modules/ext/junit-*.jar">
+                <path refid="cluster.path.id"/>
+            </pathfileset>
+            <fileset dir="${netbeans.home}/..">
+                <include name="*/modules/ext/junit-*.jar"/>
+            </fileset>
+        </path>
+    </target>
+
+    <target name="javahelp" depends="init" if="has.javahelp">
+        <!-- Similar to projectized.xml but does not fiddle with usersguide/.../ide.css, and finds jhall.jar differently: -->
+        <property name="jhall.jar" location="${harness.dir}/antlib/jsearch-2.0_05.jar"/>
+        <available property="jhall.jar.exists" file="${jhall.jar}"/>
+        <fail unless="jhall.jar.exists">You must set 'jhall.jar' (e.g. in private.properties) to the location of jsearch.jar from a JavaHelp distribution</fail>
+        <mkdir dir="${build.javahelp.dir}/${javahelp.base}/${javahelp.search}"/>
+        <copy todir="${build.javahelp.dir}">
+            <fileset dir="javahelp"/>
+        </copy>
+        <jhindexer basedir="${build.javahelp.dir}/${javahelp.base}"
+                   db="${build.javahelp.dir}/${javahelp.base}/${javahelp.search}">
+            <classpath>
+                <pathelement location="${jhall.jar}"/>
+                <pathelement location="${harness.dir}/tasks.jar"/>
+            </classpath>
+            <include name="**/*.html"/>
+            <include name="**/*.htm"/>  <!-- Fix for Issue #160276 -->
+            <exclude name="${javahelp.search}/"/>
+            <exclude name="${javahelp.excludes}"/>
+        </jhindexer>
+        <mkdir dir="${cluster}/${javahelp.jar.dir}"/>
+        <jar jarfile="${cluster}/${javahelp.jar}" compress="true">
+            <fileset dir="${build.javahelp.dir}"/>
+        </jar>
+    </target>
+
+    <target name="javadoc" depends="build-init,-javadoc-init">
+        <mkdir dir="${netbeans.javadoc.dir}/${code.name.base.dashes}"/>
+        <javadoc destdir="${netbeans.javadoc.dir}/${code.name.base.dashes}" packagenames="${module.javadoc.packages}" source="${javac.source}" windowtitle="${javadoc.title}" encoding="UTF-8">
+            <classpath refid="cp"/>
+            <classpath path="${module.run.classpath}"/><!-- XXX #157320 -->
+            <sourcepath location="${src.dir}"/>
+            <doctitle>${javadoc.title}</doctitle>
+            <header>${javadoc.header}</header>
+        </javadoc>
+    </target>
+
+    <target name="javadoc-nb" depends="init,javadoc" if="netbeans.home">
+        <nbbrowse file="${netbeans.javadoc.dir}/${code.name.base.dashes}/index.html"/>
+    </target>
+
+    <target name="run" depends="netbeans">
+        <ant antfile="${harness.dir}/run.xml" target="run">
+            <reference refid="cluster.path.id"/>
+        </ant>
+    </target>
+
+    <target name="profile" depends="netbeans,-jdk-presetdef-nbprofiledirect">
+        <ant antfile="${harness.dir}/run.xml" target="profile">
+            <reference refid="cluster.path.id"/>
+        </ant>
+    </target>
+
+    <target name="debug" depends="netbeans,-jdk-presetdef-nbjpdastart">
+        <ant antfile="${harness.dir}/run.xml" target="debug">
+            <reference refid="cluster.path.id"/>
+        </ant>
+    </target>
+
+    <target name="reload" depends="netbeans">
+        <ant antfile="${harness.dir}/run.xml" target="run">
+            <property name="run.args" value='--reload "${cluster}/${module.jar}"'/>
+            <property name="run.args.extra" value=""/>
+            <reference refid="cluster.path.id"/>
+        </ant>
+    </target>
+
+    <target name="reload-in-ide" depends="netbeans">
+        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+        <nbinstaller module="${cluster}/${module.jar}" action="reinstall"/>
+    </target>
+
+</project>

+ 1028 - 0
harness/common.xml

@@ -0,0 +1,1028 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+Other names may be trademarks of their respective owners.
+
+
+The contents of this file are subject to the terms of either the GNU
+General Public License Version 2 only ("GPL") or the Common
+Development and Distribution License("CDDL") (collectively, the
+"License"). You may not use this file except in compliance with the
+License. You can obtain a copy of the License at
+http://www.netbeans.org/cddl-gplv2.html
+or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+specific language governing permissions and limitations under the
+License.  When distributing the software, include this License Header
+Notice in each file and include the License file at
+nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
+particular file as subject to the "Classpath" exception as provided
+by Oracle in the GPL Version 2 section of the License file that
+accompanied this code. If applicable, add the following below the
+License Header, with the fields enclosed by brackets [] replaced by
+your own identifying information:
+"Portions Copyrighted [year] [name of copyright owner]"
+
+Contributor(s):
+
+The Original Software is NetBeans. The Initial Developer of the Original
+Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
+Microsystems, Inc. All Rights Reserved.
+
+If you wish your version of this file to be governed by only the CDDL
+or only the GPL Version 2, indicate your decision by adding
+"[Contributor] elects to include this software in this distribution
+under the [CDDL or GPL Version 2] license." If you do not indicate a
+single choice of license, a recipient has the option to distribute
+your version of this file under either the CDDL, the GPL Version 2 or
+to extend the choice of license to its licensees as provided above.
+However, if you add GPL Version 2 code and therefore, elected the GPL
+Version 2 license, then the option applies only if the new code is
+made subject to such option by the copyright holder.
+-->
+<project name="projectized-common" basedir=".">
+
+    <!-- XXX supply descriptions for the appropriate targets -->
+    <!-- XXX should use namespaces for NB in-VM tasks from ant/browsetask and debuggerjpda/ant and apisupport/ant -->
+    <!-- XXX move more things here from projectized.xml when possible and desirable -->
+
+    <condition property="testcoverage.import" value="testcoverage.xml">
+        <and>
+            <isset property="harness.dir"/>
+            <available file="testcoverage.xml" filepath="${harness.dir}"/>
+        </and>
+    </condition>
+    <condition property="testcoverage.import" value="${netbeans.dest.dir}/harness/testcoverage.xml">
+        <and>
+            <isset property="netbeans.dest.dir"/>
+            <available file="testcoverage.xml" filepath="${netbeans.dest.dir}/harness"/>
+        </and>
+    </condition>
+    <property name="testcoverage.import" value="no-testcoverage.xml"/>
+    <import file="${testcoverage.import}"/>
+
+    <target name="basic-init" depends="common-init,-jdk-init">
+        <!-- Synch the following property loads with NbModuleProject.makeEvalDefs: -->
+        <property file="nbproject/private/private.properties"/>
+        <property file="nbproject/project.properties"/>
+        <!-- Do not try to set module.classpath here, in particular: -->
+        <!-- during a clean, the ${foo/bar.dir} properties may not be set. -->
+        <parseprojectxml project="." 
+            codenamebaseproperty="code.name.base"
+            codenamebasedashesproperty="code.name.base.dashes" 
+            codenamebaseslashesproperty="code.name.base.slashes"
+        />
+        <property name="module.jar.dir" value="modules"/>
+        <property name="module.jar.basename" value="${code.name.base.dashes}.jar"/>
+        <property name="module.jar" value="${module.jar.dir}/${module.jar.basename}"/>
+        <available property="has.javahelp" file="javahelp" type="dir"/>
+        <property name="javahelp.jar.dir" value="modules/docs"/>
+        <property name="javahelp.jar.basename" value="${code.name.base.dashes}.jar"/>
+        <property name="javahelp.jar" value="${javahelp.jar.dir}/${javahelp.jar.basename}"/>
+        <condition property="javahelp.class.path.extension" value="docs/${javahelp.jar.basename}">
+            <isset property="has.javahelp"/>
+        </condition>
+        <property name="javac.source" value="1.4"/>
+        <property name="javac.target" value="${javac.source}"/>
+        <property name="javac.compilerargs" value=""/>
+        <property name="module.auto.deps.xml" location="module-auto-deps.xml"/>
+        <condition property="has.module.auto.deps">
+            <available file="${module.auto.deps.xml}"/>
+        </condition>
+        <property name="jar-excludes" value="**/*.java,**/*.form,**/package.html,**/doc-files/"/>
+        <property name="module.jar.verifylinkageignores" value=""/>
+        <property name="cp.extra" value=""/>
+        <tstamp>
+            <format property="module.build.started.time" pattern="yyyy-MM-dd'T'HH:mm:ss.SSSZ"/>
+        </tstamp>
+    </target>
+
+    <target name="-release.dir">
+        <property name="release.dir" location="release"/>
+        <condition property="has.release.dir">
+            <available file="${release.dir}"/>
+        </condition>
+    </target>
+    <target name="-release.files" depends="-release.dir" if="has.release.dir">
+        <pathconvert pathsep="," property="release.files">
+            <path>
+                <fileset dir="${release.dir}"/>
+            </path>
+            <filtermapper>
+                <replacestring from="${release.dir}${file.separator}" to=""/>
+                <replacestring from=" " to="?"/>
+            </filtermapper>
+        </pathconvert>
+    </target>
+    <target name="files-init" depends="basic-init,-release.files">
+        <property name="release.files" value=""/>
+        <property name="release.files.extra" value=""/>
+        <property name="extra.module.files" value=""/>
+        <patternset id="module.files" includes="${release.files},${release.files.extra},${extra.module.files}">
+            <include name="${module.jar}"/>
+            <include name="${javahelp.jar}" if="has.javahelp"/>
+            <include name="config/Modules/${code.name.base.dashes}.xml"/>
+            <include name="config/ModuleAutoDeps/${code.name.base.dashes}.xml" if="has.module.auto.deps"/>
+            <include name="ant/nblib/${code.name.base.dashes}.jar"/>
+        </patternset>
+    </target>
+
+    <target name="-javac-init-bootclasspath-prepend" depends="build-init" if="bootclasspath.prepend">
+        <presetdef name="nb-javac">
+            <custom-javac>
+                <bootclasspath>
+                    <path path="${nbjdk.bootclasspath}"/>
+                </bootclasspath>
+                <compilerarg value="-Xbootclasspath/p:${bootclasspath.prepend}" />
+            </custom-javac>
+        </presetdef>
+    </target>
+
+    <target name="-javac-init-no-bootclasspath-prepend" depends="build-init" unless="bootclasspath.prepend">
+        <presetdef name="nb-javac">
+            <custom-javac>
+                <bootclasspath>
+                    <path path="${nbjdk.bootclasspath}"/>
+                </bootclasspath>
+            </custom-javac>
+        </presetdef>
+    </target>
+
+    <target name="-javac-init" depends="build-init,-javac-init-bootclasspath-prepend,-javac-init-no-bootclasspath-prepend">
+        <path id="cp">
+            <pathelement path="${module.classpath}"/>
+            <pathelement path="${cp.extra}"/>
+        </path>
+        <path id="processor.cp">
+            <pathelement path="${module.run.classpath}"/>
+            <pathelement path="${cp.extra}"/>
+        </path>
+        <!-- Unlike ${module.classpath}, this does not use publicPackageJarDir, since processors need not be in public packages. -->
+        <!-- Also needs to include transitive dependencies. -->
+    </target>
+
+    <target name="up-to-date" depends="init">
+        <uptodate targetfile="${cluster}/${module.jar}" property="is.jar.uptodate">
+            <srcfiles dir="${src.dir}"/>
+            <srcfiles dir="nbproject">
+                <include name="project.xml"/>
+                <include name="project.properties"/>
+            </srcfiles>
+            <srcfiles dir=".">
+                <include name="manifest.mf"/>
+            </srcfiles>
+            <srcresources>
+                <path refid="cp"/>
+            </srcresources>
+        </uptodate>
+    </target>
+
+    <target name="update" depends="basic-init">
+        <fail
+            message="Please specify URL of catalog to perform the update from via -Dautoupdate.catalog.url=..."
+            unless="autoupdate.catalog.url"
+        />
+        <autoupdate
+            updatecenter="${autoupdate.catalog.url}"
+            todir="${cluster}"
+        >
+            <modules includes="${code.name.base}"/>
+        </autoupdate>
+    </target>
+
+    <target name="compile" depends="init,up-to-date" unless="is.jar.uptodate">
+        <mkdir dir="${build.classes.dir}"/>
+        <depend srcdir="${src.dir}" destdir="${build.classes.dir}" cache="build/depcache">
+            <classpath refid="cp"/>
+        </depend>
+        <nb-javac srcdir="${src.dir}" destdir="${build.classes.dir}" debug="${build.compiler.debug}" debuglevel="${build.compiler.debuglevel}" encoding="UTF-8"
+                deprecation="${build.compiler.deprecation}" optimize="${build.compiler.optimize}" source="${javac.source}" target="${javac.target}" includeantruntime="false">
+            <classpath refid="cp"/>
+            <compilerarg line="${javac.compilerargs}"/>
+            <processorpath refid="processor.cp"/>
+        </nb-javac>
+        <copy todir="${build.classes.dir}">
+            <fileset dir="${src.dir}" excludes="${jar-excludes}"/>
+        </copy>
+    </target>
+
+    <target name="compile-single" depends="init">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <mkdir dir="${build.classes.dir}"/>
+        <!-- XXX consider forcing debug=true and deprecation=true -->
+        <!-- XXX consider deleting the .class file first to force a rebuild -->
+        <depend srcdir="${src.dir}" destdir="${build.classes.dir}" cache="build/depcache">
+            <classpath refid="cp"/>
+        </depend>
+        <nb-javac srcdir="${src.dir}" destdir="${build.classes.dir}"
+               debug="${build.compiler.debug}" deprecation="${build.compiler.deprecation}" encoding="UTF-8"
+               source="${javac.source}" target="${javac.target}" includes="${javac.includes}" optimize="${build.compiler.optimize}" includeantruntime="false">
+            <classpath refid="cp"/>
+            <compilerarg line="${javac.compilerargs}"/>
+            <processorpath refid="processor.cp"/>
+        </nb-javac>
+    </target>
+
+    <target name="jar-prep" depends="init">
+        <mkdir dir="${cluster}/${module.jar.dir}"/>
+        <tstamp>
+            <format property="buildnumber" pattern="yyMMdd" timezone="UTC"/>
+        </tstamp>
+    </target>
+
+    <target name="jar" depends="init,compile,jar-prep" unless="is.jar.uptodate">
+        <!-- XXX it seems that using <manifest> forces the JAR to be recreated each time -->
+        <!-- (presumably due to the variable OIDE-M-I-V) -->
+        <!-- so might have to use e.g. <manifest> task (created in build/ somewhere)? -->
+        <!-- Cf: http://issues.apache.org/bugzilla/show_bug.cgi?id=29085 -->
+        <!-- This task adds some or all of: -Public-Packages, -Friends, Class-Path, -IDE-Dependencies, -Module-Dependencies, -Specification-Version, -Implementation-Version, -Build-Version, AutoUpdate-Show-In-Client -->
+        <jarwithmoduleattributes jarfile="${cluster}/${module.jar}" compress="${build.package.compress}" index="${build.package.index}" manifest="${manifest.mf}" stamp="${cluster}/.lastModified">
+            <fileset dir="${build.classes.dir}"/>
+        </jarwithmoduleattributes>
+    </target>
+
+    <!-- Can insert extra stuff in here: -->
+    <target name="netbeans-extra"/>
+
+    <target name="module-xml-regular" if="is.regular">
+        <mkdir dir="${cluster}/config/Modules"/>
+        <createmodulexml xmldir="${cluster}/config/Modules">
+            <enabled dir="${cluster}">
+                <include name="${module.jar}"/>
+            </enabled>
+        </createmodulexml>
+    </target>
+
+    <target name="module-xml-autoload" if="is.autoload">
+        <mkdir dir="${cluster}/config/Modules"/>
+        <createmodulexml xmldir="${cluster}/config/Modules">
+            <autoload dir="${cluster}">
+                <include name="${module.jar}"/>
+            </autoload>
+        </createmodulexml>
+    </target>
+
+    <target name="module-xml-eager" if="is.eager">
+        <mkdir dir="${cluster}/config/Modules"/>
+        <createmodulexml xmldir="${cluster}/config/Modules">
+            <eager dir="${cluster}">
+                <include name="${module.jar}"/>
+            </eager>
+        </createmodulexml>
+    </target>
+
+    <target name="module-auto-deps" depends="basic-init" if="has.module.auto.deps">
+        <mkdir dir="${cluster}/config/ModuleAutoDeps"/>
+        <copy file="${module.auto.deps.xml}" tofile="${cluster}/config/ModuleAutoDeps/${code.name.base.dashes}.xml"/>
+    </target>
+
+    <target name="release" depends="files-init" if="has.release.dir">
+        <mkdir dir="${cluster}"/>
+        <copy todir="${cluster}" overwrite="true">
+            <fileset dir="${release.dir}">
+                <patternset includes="${release.files}"/>
+            </fileset>
+        </copy>        
+    </target>
+
+    
+    <target name="chmod-executables" depends="-init-executables">
+        <chmod perm="a+x">
+            <fileset refid="module.executable.files"/>
+        </chmod>
+    </target>
+
+    <target name="verify-class-linkage" depends="jar,release">
+        <verifyclasslinkage jar="${cluster}/${module.jar}" failonerror="false" ignores="${module.jar.verifylinkageignores}" maxwarnings="10">
+            <classpath refid="cp"/>
+            <classpath path="${nbjdk.bootclasspath}"/>
+        </verifyclasslinkage>
+    </target>
+
+    <target name="-verify-apichanges"/><!-- just for overriding -->
+
+    <target name="-validate-layers" depends="init">
+        <parsemanifest manifest="${manifest.mf}" attribute="OpenIDE-Module-Layer" property="layer.file"/>
+        <!-- DTD from sources -->
+        <available file="${nb_all}/openide.filesystems/src/org/openide/filesystems/filesystem.dtd" type="file"
+            property="dtd.cp" value="${nb_all}/openide.filesystems/src"/>
+        <!-- DTD from platform -->
+        <pathconvert property="dtd.cp">
+            <pathfileset>
+                <path refid="cluster.path.id"/>
+                <filename name="core/org-openide-filesystems.jar"/>
+            </pathfileset>
+        </pathconvert>
+
+        <xmlvalidate warn="no"> <!--  failonerror="false" -->
+            <fileset file="${src.dir}/${layer.file}"/>
+            <xmlcatalog classpath="${dtd.cp}">
+                <dtd publicId="-//NetBeans//DTD Filesystem 1.0//EN"
+                location="org/openide/filesystems/filesystem.dtd"/>
+                <dtd publicId="-//NetBeans//DTD Filesystem 1.1//EN"
+                location="org/openide/filesystems/filesystem1_1.dtd"/>
+                <dtd publicId="-//NetBeans//DTD Filesystem 1.2//EN"
+                location="org/openide/filesystems/filesystem1_2.dtd"/>
+            </xmlcatalog>
+        </xmlvalidate>
+    </target>
+
+    <target name="netbeans" depends="init,jar,netbeans-extra,module-xml-regular,module-xml-autoload,
+            module-xml-eager,javahelp,module-auto-deps,release,chmod-executables,verify-class-linkage,
+            -validate-layers,-verify-apichanges">
+        <property name="module.files.toString" refid="module.files"/>
+        <echo level="verbose">Basic matching module files: ${module.files.toString}</echo>
+        <genlist outputfiledir="${cluster}" module="${module.jar}">
+            <fileset dir="${cluster}">
+                <patternset refid="module.files"/>
+            </fileset>
+        </genlist>
+    </target>
+
+    <target name="-jnlp-init">
+        <fail unless="jnlp.dest.dir" >
+            You have to provide value to jnlp.dest.dir property!
+        </fail>
+        <mkdir dir="${jnlp.dest.dir}" />
+        <makeurl property="jnlp.codebase" file="${jnlp.dest.dir}"/>
+        <property name="jnlp.signjar.alias" value="jnlp" />
+        <property name="jnlp.signjar.keystore" location="${jnlp.dest.dir}/default.keystore" />
+        <property name="jnlp.signjar.password" value="netbeans" />
+        <property name="jnlp.permissions" value="&lt;security&gt;&lt;all-permissions/&gt;&lt;/security&gt;"/>
+        <property name="jnlp.verify.excludes" value="" />
+        <!-- Oddly, <available> as a task overrides existing properties, which is not what we want here. -->
+        <condition property="jnlp.sign.jars" value="true">
+            <available file="${jnlp.signjar.keystore}"/>
+        </condition>
+        <property name="jnlp.sign.jars" value="false"/>
+        <property name="jnlp.indirect.jars" value="[NOTHING]"/>
+        <property name="jnlp.indirect.files" value="[NOTHING]"/>
+        <property name="jnlp.generate.versions" value="false"/>
+    </target>
+
+    <target name="jnlp" depends="init,netbeans,jnlp-master,-jnlp-init" description="Builds JNLP descriptor and signs JAR files" >
+        <makejnlp
+            dir="${jnlp.dest.dir}"
+            alias="${jnlp.signjar.alias}"
+            storepass="${jnlp.signjar.password}"
+            keystore="${jnlp.signjar.keystore}"
+            codebase="${jnlp.codebase}"
+            verify="true"
+            verifyexcludes="${jnlp.verify.excludes}"
+            permissions="${jnlp.permissions}"
+            signjars="${jnlp.sign.jars}"
+            processjarversions="${jnlp.generate.versions}"
+        >
+            <modules dir="${cluster}" >
+                <include name="${module.jar}" />
+            </modules>
+            <indirectjars dir="${cluster}" includes="${jnlp.indirect.jars}"/>
+            <indirectfiles dir="${cluster}" includes="${jnlp.indirect.files}"/>
+        </makejnlp>
+    </target>
+
+    <target name="jnlp-master" depends="init,netbeans" if="jnlp.master.dir" >
+        <property name="jnlp.master.codebase" value="" />
+        <makemasterjnlp
+            dir="${jnlp.master.dir}"
+            codebase="${jnlp.master.codebase}"
+        >
+            <modules dir="${cluster}" >
+                <include name="${module.jar}" />
+            </modules>
+        </makemasterjnlp>
+    </target>
+
+
+    <target name="-nbm-prompt-for-storepass" if="keystore" unless="storepass">
+        <input addproperty="storepass" message="Enter password for ${keystore}:"/>
+    </target>
+
+    <target name="-init-executables">
+        <property name="nbm.executable.files" value="[NOTHING]"/><!-- fallback -->
+        <fileset dir="${cluster}" id="module.executable.files" includes="${nbm.executable.files}"/>
+    </target>
+
+    <target name="nbm" depends="init,netbeans,-nbm-prompt-for-storepass,-init-executables" description="Build NBM archive.">
+        <mkdir dir="build"/>
+        <property name="nbm.target.cluster" value=""/> <!-- fallback -->
+        <property name="license.file.override" value="${license.file}"/>
+        <property name="use.pack200" value="true"/>
+        <property name="pack200.excludes" value=""/>
+        <makenbm file="build/${nbm}"
+                 productdir="${cluster}"
+                 module="${module.jar}"
+                 homepage="${nbm.homepage}"
+                 distribution="${nbm.distribution}"
+                 needsrestart="${nbm.needs.restart}"
+                 global="${nbm.is.global}"
+                 usepack200="${use.pack200}"
+                 pack200excludes="${pack200.excludes}"
+                 targetcluster="${nbm.target.cluster}"
+                 releasedate="${nbm.release.date}"
+                 moduleauthor="${nbm.module.author}">
+            <license file="${license.file.override}"/>
+            <signature keystore="${keystore}" storepass="${storepass}" alias="${nbm_alias}"/>
+            <updaterjar>
+                <pathfileset>
+                    <path refid="cluster.path.id"/>
+                    <filename name="modules/ext/updater.jar"/>
+                </pathfileset>
+            </updaterjar>
+            <executables refid="module.executable.files"/>
+        </makenbm>
+    </target>
+
+    <target name="test-preinit" depends="init"/>
+    <target name="test-init" depends="init,test-preinit,test-lib-init">
+        <property name="test.timeout" value="600000"/> <!-- 10min per test -->
+        <property name="test.run.args" value="-ea"/>
+        <property name="test.filter.trace" value="true"/>
+        <macrodef name="test-init">
+            <attribute name="test.type"/>
+            <sequential>
+                <property name="test.@{test.type}.dir" location="test/@{test.type}"/>
+                <property name="test.@{test.type}.src.dir" location="${test.@{test.type}.dir}/src"/>
+                <property name="test.@{test.type}.data.dir" location="${test.@{test.type}.dir}/data"/>
+                <property name="build.test.@{test.type}.dir" location="build/test/@{test.type}"/>
+                <property name="build.test.@{test.type}.classes.dir" location="${build.test.@{test.type}.dir}/classes"/>
+                <property name="build.test.@{test.type}.results.dir" location="${build.test.@{test.type}.dir}/results"/>
+                <property name="build.test.@{test.type}.work.dir" location="${build.test.@{test.type}.dir}/work"/>
+                <property name="extra.test.libs.dir" location="${test.dist.dir}/extralibs"/>
+                <!-- if project.xml doesn't contain test dependencies -->
+                <property name="test.@{test.type}.folder" location="build/test/@{test.type}/dist"/>
+                <property name="test.@{test.type}.out.folder" location="${test.@{test.type}.folder}"/>
+                <property name="test-@{test.type}-sys-prop.cluster.path.final" value="${cluster.path.final}:${cluster}"/> <!-- #153178, 176019 -->
+                <property name="test.@{test.type}.cp.extra" value=""/>
+                <path id="test.@{test.type}.cp">
+                    <!-- Cannot use <path refid="cp"/> since that uses ${module.classpath} and we want ${module.run.classpath}: -->
+                    <pathelement path="${test.@{test.type}.compile.cp}"/>
+                    <pathelement path="${cp.extra}"/>
+                    <pathelement location="${cluster}/${module.jar}"/>
+                    <path refid="test.unit.lib.cp"/>
+                    <!-- for compatibility with property based classpath-->
+                    <pathelement path="${module.run.classpath}"/>
+                    <pathelement path="${test.@{test.type}.cp.extra}"/>
+                </path>
+                <path id="test.@{test.type}.run.cp">
+                    <pathelement path="${build.test.@{test.type}.classes.dir}"/>
+                    <!-- Cannot use <path refid="cp"/> since that uses ${module.classpath} and we want ${module.run.classpath}: -->
+                    <pathelement path="${test.@{test.type}.runtime.cp}"/>
+                    <pathelement path="${cp.extra}"/>
+                    <pathelement location="${cluster}/${module.jar}"/>
+                    <path refid="test.unit.lib.cp"/>
+                    <!-- for compatibility with property based classpath-->
+                    <pathelement path="${module.run.classpath}"/>
+                    <pathelement path="${test.@{test.type}.run.cp.extra}"/>
+                    <pathelement path="${test.@{test.type}.cp.extra}"/>
+                </path>
+                <path id="test.@{test.type}.processor.cp">
+                    <path refid="processor.cp"/>
+                    <pathelement location="${cluster}/${module.jar}"/>
+                    <pathelement path="${test.@{test.type}.runtime.cp}"/>
+                    <pathelement path="${test.@{test.type}.cp.extra}"/>
+                </path>
+                <!-- path reference used in both compiler and executor -->
+                <propertyset id="test.@{test.type}.properties">
+                    <propertyset>
+                        <propertyref prefix="test-@{test.type}-sys-prop."/>
+                        <mapper type="glob" from="test-@{test.type}-sys-prop.*" to="*"/>
+                    </propertyset>
+                    <propertyset>
+                        <propertyref name="build.test.@{test.type}.work.dir"/>
+                        <mapper type="glob" from="build.test.@{test.type}.work.dir" to="nbjunit.workdir"/>
+                    </propertyset>
+                </propertyset>
+                <condition property="exists.test.@{test.type}.src.dir">
+                    <and>
+                        <available file="${test.@{test.type}.src.dir}" type="dir"/>
+                        <not>
+                            <istrue value="${disable.@{test.type}.tests}"/>
+                        </not>
+                    </and>
+                </condition>
+
+            </sequential>
+        </macrodef>
+        <test-init test.type="unit"/>
+        <test-init test.type="qa-functional"/>
+    </target>
+
+    <target name="test-build" depends="netbeans,test-dep-build,do-test-build,test-build-datajar" description="Compile and package all tests."/>
+
+    <macrodef name="test-dep-build">
+        <attribute name="test.type"/>
+        <sequential>
+            <sortsuitemodules unsortedmodules="${test.@{test.type}.testdep}" sortedmodulesproperty="mods.sorted" sorttests="true"/>
+            <subant buildpath="${mods.sorted}" target="do-test-build" />
+        </sequential>
+    </macrodef>
+    <target name="test-unit-dep-build" if="test.unit.testdep">
+        <test-dep-build test.type="unit"/>
+    </target>
+    <target name="test-qa-functional-dep-build" if="test.qa-functional.testdep">
+        <test-dep-build test.type="qa-functional"/>
+    </target>
+    <target name="test-dep-build" depends="test-unit-dep-build,test-qa-functional-dep-build"/>
+
+    <macrodef name="do-test-build">
+        <attribute name="test.type"/>
+        <sequential>
+            <fail >
+             Missing test dependency
+              Runtime classpath: ${test.@{test.type}.runtime.cp}
+              Compile classpath: ${test.@{test.type}.compile.cp}
+                <condition>
+                    <or>
+                        <contains string="${test.@{test.type}.runtime.cp}" substring="-missing-Module-Entries-:" />
+                        <contains string="${test.@{test.type}.compile.cp}" substring="-missing-Module-Entries-:" />
+                    </or>
+                </condition>
+            </fail>
+            <mkdir dir="${build.test.@{test.type}.classes.dir}"/>
+            <mkdir dir="${test.dist.dir}"/>
+            <depend srcdir="${test.@{test.type}.src.dir}" destdir="${build.test.@{test.type}.classes.dir}" cache="${build.test.@{test.type}.dir}/depcache">
+                <classpath refid="test.@{test.type}.cp"/>
+            </depend>
+            <property name="test.excludes" value=""/> <!-- # 113770 -->
+            <nb-javac srcdir="${test.@{test.type}.src.dir}" destdir="${build.test.@{test.type}.classes.dir}" excludes="${test.excludes}"
+                   debug="true" deprecation="${build.compiler.deprecation}" encoding="UTF-8"
+                   source="${javac.source}" target="${javac.target}" optimize="${build.compiler.optimize}" includeantruntime="false">
+                <classpath refid="test.@{test.type}.cp"/>
+                <compilerarg line="${javac.compilerargs}"/>
+                <processorpath refid="test.@{test.type}.processor.cp"/>
+            </nb-javac>
+            <copy todir="${build.test.@{test.type}.classes.dir}">
+                <fileset dir="${test.@{test.type}.src.dir}">
+                    <exclude name="**/*.java"/>
+                </fileset>
+            </copy>
+            <delete dir="${build.test.@{test.type}.dir}/data"/>
+            <copy todir="${build.test.@{test.type}.dir}">
+                <fileset dir="${test.@{test.type}.dir}">
+                    <include name="data/**"/>
+                </fileset>
+            </copy>
+
+            <available file="${test.@{test.type}.data.dir}" type="dir" property="exists.test.@{test.type}.data"/>
+            <!-- test distribution -->
+            <mkdir dir="${extra.test.libs.dir}"/>
+            <mkdir dir="${test.@{test.type}.out.folder}"/>
+            <jar destfile="${test.@{test.type}.out.folder}/tests.jar" basedir="${build.test.@{test.type}.classes.dir}" filesetmanifest="merge"/>
+            <!-- create properties -->
+            <shorterpaths inref="test.@{test.type}.run.cp"
+                          out="test.@{test.type}.run.cp.short"
+                          extralibs="extra.test.libs.short"
+                          extralibsdir="${extra.test.libs.dir}"
+                          testproperties="${test.@{test.type}.out.folder}/test.properties">
+                <replacement dir="${netbeans.dest.dir}" name="netbeans.dest.dir"/> <!-- for pre-7.0 and NB.org projects -->
+                <replacement dir="${test.dist.dir}" name="test.dist.dir"/>
+                <!-- XXX this will not be right on Macs: -->
+                <replacement dir="${nbjdk.home}/jre" name="java.home"/>
+                <replacement dir="${nbjdk.home}" name="java.home.parent"/>
+            </shorterpaths>
+        </sequential>
+    </macrodef>
+    <target name="do-unit-test-build" depends="init,test-init" if="exists.test.unit.src.dir">
+        <do-test-build test.type="unit"/>
+    </target>
+    <target name="do-qa-functional-test-build" depends="init,test-init" if="exists.test.qa-functional.src.dir">
+        <do-test-build test.type="qa-functional"/>
+    </target>
+    <target name="do-test-build" depends="do-unit-test-build,do-qa-functional-test-build"/>
+
+    <target name="test-unit-build-datajar" depends="do-test-build" if="exists.test.unit.data">
+        <zip destfile="${test.unit.out.folder}/data.zip" basedir="${test.unit.data.dir}"/>
+    </target>
+    <target name="test-qa-functional-build-datajar" depends="do-test-build" if="exists.test.qa-functional.data">
+        <zip destfile="${test.qa-functional.out.folder}/data.zip" basedir="${test.qa-functional.data.dir}"/>
+    </target>
+    <target name="test-build-datajar" depends="test-unit-build-datajar,test-qa-functional-build-datajar"/>
+
+    <target name="compile-test-single" depends="init,test-init,jar">
+        <macrodef name="compile-test-single">
+            <attribute name="test.type"/>
+            <sequential>
+                <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+                <mkdir dir="${build.test.@{test.type}.classes.dir}"/>
+                <!-- XXX consider forcing deprecation=true -->
+                <!-- XXX consider deleting the .class file first to force a rebuild -->
+                <depend srcdir="${test.@{test.type}.src.dir}" destdir="${build.test.@{test.type}.classes.dir}" cache="${build.test.@{test.type}.dir}/depcache">
+                    <classpath refid="test.@{test.type}.cp"/>
+                </depend>
+                <nb-javac srcdir="${test.@{test.type}.src.dir}" destdir="${build.test.@{test.type}.classes.dir}"
+                       debug="true" deprecation="${build.compiler.deprecation}" encoding="UTF-8"
+                       source="${javac.source}" target="${javac.target}" includeantruntime="false" optimize="${build.compiler.optimize}" includes="${javac.includes}">
+                    <classpath refid="test.@{test.type}.cp"/>
+                    <compilerarg line="${javac.compilerargs}"/>
+                    <processorpath refid="test.@{test.type}.processor.cp"/>
+                </nb-javac>
+                <copy todir="${build.test.@{test.type}.classes.dir}">
+                    <fileset dir="${test.@{test.type}.src.dir}">
+                        <exclude name="**/*.java"/>
+                    </fileset>
+                </copy>
+                <copy todir="${build.test.@{test.type}.dir}">
+                    <fileset dir="${test.@{test.type}.dir}">
+                        <include name="data/**"/>
+                    </fileset>
+                </copy>
+            </sequential>
+        </macrodef>
+        <property name="test.type" value="unit"/>
+        <compile-test-single test.type="${test.type}"/>
+    </target>
+
+    <macrodef name="metaproperty">
+        <attribute name="name"/>
+        <attribute name="value"/>
+        <sequential>
+            <property name="@{name}" value="${@{value}}"/>
+        </sequential>
+    </macrodef>
+    <macrodef name="test">
+        <attribute name="test.type"/>
+        <attribute name="disable.apple.ui" default="false"/>
+        <sequential>
+            <property name="test.config" value="default"/>
+            <property name="test.config.default.includes" value="**/*Test.class"/>
+            <property name="test.config.${test.config}.includes" value="NOTHING"/>
+            <metaproperty name="test.includes" value="test.config.${test.config}.includes"/>
+            <property name="test.config.${test.config}.excludes" value=""/>
+            <metaproperty name="test.excludes" value="test.config.${test.config}.excludes"/>
+            <mkdir dir="${build.test.@{test.type}.results.dir}"/>
+            <junit showoutput="true" fork="true" failureproperty="tests.failed" errorproperty="tests.failed" filtertrace="${test.filter.trace}" tempdir="${build.test.@{test.type}.results.dir}" timeout="${test.timeout}">
+                <batchtest todir="${build.test.@{test.type}.results.dir}">
+                    <fileset dir="${build.test.@{test.type}.classes.dir}" includes="${test.includes}" excludes="${test.excludes}"/>
+                </batchtest>
+                <classpath refid="test.@{test.type}.run.cp"/>
+                <syspropertyset refid="test.@{test.type}.properties"/>
+                <jvmarg value="-Xbootclasspath/p:${bootclasspath.prepend}"/>
+                <jvmarg line="${test.run.args}"/>
+                <!--needed to have tests NOT to steal focus when running, works in latest apple jdk update only.-->
+                <sysproperty key="apple.awt.UIElement" value="@{disable.apple.ui}"/>
+                <formatter type="brief" usefile="false"/>
+                <formatter type="xml"/>
+            </junit>
+            <fail message="Some tests failed; see details above.">
+                <condition>
+                    <and>
+                        <isset property="tests.failed"/>
+                        <isfalse value="${continue.after.failing.tests}"/>
+                    </and>
+                </condition>
+            </fail>
+        </sequential>
+    </macrodef>
+    <target name="test-unit" depends="init,test-init,test-build" if="exists.test.unit.src.dir">
+        <test test.type="unit" disable.apple.ui="true"/>
+    </target>
+    <target name="test-qa-functional" depends="init,test-init,test-build" if="exists.test.qa-functional.src.dir">
+        <test test.type="qa-functional"/>
+    </target>
+
+    <target name="test-generate-html">
+        <subant target="-test-browse-html" genericantfile="${ant.file}" inheritall="true">
+            <dirset dir="build/test" includes="*/results"/>
+        </subant>
+    </target>
+
+    <target name="-do-test-generate-html">
+        <junitreport todir=".">
+            <fileset dir=".">
+                <include name="TEST-*.xml"/>
+            </fileset>
+            <report format="frames" todir="html"/>
+        </junitreport>
+        <makeurl file="${basedir}/html/index.html" property="test.report.url"/>
+        <echo>
+
+        Report URL: ${test.report.url}
+        </echo>
+    </target>
+
+    <target name="-test-browse-html" if="netbeans.home" depends="-do-test-generate-html">
+        <nbbrowse file="html/index.html"/>
+    </target>
+    <target name="test" depends="test-unit,test-qa-functional"/>
+
+    <target name="test-single" depends="init,test-init,test-build">
+        <macrodef name="test-single">
+            <attribute name="test.type"/>
+            <sequential>
+                <fail unless="test.includes">Must set test.includes</fail>
+                <mkdir dir="${build.test.@{test.type}.results.dir}"/>
+                <junit showoutput="true" fork="true" failureproperty="tests.failed" errorproperty="tests.failed" filtertrace="${test.filter.trace}" tempdir="${build.test.@{test.type}.results.dir}" timeout="${test.timeout}">
+                    <batchtest todir="${build.test.@{test.type}.results.dir}">
+                        <fileset dir="${test.@{test.type}.src.dir}" includes="${test.includes}"/>
+                    </batchtest>
+                    <classpath refid="test.@{test.type}.run.cp"/>
+                    <syspropertyset refid="test.@{test.type}.properties"/>
+                    <jvmarg line="${test.run.args}"/>
+                    <jvmarg value="-Xbootclasspath/p:${bootclasspath.prepend}"/>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                </junit>
+                <fail if="tests.failed" unless="continue.after.failing.tests">Some tests failed; see details above.</fail>
+            </sequential>
+        </macrodef>
+        <property name="test.type" value="unit"/>
+        <test-single test.type="${test.type}"/>
+    </target>
+
+    <target name="do-debug-test-single" depends="test-init">
+        <macrodef name="do-debug-test-single">
+            <attribute name="test.type"/>
+            <sequential>
+                <fail unless="test.class">Must set test.class</fail>
+                <property name="test.report.file" location="${build.test.@{test.type}.results.dir}/TEST-${test.class}.xml"/>
+                <delete file="${test.report.file}"/>
+                <mkdir dir="${build.test.@{test.type}.results.dir}"/>
+                <touch file="${test.report.file}" verbose="false"/>   <!-- must exist, otherwise the XML formatter would fail -->
+                <java fork="true" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner">
+                    <jvmarg value="-Xdebug"/>
+                    <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
+                    <jvmarg line="${test.run.args}"/>
+                    <classpath>
+                        <path refid="test.@{test.type}.run.cp"/>
+                        <pathelement location="${ant.home}/lib/ant.jar"/>
+                        <pathelement location="${ant.home}/lib/ant-junit.jar"/>
+                    </classpath>
+                    <jvmarg value="-Xbootclasspath/p:${bootclasspath.prepend}"/>
+                    <syspropertyset refid="test.@{test.type}.properties"/>
+                    <arg value="${test.class}"/>
+                    <arg value="showoutput=true"/>
+                    <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
+                    <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
+                </java>
+            </sequential>
+        </macrodef>
+        <property name="test.type" value="unit"/>
+        <do-debug-test-single test.type="${test.type}"/>
+    </target>
+
+    <target name="debug-test-single" depends="init,test-init,test-build,do-debug-test-single"/>
+
+    <target name="debug-test-single-nb" depends="init,test-init,test-build,-jdk-presetdef-nbjpdastart" if="netbeans.home">
+        <macrodef name="debug-test-single-nb">
+            <attribute name="test.type"/>
+            <sequential>
+                <fail unless="test.class">Must set test.class</fail>
+                <nbjpdastart transport="dt_socket" addressproperty="jpda.address" name="${test.class}">
+                    <classpath>
+                        <path refid="test.@{test.type}.run.cp"/>
+                        <!-- Permit extra sources to be searched even if they are not in the actual CP. -->
+                        <!-- Used e.g. from ant/test/unit since some tests use dynamic loading: -->
+                        <pathelement path="${test.@{test.type}.debug.cp.extra}"/>
+                    </classpath>
+                </nbjpdastart>
+                <antcall target="do-debug-test-single"/>
+            </sequential>
+        </macrodef>
+        <property name="test.type" value="unit"/>
+        <debug-test-single-nb test.type="${test.type}"/>
+    </target>
+
+    <target name="run-test-main"  depends="init,test-init,test-build">
+        <macrodef name="tjava">
+            <attribute name="test.type"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <fail unless="main.class">Must set main.class.</fail>
+                <mkdir dir="${build.test.@{test.type}.results.dir}"/>
+                <java classname="${main.class}" dir="${build.test.@{test.type}.results.dir}" fork="true">
+                    <classpath refid="test.@{test.type}.run.cp"/>
+                    <syspropertyset refid="test.@{test.type}.properties"/>
+                    <jvmarg line="${test.run.args}"/>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+        <property name="test.type" value="unit"/> <!-- compatibility -->
+        <tjava test.type="${test.type}"/>
+    </target>
+
+    <target name="do-debug-test-main" depends="test-init">
+        <macrodef name="do-debug-test-main">
+            <attribute name="test.type"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <fail unless="main.class">Must set main.class.</fail>
+                <mkdir dir="${build.test.@{test.type}.results.dir}"/>
+                <java fork="true" classname="${main.class}">
+                    <jvmarg value="-Xdebug"/>
+                    <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
+                    <jvmarg line="${test.run.args}"/>
+                    <classpath refid="test.@{test.type}.run.cp"/>
+                    <syspropertyset refid="test.@{test.type}.properties"/>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+        <property name="test.type" value="unit"/>
+        <do-debug-test-main test.type="${test.type}"/>
+    </target>
+
+    <target name="debug-test-main-nb" depends="init,test-init,test-build,-jdk-presetdef-nbjpdastart" if="netbeans.home">
+        <macrodef name="debug-test-main-nb">
+            <attribute name="test.type"/>
+            <sequential>
+                <fail unless="main.class">Must set main.class</fail>
+                <nbjpdastart transport="dt_socket" addressproperty="jpda.address" name="${main.class}">
+                    <classpath>
+                        <path refid="test.@{test.type}.run.cp"/>
+                        <!-- Permit extra sources to be searched even if they are not in the actual CP. -->
+                        <!-- Used e.g. from ant/test/unit since some tests use dynamic loading: -->
+                        <pathelement path="${test.@{test.type}.debug.cp.extra}"/>
+                    </classpath>
+                </nbjpdastart>
+                <antcall target="do-debug-test-main"/>
+            </sequential>
+        </macrodef>
+        <property name="test.type" value="unit"/>
+        <debug-test-main-nb test.type="${test.type}"/>
+    </target>
+    
+    <target name="-pre-debug-fix" depends="init">
+        <fail unless="fix.class">Must set fix.class to e.g. org/netbeans/modules/foo/Bar</fail>
+        <property name="javac.includes" value="${fix.class}.java"/>
+    </target>
+    <target name="debug-fix-nb" if="netbeans.home" depends="init,-pre-debug-fix,compile-single">
+        <nbjpdareload>
+            <fileset includes="${fix.class}*.class" dir="${build.classes.dir}"/>
+        </nbjpdareload>
+    </target>
+    <target name="debug-fix-test-nb" if="netbeans.home" depends="init,-pre-debug-fix,compile-test-single">
+        <macrodef name="debug-fix-test-nb">
+            <attribute name="test.type"/>
+            <sequential>
+                <nbjpdareload>
+                    <fileset includes="${fix.class}*.class" dir="${build.test.@{test.type}.classes.dir}"/>
+                </nbjpdareload>
+            </sequential>
+        </macrodef>
+        <property name="test.type" value="unit"/>
+        <debug-fix-test-nb test.type="${test.type}"/>
+    </target>
+
+    <target name="profile-test-single-nb" depends="init,test-init,test-build,-jdk-presetdef-nbprofiledirect">
+        <macrodef name="profile-test-single-nb">
+            <attribute name="test.type"/>
+            <sequential>
+                <fail unless="profile.class">Must set profile.class</fail>
+                <mkdir dir="${build.test.@{test.type}.results.dir}"/>
+                <nbprofiledirect
+                    jvmargsproperty="profiler.jvmargs"
+                    >
+                    <classpath refid="test.@{test.type}.run.cp"/>
+                </nbprofiledirect>
+                <junit showoutput="true" fork="true" failureproperty="tests.failed" errorproperty="tests.failed" filtertrace="${test.filter.trace}" tempdir="${build.test.@{test.type}.results.dir}">
+                    <env key="${profiler.info.pathvar}" path="${profiler.info.agentpath}:${profiler.current.path}"/>
+                    <jvmarg value="${profiler.info.jvmargs.agent}"/>
+                    <jvmarg line="${profiler.info.jvmargs}"/>
+                    <test name="${profile.class}" todir="${build.test.@{test.type}.results.dir}"/>
+                    <classpath refid="test.@{test.type}.run.cp"/>
+                    <jvmarg value="-Xbootclasspath/p:${bootclasspath.prepend}"/>
+                    <syspropertyset refid="test.@{test.type}.properties"/>
+                    <jvmarg line="${test.run.args}"/>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                </junit>
+                <fail if="tests.failed">Some tests failed; see details above.</fail>
+            </sequential>
+        </macrodef>
+        <property name="test.type" value="unit"/>
+        <profile-test-single-nb test.type="${test.type}"/>
+    </target>
+
+    <target name="-javadoc-init" depends="init">
+        <!-- #71884: default Javadoc title and header -->
+        <property file="${manifest.mf}" prefix="mf."/>
+        <property file="${src.dir}/${mf.OpenIDE-Module-Localizing-Bundle}" prefix="bundle."/>
+        <condition property="javadoc.title" value="${bundle.OpenIDE-Module-Name}">
+            <isset property="bundle.OpenIDE-Module-Name"/>
+        </condition>
+        <property name="javadoc.title" value="${code.name.base.dashes}"/> <!-- fallback -->
+        <condition property="mf.OpenIDE-Module-Specification-Version" value="${spec.version.base}"> <!-- fallback -->
+            <isset property="spec.version.base"/>
+        </condition>
+        <property name="mf.OpenIDE-Module" value="${code.name.base.dashes}"/> <!-- fallback -->
+        <property name="mf.OpenIDE-Module-Implementation-Version" value=""/> <!-- fallback -->
+        <property name="javadoc.header" value="${mf.OpenIDE-Module} ${mf.OpenIDE-Module-Specification-Version} ${mf.OpenIDE-Module-Implementation-Version}"/>
+    </target>
+
+    <target name="arch" depends="init" description="Process an arch.xml, creating it if it does not yet exist.">
+        <fail unless="javadoc.arch">You must define e.g. javadoc.arch=$${basedir}/arch.xml in project.properties</fail>
+        <mkdir dir="build"/>
+        <property name="arch.output.html" location="build/arch.html"/>
+        <property name="arch.generate" value="true"/>
+        <arch answers="${javadoc.arch}" output="${arch.output.html}"
+            project="nbproject/project.xml"
+        />
+    </target>
+
+    <target name="-arch-nb-check"> <!-- #67438: might not yet exist, if arch file newly generated as skeleton -->
+        <condition property="-arch-nb-run">
+            <and>
+                <isset property="netbeans.home"/>
+                <available file="${arch.output.html}"/>
+            </and>
+        </condition>
+    </target>
+    <target name="arch-nb" depends="init,arch,-arch-nb-check" if="-arch-nb-run" description="Process an arch.xml, creating it if it does not yet exist, and display the result.">
+        <nbbrowse file="${arch.output.html}"/>
+    </target>
+
+    <target name="-testuserdir-delete-init" depends="files-init">
+        <property name="test.user.dir" location="build/testuserdir"/>
+        <property name="test.user.dir.lock" location="${test.user.dir}/lock"/>
+        <available property="app.running" file="${test.user.dir.lock}"/>
+    </target>
+    <target name="-testuserdir-delete-ok" depends="-testuserdir-delete-init" unless="app.running">
+        <delete dir="${test.user.dir}"/>
+    </target>
+    <target name="-testuserdir-delete-fail" depends="-testuserdir-delete-init" if="app.running">
+        <!-- #66799: best to warn about this condition... -->
+        <fail>Will not delete ${test.user.dir} because ${test.user.dir.lock} still exists; kill any running process and delete lock file if necessary</fail>
+    </target>
+    <target name="testuserdir-delete" depends="-testuserdir-delete-ok,-testuserdir-delete-fail" description="Delete testing user directory (if the application is not running); clears any saved settings etc."/>
+
+    <target name="clean" depends="files-init,testuserdir-delete,test-clean">
+        <delete failonerror="false" includeemptydirs="true">
+            <fileset dir="${build.classes.dir}" />
+            <fileset dir="build">
+                <exclude name="testuserdir/"/>
+            </fileset>
+        </delete>
+        <delete dir="${netbeans.javadoc.dir}/${code.name.base.dashes}"/>
+        <delete file="${netbeans.javadoc.dir}/${code.name.base.dashes}.zip"/>
+        <delete includeemptydirs="true" failonerror="false"> <!-- #59457: OK if cluster does not exist currently -->
+            <fileset dir="${cluster}">
+                <patternset refid="module.files"/>
+            </fileset>
+        </delete>
+        <delete file="${cluster}/update_tracking/${code.name.base.dashes}.xml"/>
+	<delete file="${netbeans.dest.dir}/${module.cluster.name}.built" failonerror="false"/>
+    </target>
+    <target name="test-clean" depends="basic-init,files-init">
+        <macrodef name="test-clean">
+            <attribute name="test.type"/>
+            <sequential>
+                <parseprojectxml project=".">
+                    <testtype name="@{test.type}" folder="test.@{test.type}.folder"/>
+                </parseprojectxml>
+                <property name="test.@{test.type}.out.folder" location="${test.@{test.type}.folder}"/>
+                <delete dir="${test.@{test.type}.out.folder}"/>
+            </sequential>
+        </macrodef>
+        <test-clean test.type="unit"/>
+        <test-clean test.type="qa-functional"/>
+    </target>
+
+    <target name="fix-dependencies" depends="basic-init" description="Removes unused compilation dependencies on other modules.">
+        <property name="build.compiler.deprecation" value="false" />
+        <fixdependencies antfile="../../build.xml" buildtarget="netbeans" cleantarget="clean" failonerror="true" sanitycheck="false">
+            <replace codenamebase="org.openide" addcompiletime="true" >
+                <module codenamebase="org.openide.filesystems" spec="6.2"/>
+                <module codenamebase="org.openide.util" spec="6.2"/>
+                <module codenamebase="org.openide.util.enumerations" spec="6.2"/>
+                <module codenamebase="org.openide.modules" spec="6.2"/>
+                <module codenamebase="org.openide.nodes" spec="6.2"/>
+                <module codenamebase="org.openide.explorer" spec="6.2"/>
+                <module codenamebase="org.openide.awt" spec="6.2"/>
+                <module codenamebase="org.openide.dialogs" spec="6.2"/>
+                <module codenamebase="org.openide.compat" spec="6.2"/>
+                <module codenamebase="org.openide.options" spec="6.2"/>
+                <module codenamebase="org.openide.windows" spec="6.2"/>
+                <module codenamebase="org.openide.text" spec="6.2"/>
+                <module codenamebase="org.openide.actions" spec="6.2"/>
+                <module codenamebase="org.openide.loaders" spec="5.3"/>
+            </replace>
+            <replace codenamebase="org.openide.util" addcompiletime="true" >
+                <module codenamebase="org.openide.util" spec="8.0"/>
+                <module codenamebase="org.openide.util.lookup" spec="8.0"/>
+            </replace>
+
+            <fileset dir="nbproject" >
+                <include name="project.xml" />
+            </fileset>
+        </fixdependencies>
+    </target>
+
+    <target name="fix-test-dependencies" depends="basic-init" description="Moves classpath for tests from project.properties to project.xml.">
+        <fixtestdeps projectXml="nbproject/project.xml"
+                  propertiesFile="nbproject/project.properties"/>
+    </target>
+
+    <target name="display-coverage-report" depends="coverage-report"
+        description="Creates and displays unit test coverage report for this module">
+        <fail unless="testcoverage.unit.report.dir">
+Property testcoverage.unit.report.dir not set. Test coverage script may be missing in ${harness.dir}.
+        </fail>
+        <nbbrowse file="${testcoverage.unit.report.dir}/index.html"/>
+    </target>
+    
+</project>

+ 9 - 0
harness/config/Modules/org-netbeans-insane.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//NetBeans//DTD Module Status 1.0//EN"
+                        "http://www.netbeans.org/dtds/module-status-1_0.dtd">
+<module name="org.netbeans.insane">
+    <param name="autoload">true</param>
+    <param name="eager">false</param>
+    <param name="jar">modules/org-netbeans-insane.jar</param>
+    <param name="reloadable">false</param>
+</module>

+ 9 - 0
harness/config/Modules/org-netbeans-libs-nbi-ant.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//NetBeans//DTD Module Status 1.0//EN"
+                        "http://www.netbeans.org/dtds/module-status-1_0.dtd">
+<module name="org.netbeans.libs.nbi.ant">
+    <param name="autoload">true</param>
+    <param name="eager">false</param>
+    <param name="jar">modules/org-netbeans-libs-nbi-ant.jar</param>
+    <param name="reloadable">false</param>
+</module>

+ 9 - 0
harness/config/Modules/org-netbeans-libs-nbi-engine.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//NetBeans//DTD Module Status 1.0//EN"
+                        "http://www.netbeans.org/dtds/module-status-1_0.dtd">
+<module name="org.netbeans.libs.nbi.engine">
+    <param name="autoload">true</param>
+    <param name="eager">false</param>
+    <param name="jar">modules/org-netbeans-libs-nbi-engine.jar</param>
+    <param name="reloadable">false</param>
+</module>

+ 9 - 0
harness/config/Modules/org-netbeans-modules-apisupport-harness.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//NetBeans//DTD Module Status 1.0//EN"
+                        "http://www.netbeans.org/dtds/module-status-1_0.dtd">
+<module name="org.netbeans.modules.apisupport.harness">
+    <param name="autoload">true</param>
+    <param name="eager">false</param>
+    <param name="jar">modules/org-netbeans-modules-apisupport-harness.jar</param>
+    <param name="reloadable">false</param>
+</module>

+ 9 - 0
harness/config/Modules/org-netbeans-modules-apisupport-tc-cobertura.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//NetBeans//DTD Module Status 1.0//EN"
+                        "http://www.netbeans.org/dtds/module-status-1_0.dtd">
+<module name="org.netbeans.modules.apisupport.tc.cobertura">
+    <param name="autoload">true</param>
+    <param name="eager">false</param>
+    <param name="jar">modules/org-netbeans-modules-apisupport-tc-cobertura.jar</param>
+    <param name="reloadable">false</param>
+</module>

+ 9 - 0
harness/config/Modules/org-netbeans-modules-jellytools-platform.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//NetBeans//DTD Module Status 1.0//EN"
+                        "http://www.netbeans.org/dtds/module-status-1_0.dtd">
+<module name="org.netbeans.modules.jellytools.platform">
+    <param name="autoload">true</param>
+    <param name="eager">false</param>
+    <param name="jar">modules/org-netbeans-modules-jellytools-platform.jar</param>
+    <param name="reloadable">false</param>
+</module>

+ 9 - 0
harness/config/Modules/org-netbeans-modules-jemmy.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//NetBeans//DTD Module Status 1.0//EN"
+                        "http://www.netbeans.org/dtds/module-status-1_0.dtd">
+<module name="org.netbeans.modules.jemmy">
+    <param name="autoload">true</param>
+    <param name="eager">false</param>
+    <param name="jar">modules/org-netbeans-modules-jemmy.jar</param>
+    <param name="reloadable">false</param>
+</module>

+ 9 - 0
harness/config/Modules/org-netbeans-modules-nbjunit.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module PUBLIC "-//NetBeans//DTD Module Status 1.0//EN"
+                        "http://www.netbeans.org/dtds/module-status-1_0.dtd">
+<module name="org.netbeans.modules.nbjunit">
+    <param name="autoload">true</param>
+    <param name="eager">false</param>
+    <param name="jar">modules/org-netbeans-modules-nbjunit.jar</param>
+    <param name="reloadable">false</param>
+</module>

+ 30 - 0
harness/etc/Info.plist

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
+<plist version="0.9">
+  <dict>
+
+    <key>CFBundleName</key>
+    <string>${app.name}</string>
+    
+    <key>CFBundleVersion</key>
+    <string>${app.version}</string>
+    
+    <key>CFBundleExecutable</key>
+    <string>${app.name}</string>
+    
+    <key>CFBundlePackageType</key>
+    <string>APPL</string>
+    
+    <key>CFBundleShortVersionString</key>
+    <string>${app.version}</string>
+    
+    <key>CFBundleSignature</key>
+    <string>????</string>
+    
+    <key>CFBundleInfoDictionaryVersion</key>
+    <string>6.0</string>
+    
+    <key>CFBundleIconFile</key>
+    <string>${app.name}.icns</string>
+  </dict>
+</plist>

+ 14 - 0
harness/etc/app.conf

@@ -0,0 +1,14 @@
+# ${HOME} will be replaced by user home directory according to platform
+default_userdir="${HOME}/.${APPNAME}/dev"
+default_mac_userdir="${HOME}/Library/Application Support/${APPNAME}/dev"
+
+# options used by the launcher by default, can be overridden by explicit
+# command line switches
+default_options="--branding ${branding.token} -J-Xms24m -J-Xmx64m"
+# for development purposes you may wish to append: -J-Dnetbeans.logger.console=true -J-ea
+
+# default location of JDK/JRE, can be overridden by using --jdkhome <dir> switch
+#jdkhome="/path/to/jdk"
+
+# clusters' paths separated by path.separator (semicolon on Windows, colon on Unices)
+#extra_clusters=

BIN
harness/etc/applicationIcon.icns


+ 242 - 0
harness/jdk.xml

@@ -0,0 +1,242 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+Other names may be trademarks of their respective owners.
+
+
+The contents of this file are subject to the terms of either the GNU
+General Public License Version 2 only ("GPL") or the Common
+Development and Distribution License("CDDL") (collectively, the
+"License"). You may not use this file except in compliance with the
+License. You can obtain a copy of the License at
+http://www.netbeans.org/cddl-gplv2.html
+or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+specific language governing permissions and limitations under the
+License.  When distributing the software, include this License Header
+Notice in each file and include the License file at
+nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
+particular file as subject to the "Classpath" exception as provided
+by Oracle in the GPL Version 2 section of the License file that
+accompanied this code. If applicable, add the following below the
+License Header, with the fields enclosed by brackets [] replaced by
+your own identifying information:
+"Portions Copyrighted [year] [name of copyright owner]"
+
+Contributor(s):
+
+The Original Software is NetBeans. The Initial Developer of the Original
+Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
+Microsystems, Inc. All Rights Reserved.
+
+If you wish your version of this file to be governed by only the CDDL
+or only the GPL Version 2, indicate your decision by adding
+"[Contributor] elects to include this software in this distribution
+under the [CDDL or GPL Version 2] license." If you do not indicate a
+single choice of license, a recipient has the option to distribute
+your version of this file under either the CDDL, the GPL Version 2 or
+to extend the choice of license to its licensees as provided above.
+However, if you add GPL Version 2 code and therefore, elected the GPL
+Version 2 license, then the option applies only if the new code is
+made subject to such option by the copyright holder.
+-->
+<project name="jdk" basedir=".">
+
+    <description>
+        Permits selection of a JDK to use when building and running NetBeans.
+        For details on usage, see apisupport/harness/release/README (in sources)
+        or harness/README (in binaries). Cf. issue #63541.
+    </description>
+
+    <target name="-jdk-pre-preinit">
+        <condition property="nbjdk.active-or-nbjdk.home">
+            <or>
+                <and>
+                    <isset property="nbjdk.active"/>
+                    <not>
+                        <equals arg1="${nbjdk.active}" arg2="default"/>
+                    </not>
+                </and>
+                <and>
+                    <isset property="nbjdk.home"/>
+                    <not>
+                        <isset property="nbjdk.home.defaulted"/>
+                    </not>
+                </and>
+            </or>
+        </condition>
+    </target>
+
+    <target name="-jdk-preinit" depends="-jdk-pre-preinit" if="nbjdk.active-or-nbjdk.home" xmlns:common="http://nbbuild.netbeans.org/jdk.xml">
+        <macrodef name="property" uri="http://nbbuild.netbeans.org/jdk.xml">
+            <attribute name="name"/>
+            <attribute name="value"/>
+            <sequential>
+                <property name="@{name}" value="${@{value}}"/>
+            </sequential>
+        </macrodef>
+        <common:property name="nbjdk.home" value="platforms.${nbjdk.active}.home"/>
+        <common:property name="nbjdk.javac.tmp" value="platforms.${nbjdk.active}.javac"/>
+        <condition property=".exe" value=".exe">
+            <os family="windows"/> <!-- #72467 -->
+        </condition>
+        <property name=".exe" value=""/>
+        <condition property="nbjdk.javac" value="${nbjdk.home}/bin/javac${.exe}">
+            <equals arg1="${nbjdk.javac.tmp}" arg2="$${platforms.${nbjdk.active}.javac}"/>
+        </condition>
+        <property name="nbjdk.javac" value="${nbjdk.javac.tmp}"/>
+        <common:property name="nbjdk.java.tmp" value="platforms.${nbjdk.active}.java"/>
+        <condition property="nbjdk.java" value="${nbjdk.home}/bin/java${.exe}">
+            <equals arg1="${nbjdk.java.tmp}" arg2="$${platforms.${nbjdk.active}.java}"/>
+        </condition>
+        <property name="nbjdk.java" value="${nbjdk.java.tmp}"/>
+        <common:property name="nbjdk.javadoc.tmp" value="platforms.${nbjdk.active}.javadoc"/>
+        <condition property="nbjdk.javadoc" value="${nbjdk.home}/bin/javadoc${.exe}">
+            <equals arg1="${nbjdk.javadoc.tmp}" arg2="$${platforms.${nbjdk.active}.javadoc}"/>
+        </condition>
+        <property name="nbjdk.javadoc" value="${nbjdk.javadoc.tmp}"/>
+        <common:property name="nbjdk.bootclasspath.tmp" value="platforms.${nbjdk.active}.bootclasspath"/>
+        <condition property="nbjdk.bootclasspath" value="${nbjdk.home}/../Classes/classes.jar:${nbjdk.home}/../Classes/jsse.jar:${nbjdk.home}/../Classes/jce.jar:${nbjdk.home}/../Classes/ui.jar:${nbjdk.home}/../Classes/laf.jar:${nbjdk.home}/../Classes/sunrsasign.jar:${nbjdk.home}/../Classes/charsets.jar">
+            <and>
+                <equals arg1="${nbjdk.bootclasspath.tmp}" arg2="$${platforms.${nbjdk.active}.bootclasspath}"/>
+                <os family="mac"/>
+            </and>
+        </condition>
+        <pathconvert property="nbjdk.bootclasspath.standard">
+            <path>
+                <fileset dir="${nbjdk.home}/jre/lib" erroronmissingdir="false" includes="*.jar"/>
+            </path>
+        </pathconvert>
+        <condition property="nbjdk.bootclasspath" value="${nbjdk.bootclasspath.standard}">
+            <equals arg1="${nbjdk.bootclasspath.tmp}" arg2="$${platforms.${nbjdk.active}.bootclasspath}"/>
+        </condition>
+        <property name="nbjdk.bootclasspath" value="${nbjdk.bootclasspath.tmp}"/>
+        <condition property="nbjdk.valid">
+            <and>
+                <available file="${nbjdk.home}" type="dir"/>
+                <available file="${nbjdk.javac}" type="file"/>
+                <available file="${nbjdk.java}" type="file"/>
+                <available file="${nbjdk.javadoc}" type="file"/>
+                <available classname="java.lang.Object" classpath="${nbjdk.bootclasspath}" ignoresystemclasses="true"/>
+            </and>
+        </condition>
+        <available property="have-jdk-1.4" classname="java.lang.CharSequence" classpath="${nbjdk.bootclasspath}" ignoresystemclasses="true"/>
+        <available property="have-jdk-1.5" classname="java.lang.StringBuilder" classpath="${nbjdk.bootclasspath}" ignoresystemclasses="true"/>
+        <available property="have-jdk-1.6" classname="java.util.ServiceLoader" classpath="${nbjdk.bootclasspath}" ignoresystemclasses="true"/>
+        <available property="have-jdk-1.7" classname="java.lang.ReflectiveOperationException" classpath="${nbjdk.bootclasspath}" ignoresystemclasses="true"/>
+        <echo level="verbose">nbjdk.active=${nbjdk.active} nbjdk.home=${nbjdk.home} nbjdk.java=${nbjdk.java} nbjdk.javac=${nbjdk.javac} nbjdk.javadoc=${nbjdk.javadoc} nbjdk.bootclasspath=${nbjdk.bootclasspath} nbjdk.valid=${nbjdk.valid} have-jdk-1.4=${have-jdk-1.4} have-jdk-1.5=${have-jdk-1.5} have-jdk-1.6=${have-jdk-1.6} have-jdk-1.7=${have-jdk-1.7}</echo>
+    </target>
+
+    <target name="-jdk-warn" depends="-jdk-preinit" if="nbjdk.active-or-nbjdk.home" unless="nbjdk.valid">
+        <property name="jdkhome.presumed" location="${java.home}/.."/>
+        <echo level="warning">Warning: nbjdk.active=${nbjdk.active} or nbjdk.home=${nbjdk.home} is an invalid Java platform; ignoring and using ${jdkhome.presumed}</echo>
+    </target>
+    
+    <target name="-jdk-presetdef-basic" depends="-jdk-preinit" if="nbjdk.valid" unless="jdk.presetdef.basic.done">
+        <!-- Have to eval these props now, not when used, because of usages of <ant ... inheritall="false"> -->
+        <!-- (cf. http://issues.apache.org/bugzilla/show_bug.cgi?id=38040) -->
+        <macrodef name="javac-presetdef">
+            <attribute name="javacval"/>
+            <sequential>
+                <presetdef name="javac">
+                    <javac fork="yes" executable="@{javacval}"/>
+                </presetdef>
+            </sequential>
+        </macrodef>
+        <javac-presetdef javacval="${nbjdk.javac}"/>
+        <macrodef name="java-presetdef">
+            <attribute name="javaval"/>
+            <sequential>
+                <presetdef name="java">
+                    <java fork="yes" jvm="@{javaval}"/>
+                </presetdef>
+            </sequential>
+        </macrodef>
+        <java-presetdef javaval="${nbjdk.java}"/>
+        <macrodef name="javadoc-presetdef">
+            <attribute name="javadocval"/>
+            <sequential>
+                <presetdef name="javadoc">
+                    <javadoc executable="@{javadocval}"/>
+                </presetdef>
+            </sequential>
+        </macrodef>
+        <javadoc-presetdef javadocval="${nbjdk.javadoc}"/>
+        <macrodef name="junit-presetdef">
+            <attribute name="javaval"/>
+            <sequential>
+                <presetdef name="junit">
+                    <junit fork="yes" jvm="@{javaval}"/>
+                </presetdef>
+            </sequential>
+        </macrodef>
+        <junit-presetdef javaval="${nbjdk.java}"/>
+        <property name="jdk.presetdef.basic.done" value="true"/>
+    </target>
+    
+    <target name="-jdk-presetdef-nbjpdastart" depends="-jdk-preinit" if="nbjdk.valid" unless="jdk.presetdef.nbjpdastart.done">
+        <macrodef name="nbjpdastart-presetdef">
+            <attribute name="bootcpval"/>
+            <sequential>
+                <presetdef name="nbjpdastart">
+                    <nbjpdastart>
+                        <bootclasspath>
+                            <path path="@{bootcpval}"/>
+                        </bootclasspath>
+                    </nbjpdastart>
+                </presetdef>
+            </sequential>
+        </macrodef>
+        <nbjpdastart-presetdef bootcpval="${nbjdk.bootclasspath}"/>
+        <property name="jdk.presetdef.nbjpdastart.done" value="true"/>
+    </target>
+    
+    <target name="-jdk-presetdef-nbprofiledirect" depends="-jdk-preinit" if="nbjdk.valid" unless="jdk.presetdef.nbprofiledirect.done">
+        <!-- XXX disable for now, but could be considered:
+        <macrodef name="nbprofiledirect-presetdef">
+            <attribute name="javaval"/>
+            <sequential>
+                <presetdef name="nbprofiledirect">
+                    <nbprofiledirect jvmproperty="@{javaval}"/>
+                </presetdef>
+            </sequential>
+        </macrodef>
+        <nbprofiledirect-presetdef javaval="${nbjdk.java}"/>
+        -->
+        <property name="jdk.presetdef.nbprofiledirect.done" value="true"/>
+    </target>
+    
+    <target name="-jdk-default" unless="nbjdk.active-or-nbjdk.home">
+        <!-- Define fallback values of some things. -->
+        <property name="java.home.parent" location="${java.home}/.."/>
+        <condition property="nbjdk.home" value="${java.home.parent}">
+            <available file="${java.home.parent}/lib/tools.jar" type="file"/>
+        </condition>
+        <condition property="nbjdk.home" value="${java.home}">
+            <available file="${java.home}/lib/tools.jar" type="file"/>
+        </condition>
+
+        <!-- Mac OS X -->
+        <condition property="nbjdk.home" value="${java.home}">
+            <available file="${java.home}/../Classes/classes.jar" type="file"/>
+        </condition>
+
+        <!-- Fallback? -->
+        <property name="nbjdk.home" location="${java.home.parent}"/>
+        <available property="have-jdk-1.4" classname="java.lang.CharSequence"/>
+        <available property="have-jdk-1.5" classname="java.lang.StringBuilder"/>
+        <available property="have-jdk-1.6" classname="java.util.ServiceLoader"/>
+        <available property="have-jdk-1.7" classname="java.lang.ReflectiveOperationException"/>
+        <property name="nbjdk.home.defaulted" value="true"/>
+    </target>
+
+    <target name="-jdk-init" depends="-jdk-preinit,-jdk-warn,-jdk-presetdef-basic,-jdk-default">
+        <!-- Will be bogus on Mac OS X, but doesn't matter - Classes/classes.jar should have this anyway -->
+        <property name="tools.jar" location="${nbjdk.home}/lib/tools.jar"/>
+        <!--<echo level="info">Using JDK: ${nbjdk.home}</echo>-->
+    </target>
+    
+</project>

+ 454 - 0
harness/jnlp.xml

@@ -0,0 +1,454 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
+
+Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+Other names may be trademarks of their respective owners.
+
+
+The contents of this file are subject to the terms of either the GNU
+General Public License Version 2 only ("GPL") or the Common
+Development and Distribution License("CDDL") (collectively, the
+"License"). You may not use this file except in compliance with the
+License. You can obtain a copy of the License at
+http://www.netbeans.org/cddl-gplv2.html
+or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
+specific language governing permissions and limitations under the
+License.  When distributing the software, include this License Header
+Notice in each file and include the License file at
+nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
+particular file as subject to the "Classpath" exception as provided
+by Oracle in the GPL Version 2 section of the License file that
+accompanied this code. If applicable, add the following below the
+License Header, with the fields enclosed by brackets [] replaced by
+your own identifying information:
+"Portions Copyrighted [year] [name of copyright owner]"
+
+Contributor(s):
+
+The Original Software is NetBeans. The Initial Developer of the Original
+Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
+Microsystems, Inc. All Rights Reserved.
+
+If you wish your version of this file to be governed by only the CDDL
+or only the GPL Version 2, indicate your decision by adding
+"[Contributor] elects to include this software in this distribution
+under the [CDDL or GPL Version 2] license." If you do not indicate a
+single choice of license, a recipient has the option to distribute
+your version of this file under either the CDDL, the GPL Version 2 or
+to extend the choice of license to its licensees as provided above.
+However, if you add GPL Version 2 code and therefore, elected the GPL
+Version 2 license, then the option applies only if the new code is
+made subject to such option by the copyright holder.
+-->
+<project name="suite-jnlp" basedir=".">
+
+    <!-- if jnlp.codebase is provided make both the app and the platform relative to it -->
+    <condition property="jnlp.codebase.app" value="${jnlp.codebase}app/" >
+        <isset property="jnlp.codebase" />
+    </condition>
+    <!-- if not specified, assign all codebases to value suitable for jnlp-servlet.jar -->
+    <property name="jnlp.codebase" value="$$$$codebase" />
+    <property name="jnlp.codebase.app" value="$$$$codebase" />
+
+    <target name="-check-for-master.jnlp">
+        <available file="master.jnlp" property="master.jnlp.exists"/>
+    </target>
+    <target name="jnlp-init-generate-master" depends="-check-for-master.jnlp" unless="master.jnlp.exists">
+        <echo file="master.jnlp"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE jnlp PUBLIC "-//Sun Microsystems, Inc//DTD JNLP Descriptor 6.0//EN" "http://java.sun.com/dtd/JNLP-6.0.dtd">
+<jnlp spec="1.0+" codebase="${jnlp.codebase}">
+  <information>
+      <title>$${app.title}</title>
+      <vendor>$${app.title} vendor</vendor>
+      <description>$${app.name} application</description>
+      <icon href="$${app.icon}"/>
+  </information>
+  <security><all-permissions/></security>
+  <resources>
+    <!-- The following property is needed when running with unsigned jars: -->
+    <property name="netbeans.jnlp.fixPolicy" value="$${netbeans.jnlp.fixPolicy}"/>
+    <extension name='branding' href='branding.jnlp' />
+<!-- The following line will be replaced with an automatically generated list of resources: -->
+<!--$${jnlp.resources}-->
+  </resources>
+  <resources os="Mac OS X">
+      <property name="netbeans.user" value="$${user.home}/Library/Application Support/$${app.name}"/>
+  </resources>
+  <application-desc>
+    <argument>--branding</argument>
+    <argument>$${branding.token}</argument>
+  </application-desc>
+</jnlp>  
+]]></echo>
+        <echo file="branding.jnlp"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE jnlp PUBLIC "-//Sun Microsystems, Inc//DTD JNLP Descriptor 6.0//EN" "http://java.sun.com/dtd/JNLP-6.0.dtd">
+<jnlp spec="1.0+" codebase="${jnlp.codebase}">
+  <information>
+      <title>$${app.title}</title>
+      <vendor>$${app.title} vendor</vendor>
+      <description>$${app.name} application</description>
+      <icon href="$${app.icon}"/>
+  </information>
+  $${jnlp.permissions}
+  <resources>
+    $${jnlp.branding.jars}
+  </resources>
+  <component-desc/>
+</jnlp>  
+]]></echo>
+    </target>
+    
+    <target name="jnlp-init" depends="jnlp-init-generate-master">
+        <fail unless="app.name">Must have set at least an application name ('app.name')</fail>
+        
+        <property name="jnlp.dest.dir" location="build/jnlp"/>
+        <property name="jnlp.master.dir" location="build/tmp/master-jnlp"/>
+        <mkdir dir="${jnlp.master.dir}"/>
+        
+        <property name="dist.dir" location="dist"/>
+        <property name="disabled.modules" value=""/>
+        <property name="enabled.clusters" value=""/>
+        <property name="disabled.clusters" value=""/>
+        
+        <pathfileset id="jnlp.included.modules" >
+            <path refid="cluster.path.id"/>
+            <and>
+                <or>
+                    <filename name="modules/**/*.jar"/>
+                    <filename name="lib/**/*.jar"/>
+                    <filename name="core/**/*.jar"/>
+                </or>
+                <not>
+                    <filename name="**/update/**/*.jar"/>
+                </not>
+                <custom classpath="${harness.dir}/tasks.jar" classname="org.netbeans.nbbuild.ModuleSelector">
+                    <param name="excludeModules" value="${disabled.modules}"/>
+                    <param name="includeClusters" value="${enabled.clusters}"/>
+                    <param name="excludeClusters" value="${disabled.clusters}"/>
+                </custom>
+            </and>
+        </pathfileset>
+        <property name="jnlp.sign.jars" value="true"/>
+        <property name="jnlp.signjar.keystore" location="build/default.keystore"/>
+        <property name="jnlp.signjar.alias" value="jnlp"/>
+        <property name="jnlp.signjar.password" value="netbeans"/>
+        <available property="jnlp.signjar.keystore.exists" file="${jnlp.signjar.keystore}"/>
+    </target>
+
+    <target name="jnlp-generate-keystore" depends="jnlp-init" unless="jnlp.signjar.keystore.exists">
+        <property name="jnlp.signjar.vendor" value="CN=${user.name}"/>
+        
+        <mkdir dir="${jnlp.signjar.keystore}/../"/>
+        <echo message="Going to create default keystore in ${jnlp.signjar.keystore}"/>
+        <genkey 
+            alias="${jnlp.signjar.alias}"
+            keystore="${jnlp.signjar.keystore}"
+            storepass="${jnlp.signjar.password}"
+            dname="${jnlp.signjar.vendor}"
+        />
+    </target>
+
+    <target name="jnlp-generate-platform" depends="jnlp-generate-platform-repository,jnlp-generate-platform-master"/>
+    
+    <target name="jnlp-generate-platform-repository" depends="jnlp-generate-keystore,jnlp-init,set-all-permissions,set-empty-permissions" unless="jnlp.platform.codebase">
+        <condition property="jnlp.platform.codebase.own" value="${jnlp.codebase}netbeans/" >
+            <not>
+                <equals arg1="${jnlp.codebase}" arg2="$$$$codebase" />
+            </not>
+        </condition>
+        <property name="jnlp.platform.codebase.own" value="$$$$codebase"/>
+        <property name="jnlp.platform.codebase" value="netbeans/"/>
+        
+        <mkdir dir="${jnlp.dest.dir}/netbeans"/>
+        
+        <makejnlp 
+            alias="${jnlp.signjar.alias}" 
+            keystore="${jnlp.signjar.keystore}" 
+            storepass="${jnlp.signjar.password}"
+            dir="${jnlp.dest.dir}/netbeans/"
+            codebase="${jnlp.platform.codebase.own}"
+            verify="true"
+            verifyexcludes="lib/nbexec.cmd,lib/nbexec,lib/nbexec.exe,lib/nbexec.dll,core/ide.ks,LICENSE.txt,DISTRIBUTION.txt,THIRDPARTYLICENSEREADME.txt,docs/swing-layout-1.0-doc.zip,docs/swing-layout-1.0.1-doc.zip,docs/html40.zip,core/org-netbeans-modules-utilities-cli.jar,docs/org/netbeans/modules/usersguide/ide.css,docs/swing-layout-1.0.2-doc.zip,docs/swing-layout-1.0.2-src.zip,docs/swing-layout-1.0.3-doc.zip,docs/swing-layout-1.0.3-src.zip,docs/swing-layout-1.0.4-doc.zip,docs/swing-layout-1.0.4-src.zip,modules/ext/felix-main-2.0.2.jar,modules/ext/toplink/README,modules/ext/toplink/3RD-PARTY-LICENSE.txt,modules/ext/toplink/LICENSE.txt"
+            permissions="${jnlp.permissions}"
+            signjars="${jnlp.sign.jars}"
+            processjarversions="${jnlp.generate.versions}"
+        >
+            <resources refid="jnlp.included.modules"/>
+        </makejnlp>
+    </target>
+
+    <target name="set-all-permissions" depends="check-signjars" if="unsign-the-jars">
+        <property name="jnlp.permissions" value="&lt;security/&gt;"/>
+    </target>
+    <target name="set-empty-permissions" depends="check-signjars" unless="unsign-the-jars">
+        <property name="jnlp.permissions" value="&lt;security&gt;&lt;all-permissions/&gt;&lt;/security&gt;"/>
+    </target>
+    
+    <target name="check-signjars">
+        <condition property="unsign-the-jars">
+            <isfalse value="${jnlp.sign.jars}"/>
+        </condition>
+    </target>
+    
+    <target name="jnlp-generate-platform-master" depends="jnlp-generate-platform-repository">
+        <makemasterjnlp 
+            dir="${jnlp.master.dir}"
+            codebase="${jnlp.platform.codebase}"
+        >
+            <resources refid="jnlp.included.modules"/>
+        </makemasterjnlp>
+    </target>
+    
+    <target name="build" 
+            depends="build-jnlp-nowar"
+            description="Build JNLP files and signed JARs for all modules in the suite."
+    >
+        <property name="jnlp.servlet.jar" location="${nbjdk.home}/sample/jnlp/servlet/jnlp-servlet.jar"/>
+        <fail message="Point -Djnlp.servlet.jar to your jnlp-servlet.jar, usually in $$JDKHOME/sample/jnlp/servlet/jnlp-servlet.jar">
+            <condition>
+                <not>
+                    <available file="${jnlp.servlet.jar}"/>
+                </not>
+            </condition>
+        </fail>
+        
+        <echo file="build/tmp/web.xml"><![CDATA[
+<web-app>
+ <servlet>
+    <servlet-name>JnlpDownloadServlet</servlet-name>
+    <servlet-class>jnlp.sample.servlet.JnlpDownloadServlet</servlet-class>
+ </servlet>
+ <servlet-mapping>
+    <servlet-name>JnlpDownloadServlet</servlet-name>
+    <url-pattern>*.jnlp</url-pattern>
+ </servlet-mapping>
+</web-app>         
+]]></echo>
+        <mkdir dir="${dist.dir}"/>
+        <war basedir="${jnlp.dest.dir}" destfile="${dist.dir}/${app.name}.war" webxml="build/tmp/web.xml">
+            <zipfileset dir="${jnlp.servlet.jar}/.." file="${jnlp.servlet.jar}" prefix="WEB-INF/lib"/>
+        </war>
+    </target>
+
+    <target name="build-jnlp-local" depends="build-jnlp-nowar">
+        <property name="build.jnlp.local.dir" location="${dist.dir}/jnlp/local"/>
+        <mkdir dir="${build.jnlp.local.dir}"/>
+        <mkdir dir="${build.jnlp.local.dir}/netbeans/"/>
+        <mkdir dir="${build.jnlp.local.dir}/app/"/>
+        
+        <makeurl property="build.jnlp.local.url" file="${build.jnlp.local.dir}"/>
+        <copy todir="${build.jnlp.local.dir}">
+            <fileset dir="build/jnlp">
+                <include name="*.jnlp"/>
+            </fileset>
+            <filterchain>
+                <replacestring from="$$$$codebase" to="${build.jnlp.local.url}"/>
+            </filterchain>
+        </copy>
+        <mkdir dir="build/jnlp/netbeans"/> <!-- else fileset will croak -->
+        <copy todir="${build.jnlp.local.dir}/netbeans/">
+            <fileset dir="build/jnlp/netbeans">
+                <include name="**/*.jnlp"/>
+            </fileset>
+            <filterchain>
+                <replacestring from="$$$$codebase" to="${build.jnlp.local.url}netbeans/"/>
+            </filterchain>
+        </copy>
+        <copy todir="${build.jnlp.local.dir}/app/">
+            <fileset dir="build/jnlp/app">
+                <include name="**/*.jnlp"/>
+            </fileset>
+            <filterchain>
+                <replacestring from="$$$$codebase" to="${build.jnlp.local.url}app/"/>
+            </filterchain>
+        </copy>
+        <copy todir="${build.jnlp.local.dir}">
+            <fileset dir="build/jnlp">
+                <exclude name="**/*.jnlp"/>
+            </fileset>
+        </copy>
+        <verifyjnlp>
+            <fileset file="${build.jnlp.local.dir}/master.jnlp"/>
+        </verifyjnlp>
+    </target>
+    
+    <target name="build-jnlp-nowar" depends="jnlp-init,jnlp-generate-keystore,jnlp-generate-platform">
+        <mkdir dir="${jnlp.dest.dir}/app"/>
+        <subant target="jnlp" buildpath="${modules.sorted}" inheritrefs="false" inheritall="false">
+            <property name="jnlp.dest.dir" value="${jnlp.dest.dir}/app"/>
+            <property name="jnlp.master.dir" value="${jnlp.master.dir}"/>
+            <property name="jnlp.master.codebase" value="app/"/>
+            <property name="jnlp.codebase" value="${jnlp.codebase.app}"/>
+            <property name="jnlp.signjar.alias" value="${jnlp.signjar.alias}"/>
+            <property name="jnlp.signjar.keystore" location="${jnlp.signjar.keystore}"/>
+            <property name="jnlp.signjar.password" value="${jnlp.signjar.password}"/>
+            <property name="jnlp.sign.jars" value="${jnlp.sign.jars}"/>
+            <property name="jnlp.permissions" value="${jnlp.permissions}"/>
+        </subant>
+
+        <antcall target="copy-branding"/>
+        
+        <signjar 
+            alias="${jnlp.signjar.alias}" 
+            keystore="${jnlp.signjar.keystore}" 
+            storepass="${jnlp.signjar.password}" 
+            jar="${harness.dir}/jnlp/jnlp-launcher.jar"
+            signedjar="${jnlp.dest.dir}/startup.jar" 
+        />
+        
+        <pathconvert pathsep="${line.separator}" property="jnlp.branding.jars">
+            <path>
+                <fileset dir="${jnlp.dest.dir}/branding">
+                    <include name="*_${branding.token}.jar"/>
+                </fileset>
+            </path>
+            <mapper type="regexp" from="^.*[/\\]([^/\\]+\.jar)" to='    &lt;jar href="branding/\1"/&gt;'/>
+        </pathconvert>
+        
+        <echo file="${jnlp.master.dir}/resources.xml"><![CDATA[
+    <java version="1.6+"/>
+    <jar href="startup.jar"/>
+    <property name="netbeans.user" value="$${user.home}/.nbapp-${app.name}"/>
+]]></echo>
+        <concat append="true" destfile="${jnlp.master.dir}/resources.xml">
+            <fileset dir="${jnlp.master.dir}">
+                <include name="*.ref"/>
+            </fileset>
+        </concat>
+        
+        <loadfile property="jnlp.resources" srcfile="${jnlp.master.dir}/resources.xml"/>
+
+        <condition property="netbeans.jnlp.fixPolicy">
+            <isfalse value="${jnlp.sign.jars}"/>
+        </condition>
+        <!-- Anyone knows a better way to negate a property value? -->
+        <condition property="netbeans.jnlp.fixPolicy" value="false">
+            <istrue value="${jnlp.sign.jars}"/>
+        </condition>
+        
+        <condition property="app.icon.safe" value="${app.icon}" else=".png">
+            <isset property="app.icon" />
+        </condition>
+        <pathconvert property="app.icon.ext">
+            <path path="${app.icon.safe}"/>
+            <mapper type="regexp" from="^(.*)\.(.*)$$" to="\2"/>
+        </pathconvert>
+        
+        <copy file="${app.icon}" tofile="${jnlp.dest.dir}/master.${app.icon.ext}" failonerror="false"/>
+        <copy file="master.jnlp" tofile="${jnlp.dest.dir}/master.jnlp">
+            <filterchain>
+                <replacestring from="&lt;!--$${jnlp.resources}--&gt;" to="${jnlp.resources}"/>
+                <replacestring from="$${jnlp.resources}" to="${jnlp.resources}"/>
+                <replacestring from="$${app.name}" to="${app.name}"/>
+                <replacestring from="$${app.title}" to="${app.title}"/>
+                <replacestring from="$${app.icon}" to="master.${app.icon.ext}"/>
+                <replacestring from="$${branding.token}" to="${branding.token}"/>
+                <replacestring from="$${netbeans.jnlp.fixPolicy}" to="${netbeans.jnlp.fixPolicy}"/>
+            </filterchain>
+        </copy>
+        <echo>Your JNLP file is generated at ${jnlp.dest.dir}/master.jnlp</echo>
+        <!-- The following line will not fail if the branding.jnlp
+             is not present, e.g. when the main file was generated using
+             harness from 5.x days. -->
+        <copy file="branding.jnlp" tofile="${jnlp.dest.dir}/branding.jnlp" failonerror="false">
+            <filterchain>
+                <replacestring from="$${jnlp.branding.jars}" to="${jnlp.branding.jars}"/>
+                <replacestring from="$${app.name}" to="${app.name}"/>
+                <replacestring from="$${app.title}" to="${app.title}"/>
+                <replacestring from="$${app.icon}" to="master.${app.icon.ext}"/>
+                <replacestring from="$${jnlp.permissions}" to="${jnlp.permissions}"/>
+            </filterchain>
+        </copy>
+
+        <taskdef name="verifyjnlp" classname="org.netbeans.nbbuild.VerifyJNLP" classpath="${harness.dir}/tasks.jar"/>
+        <verifyjnlp>
+            <fileset file="${jnlp.dest.dir}/master.jnlp"/>
+        </verifyjnlp>
+    </target>
+    
+    <target name="sign-branding-jars" unless="unsign-the-jars" depends="copy-branding-jars">
+        <signjar
+            alias="${jnlp.signjar.alias}" 
+            keystore="${jnlp.signjar.keystore}" 
+            storepass="${jnlp.signjar.password}" 
+        >
+            <fileset dir="${jnlp.dest.dir}/branding">
+                <include name="*_${branding.token}.jar"/>
+            </fileset>
+        </signjar>
+    </target>
+
+    <target name="copy-branding" depends="copy-branding-jars, sign-branding-jars"/>
+
+    <target name="copy-branding-jars">
+        <mkdir dir="${jnlp.dest.dir}/branding"/>
+        <copy todir="${jnlp.dest.dir}/branding" flatten="true">
+            <fileset dir="${cluster}">
+                <include name="**/locale/*.jar"/>
+            </fileset>
+        </copy>
+    </target>
+
+    <target name="run" depends="build-jnlp-local" description="Executes this suite as JNLP application">
+        <condition property="run.javaws" value="${nbjdk.home}/jre/javaws/javaws">
+            <available file="${nbjdk.home}/jre/javaws/javaws"/>
+        </condition>
+        <condition property="run.javaws" value="${nbjdk.home}/javaws/javaws">
+            <available file="${nbjdk.home}/javaws/javaws"/>
+        </condition>
+        <condition property="run.javaws" value="${nbjdk.home}\jre\bin\javaws.exe">
+            <available file="${nbjdk.home}\jre\bin\javaws.exe"/>
+        </condition>
+        <condition property="run.javaws" value="${nbjdk.home}\bin\javaws.exe">
+            <available file="${nbjdk.home}\bin\javaws.exe"/>
+        </condition>
+        <property name="run.javaws" value="javaws"/>
+        <property name="run.args" value=""/>
+        <exec executable="${run.javaws}">
+            <arg value="-wait"/>
+            <arg file="${build.jnlp.local.dir}/master.jnlp"/>
+            <env key="JAVAWS_VM_ARGS" value="${run.args}"/>
+        </exec>
+    </target>
+    
+    <target name="debug" depends="build-jnlp-local" description="Executes this suite as JNLP application under debugger">
+        <fail unless="netbeans.home">This target only works when run from inside the NetBeans IDE.</fail>
+        <nbjpdastart name="NetBeans" addressproperty="debug.port" transport="dt_socket">
+            <classpath>
+                <pathfileset>
+                    <path refid="cluster.path.id"/>
+                    <filename name="**/*.jar"/>
+                </pathfileset>
+                <fileset dir="${cluster}">
+                    <include name="**/*.jar"/>
+                </fileset>
+            </classpath>
+        </nbjpdastart>
+        <property name="debug.pause" value="y"/>
+        <property name="debug.args" value="-Xdebug -Xrunjdwp:transport=dt_socket,suspend=${debug.pause},server=n,address=${debug.port}"/>
+        <antcall target="run">
+            <param name="run.args" value="${debug.args}"/>
+            <reference refid="cluster.path.id"/>
+        </antcall>
+    </target>
+
+    <target name="-check-for-jnlp-userdir">
+        <property name="jnlp.userdir" location="${user.home}/.nbapp-${app.name}"/>
+        <condition property="have.jnlp.userdir">
+            <and>
+                <isset property="app.name"/>
+                <available file="${jnlp.userdir}" type="dir"/>
+            </and>
+        </condition>
+    </target>
+    <target name="-clean-jnlp-userdir" depends="-check-for-jnlp-userdir" if="have.jnlp.userdir">
+        <property name="jnlp.userdir.bak" location="${jnlp.userdir}.bak"/>
+        <delete dir="${jnlp.userdir.bak}" failonerror="false"/>
+        <move file="${jnlp.userdir}" tofile="${jnlp.userdir.bak}" failonerror="false"/>
+    </target>
+    <target name="clean" depends="-clean-jnlp-userdir" description="Make sure default JNLP user directory is removed so run-jnlp will not get old test settings."/> <!-- #64249 -->
+    
+</project>

BIN
harness/jnlp/jnlp-launcher.jar


BIN
harness/launchers/app.exe


+ 104 - 0
harness/launchers/app.sh

@@ -0,0 +1,104 @@
+#!/bin/sh
+
+#
+# resolve symlinks
+#
+
+PRG=$0
+
+while [ -h "$PRG" ]; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null`
+    if expr "$link" : '^/' 2> /dev/null >/dev/null; then
+	PRG="$link"
+    else
+	PRG="`dirname "$PRG"`/$link"
+    fi
+done
+
+progdir=`dirname "$PRG"`
+APPNAME=`basename "$0"`
+
+if [ -f "$progdir/../etc/$APPNAME".conf ] ; then
+    . "$progdir/../etc/$APPNAME".conf
+fi
+
+# XXX does not correctly deal with spaces in non-userdir params
+args=""
+
+case "`uname`" in
+    Darwin*)
+        userdir="${default_mac_userdir}"
+        ;;
+    *)
+        userdir="${default_userdir}"
+        ;;
+esac
+while [ $# -gt 0 ] ; do
+    case "$1" in
+        --userdir) shift; if [ $# -gt 0 ] ; then userdir="$1"; fi
+            ;;
+        *) args="$args \"$1\""
+            ;;
+    esac
+    shift
+done
+
+if [ -f "${userdir}/etc/$APPNAME".conf ] ; then
+    . "${userdir}/etc/$APPNAME".conf
+fi
+
+if [ -n "$jdkhome" -a \! -d "$jdkhome" -a -d "$progdir/../$jdkhome" ]; then
+    # #74333: permit jdkhome to be defined as relative to app dir
+    jdkhome="$progdir/../$jdkhome"
+fi
+
+readClusters() {
+  if [ -x /usr/ucb/echo ]; then
+    echo=/usr/ucb/echo
+  else
+    echo=echo
+  fi
+  while read X; do
+    if [ "$X" \!= "" ]; then
+      $echo "$progdir/../$X"
+    fi
+  done
+}
+
+clusters=`(cat "$progdir/../etc/$APPNAME".clusters; echo) | readClusters | tr '\012' ':'`
+
+if [ ! -z "$extra_clusters" ] ; then
+    clusters="$clusters:$extra_clusters"
+fi
+
+nbexec=`echo "$progdir"/../platform*/lib/nbexec`
+
+case "`uname`" in
+    Darwin*)
+        eval exec sh '"$nbexec"' \
+            --jdkhome '"$jdkhome"' \
+            -J-Dcom.apple.mrj.application.apple.menu.about.name='"$APPNAME"' \
+            -J-Xdock:name='"$APPNAME"' \
+            '"-J-Xdock:icon=$progdir/../../$APPNAME.icns"' \
+            --clusters '"$clusters"' \
+            --userdir '"${userdir}"' \
+            ${default_options} \
+            "$args"
+        ;;
+    *)  
+       sh=sh
+       # #73162: Ubuntu uses the ancient Bourne shell, which does not implement trap well.
+       if [ -x /bin/bash ]
+       then
+           sh=/bin/bash
+       fi
+       eval exec $sh '"$nbexec"' \
+            --jdkhome '"$jdkhome"' \
+            --clusters '"$clusters"' \
+            --userdir '"${userdir}"' \
+            ${default_options} \
+            "$args"
+       exit 1
+        ;;
+esac

BIN
harness/launchers/pre7_app.exe


BIN
harness/launchers/pre7_app_w.exe


BIN
harness/modules/ext/jemmy-2.3.0.0.jar


BIN
harness/modules/ext/locale/nbi-engine_ja.jar


BIN
harness/modules/ext/locale/nbi-engine_pt_BR.jar


BIN
harness/modules/ext/locale/nbi-engine_zh_CN.jar


BIN
harness/modules/ext/nbi-ant-tasks.jar


BIN
harness/modules/ext/nbi-engine.jar


BIN
harness/modules/ext/nbi-registries-management.jar


BIN
harness/modules/locale/org-netbeans-insane_ja.jar


BIN
harness/modules/locale/org-netbeans-insane_pt_BR.jar


BIN
harness/modules/locale/org-netbeans-insane_zh_CN.jar


BIN
harness/modules/locale/org-netbeans-libs-nbi-ant_ja.jar


BIN
harness/modules/locale/org-netbeans-libs-nbi-ant_pt_BR.jar


BIN
harness/modules/locale/org-netbeans-libs-nbi-ant_zh_CN.jar


BIN
harness/modules/locale/org-netbeans-libs-nbi-engine_ja.jar


BIN
harness/modules/locale/org-netbeans-libs-nbi-engine_pt_BR.jar


BIN
harness/modules/locale/org-netbeans-libs-nbi-engine_zh_CN.jar


BIN
harness/modules/locale/org-netbeans-modules-apisupport-harness_ja.jar


BIN
harness/modules/locale/org-netbeans-modules-apisupport-harness_pt_BR.jar


BIN
harness/modules/locale/org-netbeans-modules-apisupport-harness_zh_CN.jar


BIN
harness/modules/locale/org-netbeans-modules-apisupport-tc-cobertura_ja.jar


BIN
harness/modules/locale/org-netbeans-modules-apisupport-tc-cobertura_pt_BR.jar


BIN
harness/modules/locale/org-netbeans-modules-apisupport-tc-cobertura_zh_CN.jar


BIN
harness/modules/locale/org-netbeans-modules-jellytools-platform_ja.jar


BIN
harness/modules/locale/org-netbeans-modules-jellytools-platform_pt_BR.jar


BIN
harness/modules/locale/org-netbeans-modules-jellytools-platform_zh_CN.jar


BIN
harness/modules/locale/org-netbeans-modules-jemmy_ja.jar


BIN
harness/modules/locale/org-netbeans-modules-jemmy_pt_BR.jar


BIN
harness/modules/locale/org-netbeans-modules-jemmy_zh_CN.jar


BIN
harness/modules/locale/org-netbeans-modules-nbjunit_ja.jar


BIN
harness/modules/locale/org-netbeans-modules-nbjunit_pt_BR.jar


BIN
harness/modules/locale/org-netbeans-modules-nbjunit_zh_CN.jar


BIN
harness/modules/org-netbeans-insane.jar


BIN
harness/modules/org-netbeans-libs-nbi-ant.jar


BIN
harness/modules/org-netbeans-libs-nbi-engine.jar


BIN
harness/modules/org-netbeans-modules-apisupport-harness.jar


BIN
harness/modules/org-netbeans-modules-apisupport-tc-cobertura.jar


BIN
harness/modules/org-netbeans-modules-jellytools-platform.jar


BIN
harness/modules/org-netbeans-modules-jemmy.jar


BIN
harness/modules/org-netbeans-modules-nbjunit.jar


+ 48 - 0
harness/nbi/stub/build.properties

@@ -0,0 +1,48 @@
+# 
+# The contents of this file are subject to the terms of the Common Development and
+# Distribution License (the License). You may not use this file except in compliance
+# with the License.
+# 
+# You can obtain a copy of the License at http://www.netbeans.org/cddl.html or
+# http://www.netbeans.org/cddl.txt.
+# 
+# When distributing Covered Code, include this CDDL Header Notice in each file and
+# include the License file at http://www.netbeans.org/cddl.txt. If applicable, add
+# the following below the CDDL Header, with the fields enclosed by brackets []
+# replaced by your own identifying information:
+# 
+#     "Portions Copyrighted [year] [name of copyright owner]"
+# 
+# The Original Software is NetBeans. The Initial Developer of the Original Software
+# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
+# Rights Reserved.
+# 
+
+output.dir=${basedir}/build
+jarsigner.enabled=false
+pack200.enabled={pack200.enabled}
+core.module.name=nbi
+ext.module.name=ext
+    
+nbi.all.dir=${basedir}/nbi_all
+nbi.core.dir=${nbi.all.dir}/${core.module.name}
+nbi.ext.dir=${nbi.all.dir}/${ext.module.name}
+    
+temp.file=${nbi.all.dir}/temp.ant.tmp
+environment.properties=${nbi.all.dir}/environment.properties
+
+context.path.token=/nbi/dev
+context.path.replacement=${context.path}
+
+context.dir.token=ROOT = new File\\(".*?"\\);
+context.dir.replacement=ROOT = new File\\("${context.dir}"\);
+
+custom.tasks.cls={nbi.ant.tasks.jar}${path.separator}{nbi.registries.management.jar}${path.separator}{nbi.engine.jar}
+nbi.engine.jar={nbi.engine.jar}
+
+jdk.home={generator-jdk-location-forward-slashes}
+bundles.release.dir={generated-installers-location-forward-slashes}
+bundle.files.prefix={generated-installers-prefix}
+
+target.platforms={product-platforms}
+main.product.uid={product-uid}

+ 202 - 0
harness/nbi/stub/build.xml

@@ -0,0 +1,202 @@
+<project name="build installers" default="build" basedir=".">
+    <property file="${basedir}/build.properties"/>
+    <property file="${basedir}/custom.properties"/>
+    
+    <target name="build" depends="init,-build,-generate-bundles,post-build"/>
+    
+    <target name="init" depends="-clean,-checkout,-init,-init-properties,-post-init-clean"/>
+
+    <target name="-clean-cvs" unless="no.checkout">
+        <delete dir="${nbi.all.dir}"/>
+    </target>
+    
+    <target name="-clean" depends="-clean-cvs" unless="no.clean">
+        <delete dir="${output.dir}"/>
+        <delete dir="${nbi.ext.dir}/products/helloworld/build"/>
+        <delete dir="${nbi.ext.dir}/products/helloworld/dist"/>
+        <delete dir="${nbi.ext.dir}/engine/build"/>
+        <delete dir="${nbi.ext.dir}/engine/dist"/>
+
+        <!--<delete dir="${basedir}/cache"/>-->
+    </target>
+
+    <target name="post-build">
+        <delete dir="${output.dir}/registry-temp"/>
+    </target>
+    
+    <target name="-checkout">
+        
+        <copy todir="${nbi.all.dir}/.common">
+            <fileset dir="${basedir}/.common"/>
+        </copy>
+
+        <copy todir="${nbi.ext.dir}">
+            <fileset dir="${basedir}/ext">
+            </fileset>
+        </copy>
+    </target>
+
+    <target name="-init">
+        <taskdef 
+            name="if" 
+            classpath="${custom.tasks.cls}" 
+            classname="org.netbeans.installer.infra.build.ant.If"/>
+        <taskdef 
+            name="for-each" 
+            classpath="${custom.tasks.cls}" 
+            classname="org.netbeans.installer.infra.build.ant.ForEach"/>
+        <taskdef 
+            name="set" 
+            classpath="${custom.tasks.cls}" 
+            classname="org.netbeans.installer.infra.build.ant.SetProperty"/>
+
+        <taskdef 
+            name="create-bundle" 
+            classpath="${custom.tasks.cls}" 
+            classname="org.netbeans.installer.infra.build.ant.registries.CreateBundle"/>
+        
+        <delete file="${temp.file}"/>
+    </target>
+    
+    <target name="-init-properties">
+        <echo file="${nbi.all.dir}/environment.tmp" encoding="utf-8">
+checkout.sources=false
+sources.dir=${nbi.all.dir}
+cvs.module=ext
+
+release.to.server=false
+release.registry.dir=${output.dir}/registry-temp
+
+dont.build.custom.tasks=true
+custom.tasks.cls=${custom.tasks.cls}
+
+build.engine=false
+
+engine.dist.file.name=nbi-engine.jar
+engine.dist.file=${nbi.core.dir}/infra/build/engine/dist/nbi-engine.jar
+
+packaged.data.dir=${basedir}/cache/packaged
+downloads.cache.dir=${basedir}/cache/raw
+
+jarsigner.enabled=${jarsigner.enabled}
+        </echo>
+        <replace file="${nbi.all.dir}/environment.tmp" token="\" value="/" encoding="utf-8"/>
+        <native2ascii src="${nbi.all.dir}" dest="${nbi.all.dir}" encoding="utf-8" includes="environment.tmp" ext=".properties"/>
+    </target>
+    
+    <target name="-post-init-clean">
+        <delete dir="${basedir}/cache/raw"/>
+    </target>
+    
+    <target name="-build">
+        <delete dir="${output.dir}"/>
+        
+        <mkdir dir="${output.dir}"/>
+        <mkdir dir="${bundles.release.dir}"/>
+        <mkdir dir="${output.dir}/components"/>
+        
+        <property name="engine.dist.file.name" value="nbi-engine.jar"/>
+
+        <echo message="BUILDING HELLOWORLD EXT ENGINE =================================="/>
+        <ant dir="${nbi.ext.dir}/infra/build/engine" target="release-all">
+            <property 
+                name="basedir" 
+                value="${nbi.ext.dir}/infra/build/engine"/>
+            <property 
+                name="environment.properties" 
+                value="${environment.properties}"/>
+            
+            <property 
+                name="core.engine.dist.file" 
+                value="${nbi.engine.jar}"/>
+        </ant>
+
+
+	<echo message="BUILDING HELLOWORLD PRODUCT =================================="/>
+        <ant dir="${nbi.ext.dir}/infra/build/products/helloworld" target="release-all">
+            <property 
+                name="basedir" 
+                value="${nbi.ext.dir}/infra/build/products/helloworld"/>
+            <property 
+                name="environment.properties" 
+                value="${environment.properties}"/>
+            <property
+                name="dist.dir"
+                value="${output.dir}/components"/>
+
+            <property
+                name="release.parent.uid"
+                value=""/>
+            <property
+                name="release.parent.version"
+                value=""/>
+            <property
+                name="release.parent.platforms"
+                value=""/>
+
+            <property 
+                name="engine.dist.file" 
+                value="${output.dir}/registry-temp/engine.jar"/>
+
+
+        </ant>
+    </target>
+
+    <target name="-generate-bundles">
+        <for-each property="platform" list="${target.platforms}" separator=" ">
+
+            <condition property="bundle.extention.${platform}" value="exe">
+                 <contains string="${platform}" substring="windows"/>
+            </condition>
+            <condition property="bundle.extention.${platform}" value="sh">
+                 <or>
+                     <contains string="${platform}" substring="linux"/>
+                     <contains string="${platform}" substring="solaris"/>
+                 </or>
+            </condition>
+            <condition property="bundle.extention.${platform}" value="zip">
+                 <contains string="${platform}" substring="macosx"/>
+            </condition>
+
+            <set property="bundle.extention" source="bundle.extention.${platform}"/>
+
+            <create-bundle root="${output.dir}/registry-temp" 
+                       platform="${platform}" 
+                       target="${bundles.release.dir}/${bundle.files.prefix}-${platform}.${bundle.extention}">
+                <component uid="${main.product.uid}" version="0.6.1.0.0"/>
+            </create-bundle>
+            <if property="bundle.extention" value="zip">
+                <antcall target="zip-to-tgz">
+                    <param name="input.file"  value="${bundles.release.dir}/${bundle.files.prefix}-${platform}.zip"/>
+                    <param name="output.file" value="${bundles.release.dir}/${bundle.files.prefix}-${platform}.tgz"/>
+                </antcall>
+	        <delete file="${bundles.release.dir}/${bundle.files.prefix}-${platform}.zip"/>
+            </if>
+        </for-each>
+        <echo>Installer(s) for [${target.platforms}] are available at ${bundles.release.dir}</echo>
+    </target>
+
+    <target name="zip-to-tgz">
+	<set property="tar.tmpdir"
+             value="${bundles.release.dir}/tempdir"/>
+
+	<mkdir dir="${tar.tmpdir}"/>
+
+	<unzip 
+		src="${input.file}"
+		dest="${tar.tmpdir}"/>
+
+        <tar tarfile="${output.file}" 
+             compression="gzip">
+            <tarfileset dir="${tar.tmpdir}" mode="644">
+                <include name="**/*.*"/>
+		<exclude name="**/executable"/>
+            </tarfileset>
+	    <tarfileset dir="${tar.tmpdir}" mode="755">
+		<include name="**/executable"/>
+            </tarfileset>
+        </tar>
+	<delete dir="${tar.tmpdir}"/>
+    </target>
+
+</project>

+ 74 - 0
harness/nbi/stub/ext/components/products/helloworld/build.xml

@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- You may freely edit this file. See commented blocks below for -->
+<!-- some examples of how to customize the build. -->
+<!-- (If you delete it and reopen the project it will be recreated.) -->
+<!-- By default, only the Clean and Build commands use this build script. -->
+<!-- Commands such as Run, Debug, and Test only use this build script if -->
+<!-- the Compile on Save feature is turned off for the project. -->
+<!-- You can turn off the Compile on Save (or Deploy on Save) setting -->
+<!-- in the project's Project Properties dialog box.-->
+<project name="helloworld" default="default" basedir=".">
+    <description>Builds, tests, and runs the project helloworld.</description>
+    <import file="nbproject/build-impl.xml"/>
+    <!--
+
+    There exist several targets which are by default empty and which can be 
+    used for execution of your tasks. These targets are usually executed 
+    before and after some main targets. They are: 
+
+      -pre-init:                 called before initialization of project properties
+      -post-init:                called after initialization of project properties
+      -pre-compile:              called before javac compilation
+      -post-compile:             called after javac compilation
+      -pre-compile-single:       called before javac compilation of single file
+      -post-compile-single:      called after javac compilation of single file
+      -pre-compile-test:         called before javac compilation of JUnit tests
+      -post-compile-test:        called after javac compilation of JUnit tests
+      -pre-compile-test-single:  called before javac compilation of single JUnit test
+      -post-compile-test-single: called after javac compilation of single JUunit test
+      -pre-jar:                  called before JAR building
+      -post-jar:                 called after JAR building
+      -post-clean:               called after cleaning build products
+
+    (Targets beginning with '-' are not intended to be called on their own.)
+
+    Example of inserting an obfuscator after compilation could look like this:
+
+        <target name="-post-compile">
+            <obfuscate>
+                <fileset dir="${build.classes.dir}"/>
+            </obfuscate>
+        </target>
+
+    For list of available properties check the imported 
+    nbproject/build-impl.xml file. 
+
+
+    Another way to customize the build is by overriding existing main targets.
+    The targets of interest are: 
+
+      -init-macrodef-javac:     defines macro for javac compilation
+      -init-macrodef-junit:     defines macro for junit execution
+      -init-macrodef-debug:     defines macro for class debugging
+      -init-macrodef-java:      defines macro for class execution
+      -do-jar-with-manifest:    JAR building (if you are using a manifest)
+      -do-jar-without-manifest: JAR building (if you are not using a manifest)
+      run:                      execution of project 
+      -javadoc-build:           Javadoc generation
+      test-report:              JUnit report generation
+
+    An example of overriding the target for project execution could look like this:
+
+        <target name="run" depends="helloworld-impl.jar">
+            <exec dir="bin" executable="launcher.exe">
+                <arg file="${dist.jar}"/>
+            </exec>
+        </target>
+
+    Notice that the overridden target depends on the jar target and not only on 
+    the compile target as the regular run target does. Again, for a list of available 
+    properties which you can use, check the target you are overriding in the
+    nbproject/build-impl.xml file. 
+
+    -->
+</project>

+ 41 - 0
harness/nbi/stub/ext/components/products/helloworld/data/Bundle.properties

@@ -0,0 +1,41 @@
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+#
+# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
+#
+# Oracle and Java are registered trademarks of Oracle and/or its affiliates.
+# Other names may be trademarks of their respective owners.
+#
+# The contents of this file are subject to the terms of either the GNU General Public
+# License Version 2 only ("GPL") or the Common Development and Distribution
+# License("CDDL") (collectively, the "License"). You may not use this file except in
+# compliance with the License. You can obtain a copy of the License at
+# http://www.netbeans.org/cddl-gplv2.html or nbbuild/licenses/CDDL-GPL-2-CP. See the
+# License for the specific language governing permissions and limitations under the
+# License.  When distributing the software, include this License Header Notice in
+# each file and include the License file at nbbuild/licenses/CDDL-GPL-2-CP.  Oracle
+# designates this particular file as subject to the "Classpath" exception as provided
+# by Oracle in the GPL Version 2 section of the License file that accompanied this code.
+# If applicable, add the following below the License Header, with the fields enclosed
+# by brackets [] replaced by your own identifying information:
+# "Portions Copyrighted [year] [name of copyright owner]"
+# 
+# Contributor(s):
+# 
+# The Original Software is NetBeans. The Initial Developer of the Original Software
+# is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun Microsystems, Inc. All
+# Rights Reserved.
+# 
+# If you wish your version of this file to be governed by only the CDDL or only the
+# GPL Version 2, indicate your decision by adding "[Contributor] elects to include
+# this software in this distribution under the [CDDL or GPL Version 2] license." If
+# you do not indicate a single choice of license, a recipient has the option to
+# distribute your version of this file under either the CDDL, the GPL Version 2 or
+# to extend the choice of license to its licensees as provided above. However, if you
+# add GPL Version 2 code and therefore, elected the GPL Version 2 license, then the
+# option applies only if the new code is made subject to such option by the copyright
+# holder.
+# 
+
+product.display.name={product-name}
+product.description={product-description}

BIN
harness/nbi/stub/ext/components/products/helloworld/data/icon.png


BIN
harness/nbi/stub/ext/components/products/helloworld/data/icon48.png


+ 1 - 0
harness/nbi/stub/ext/components/products/helloworld/manifest.mf

@@ -0,0 +1 @@
+Configuration-Logic-Class: org.mycompany.ConfigurationLogic

+ 631 - 0
harness/nbi/stub/ext/components/products/helloworld/nbproject/build-impl.xml

@@ -0,0 +1,631 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+*** GENERATED FROM project.xml - DO NOT EDIT  ***
+***         EDIT ../build.xml INSTEAD         ***
+
+For the purpose of easier reading the script
+is divided into following sections:
+
+  - initialization
+  - compilation
+  - jar
+  - execution
+  - debugging
+  - javadoc
+  - junit compilation
+  - junit execution
+  - junit debugging
+  - applet
+  - cleanup
+
+        -->
+<project xmlns:j2seproject1="http://www.netbeans.org/ns/j2se-project/1" xmlns:j2seproject2="http://www.netbeans.org/ns/j2se-project/2" xmlns:j2seproject3="http://www.netbeans.org/ns/j2se-project/3" xmlns:jaxrpc="http://www.netbeans.org/ns/j2se-project/jax-rpc" basedir=".." default="default" name="helloworld-impl">
+    <target depends="test,jar,javadoc" description="Build and test whole project." name="default"/>
+    <!-- 
+                ======================
+                INITIALIZATION SECTION 
+                ======================
+            -->
+    <target name="-pre-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init" name="-init-private">
+        <property file="nbproject/private/config.properties"/>
+        <property file="nbproject/private/configs/${config}.properties"/>
+        <property file="nbproject/private/private.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private" name="-init-user">
+        <property file="${user.properties.file}"/>
+        <!-- The two properties below are usually overridden -->
+        <!-- by the active platform. Just a fallback. -->
+        <property name="default.javac.source" value="1.4"/>
+        <property name="default.javac.target" value="1.4"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user" name="-init-project">
+        <property file="nbproject/configs/${config}.properties"/>
+        <property file="nbproject/project.properties"/>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-init-macrodef-property" name="-do-init">
+        <available file="${manifest.file}" property="manifest.available"/>
+        <condition property="manifest.available+main.class">
+            <and>
+                <isset property="manifest.available"/>
+                <isset property="main.class"/>
+                <not>
+                    <equals arg1="${main.class}" arg2="" trim="true"/>
+                </not>
+            </and>
+        </condition>
+        <condition property="manifest.available+main.class+mkdist.available">
+            <and>
+                <istrue value="${manifest.available+main.class}"/>
+                <isset property="libs.CopyLibs.classpath"/>
+            </and>
+        </condition>
+        <condition property="have.tests">
+            <or>
+                <available file="${test.src.dir}"/>
+            </or>
+        </condition>
+        <condition property="have.sources">
+            <or>
+                <available file="${src.dir}"/>
+            </or>
+        </condition>
+        <condition property="netbeans.home+have.tests">
+            <and>
+                <isset property="netbeans.home"/>
+                <isset property="have.tests"/>
+            </and>
+        </condition>
+        <condition property="no.javadoc.preview">
+            <and>
+                <isset property="javadoc.preview"/>
+                <isfalse value="${javadoc.preview}"/>
+            </and>
+        </condition>
+        <property name="run.jvmargs" value=""/>
+        <property name="javac.compilerargs" value=""/>
+        <property name="work.dir" value="${basedir}"/>
+        <condition property="no.deps">
+            <and>
+                <istrue value="${no.dependencies}"/>
+            </and>
+        </condition>
+        <property name="javac.debug" value="true"/>
+        <property name="javadoc.preview" value="true"/>
+        <property name="application.args" value=""/>
+        <property name="source.encoding" value="${file.encoding}"/>
+        <condition property="javadoc.encoding.used" value="${javadoc.encoding}">
+            <and>
+                <isset property="javadoc.encoding"/>
+                <not>
+                    <equals arg1="${javadoc.encoding}" arg2=""/>
+                </not>
+            </and>
+        </condition>
+        <property name="javadoc.encoding.used" value="${source.encoding}"/>
+        <property name="includes" value="**"/>
+        <property name="excludes" value=""/>
+        <property name="do.depend" value="false"/>
+        <condition property="do.depend.true">
+            <istrue value="${do.depend}"/>
+        </condition>
+        <condition else="" property="javac.compilerargs.jaxws" value="-Djava.endorsed.dirs='${jaxws.endorsed.dir}'">
+            <and>
+                <isset property="jaxws.endorsed.dir"/>
+                <available file="nbproject/jaxws-build.xml"/>
+            </and>
+        </condition>
+    </target>
+    <target name="-post-init">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init" name="-init-check">
+        <fail unless="src.dir">Must set src.dir</fail>
+        <fail unless="test.src.dir">Must set test.src.dir</fail>
+        <fail unless="build.dir">Must set build.dir</fail>
+        <fail unless="dist.dir">Must set dist.dir</fail>
+        <fail unless="build.classes.dir">Must set build.classes.dir</fail>
+        <fail unless="dist.javadoc.dir">Must set dist.javadoc.dir</fail>
+        <fail unless="build.test.classes.dir">Must set build.test.classes.dir</fail>
+        <fail unless="build.test.results.dir">Must set build.test.results.dir</fail>
+        <fail unless="build.classes.excludes">Must set build.classes.excludes</fail>
+        <fail unless="dist.jar">Must set dist.jar</fail>
+    </target>
+    <target name="-init-macrodef-property">
+        <macrodef name="property" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute name="name"/>
+            <attribute name="value"/>
+            <sequential>
+                <property name="@{name}" value="${@{value}}"/>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-javac">
+        <macrodef name="javac" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="${javac.debug}" name="debug"/>
+            <attribute default="" name="sourcepath"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <javac debug="@{debug}" deprecation="${javac.deprecation}" destdir="@{destdir}" encoding="${source.encoding}" excludes="@{excludes}" includeantruntime="false" includes="@{includes}" source="${javac.source}" sourcepath="@{sourcepath}" srcdir="@{srcdir}" target="${javac.target}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <compilerarg line="${javac.compilerargs} ${javac.compilerargs.jaxws}"/>
+                    <customize/>
+                </javac>
+            </sequential>
+        </macrodef>
+        <macrodef name="depend" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${src.dir}" name="srcdir"/>
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <attribute default="${javac.classpath}" name="classpath"/>
+            <sequential>
+                <depend cache="${build.dir}/depcache" destdir="@{destdir}" excludes="${excludes}" includes="${includes}" srcdir="@{srcdir}">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </depend>
+            </sequential>
+        </macrodef>
+        <macrodef name="force-recompile" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${build.classes.dir}" name="destdir"/>
+            <sequential>
+                <fail unless="javac.includes">Must set javac.includes</fail>
+                <pathconvert pathsep="," property="javac.includes.binary">
+                    <path>
+                        <filelist dir="@{destdir}" files="${javac.includes}"/>
+                    </path>
+                    <globmapper from="*.java" to="*.class"/>
+                </pathconvert>
+                <delete>
+                    <files includes="${javac.includes.binary}"/>
+                </delete>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-junit">
+        <macrodef name="junit" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${includes}" name="includes"/>
+            <attribute default="${excludes}" name="excludes"/>
+            <attribute default="**" name="testincludes"/>
+            <sequential>
+                <junit dir="${work.dir}" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true">
+                    <batchtest todir="${build.test.results.dir}">
+                        <fileset dir="${test.src.dir}" excludes="@{excludes},${excludes}" includes="@{includes}">
+                            <filename name="@{testincludes}"/>
+                        </fileset>
+                    </batchtest>
+                    <classpath>
+                        <path path="${run.test.classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="test-sys-prop."/>
+                        <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <formatter type="brief" usefile="false"/>
+                    <formatter type="xml"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                </junit>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-nbjpda">
+        <macrodef name="nbjpdastart" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${main.class}" name="name"/>
+            <attribute default="${debug.classpath}" name="classpath"/>
+            <attribute default="" name="stopclassname"/>
+            <sequential>
+                <nbjpdastart addressproperty="jpda.address" name="@{name}" stopclassname="@{stopclassname}" transport="dt_socket">
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                </nbjpdastart>
+            </sequential>
+        </macrodef>
+        <macrodef name="nbjpdareload" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${build.classes.dir}" name="dir"/>
+            <sequential>
+                <nbjpdareload>
+                    <fileset dir="@{dir}" includes="${fix.includes}*.class"/>
+                </nbjpdareload>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-debug-args">
+        <property name="version-output" value="java version &quot;${ant.java.version}"/>
+        <condition property="have-jdk-older-than-1.4">
+            <or>
+                <contains string="${version-output}" substring="java version &quot;1.0"/>
+                <contains string="${version-output}" substring="java version &quot;1.1"/>
+                <contains string="${version-output}" substring="java version &quot;1.2"/>
+                <contains string="${version-output}" substring="java version &quot;1.3"/>
+            </or>
+        </condition>
+        <condition else="-Xdebug" property="debug-args-line" value="-Xdebug -Xnoagent -Djava.compiler=none">
+            <istrue value="${have-jdk-older-than-1.4}"/>
+        </condition>
+    </target>
+    <target depends="-init-debug-args" name="-init-macrodef-debug">
+        <macrodef name="debug" uri="http://www.netbeans.org/ns/j2se-project/3">
+            <attribute default="${main.class}" name="classname"/>
+            <attribute default="${debug.classpath}" name="classpath"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" dir="${work.dir}" fork="true">
+                    <jvmarg line="${debug-args-line}"/>
+                    <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
+                    <jvmarg line="${run.jvmargs}"/>
+                    <classpath>
+                        <path path="@{classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-macrodef-java">
+        <macrodef name="java" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <attribute default="${main.class}" name="classname"/>
+            <element name="customize" optional="true"/>
+            <sequential>
+                <java classname="@{classname}" dir="${work.dir}" fork="true">
+                    <jvmarg line="${run.jvmargs}"/>
+                    <classpath>
+                        <path path="${run.classpath}"/>
+                    </classpath>
+                    <syspropertyset>
+                        <propertyref prefix="run-sys-prop."/>
+                        <mapper from="run-sys-prop.*" to="*" type="glob"/>
+                    </syspropertyset>
+                    <customize/>
+                </java>
+            </sequential>
+        </macrodef>
+    </target>
+    <target name="-init-presetdef-jar">
+        <presetdef name="jar" uri="http://www.netbeans.org/ns/j2se-project/1">
+            <jar compress="${jar.compress}" jarfile="${dist.jar}">
+                <j2seproject1:fileset dir="${build.classes.dir}"/>
+            </jar>
+        </presetdef>
+    </target>
+    <target depends="-pre-init,-init-private,-init-user,-init-project,-do-init,-post-init,-init-check,-init-macrodef-property,-init-macrodef-javac,-init-macrodef-junit,-init-macrodef-nbjpda,-init-macrodef-debug,-init-macrodef-java,-init-presetdef-jar" name="init"/>
+    <!--
+                ===================
+                COMPILATION SECTION
+                ===================
+            -->
+    <target depends="init" name="deps-jar" unless="no.deps">
+        <ant antfile="${project.Core_NBI_Engine}/build.xml" inheritall="false" target="jar"/>
+    </target>
+    <target depends="init,deps-jar" name="-pre-pre-compile">
+        <mkdir dir="${build.classes.dir}"/>
+    </target>
+    <target name="-pre-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="do.depend.true" name="-compile-depend">
+        <j2seproject3:depend/>
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-compile-depend" if="have.sources" name="-do-compile">
+        <j2seproject3:javac/>
+        <copy todir="${build.classes.dir}">
+            <fileset dir="${src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target name="-post-compile">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile,-do-compile,-post-compile" description="Compile project." name="compile"/>
+    <target name="-pre-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile" name="-do-compile-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:force-recompile/>
+        <j2seproject3:javac excludes="" includes="${javac.includes}" sourcepath="${src.dir}"/>
+    </target>
+    <target name="-post-compile-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-jar,-pre-pre-compile,-pre-compile-single,-do-compile-single,-post-compile-single" name="compile-single"/>
+    <!--
+                ====================
+                JAR BUILDING SECTION
+                ====================
+            -->
+    <target depends="init" name="-pre-pre-jar">
+        <dirname file="${dist.jar}" property="dist.jar.dir"/>
+        <mkdir dir="${dist.jar.dir}"/>
+    </target>
+    <target name="-pre-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" name="-do-jar-without-manifest" unless="manifest.available">
+        <j2seproject1:jar/>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available" name="-do-jar-with-manifest" unless="manifest.available+main.class">
+        <j2seproject1:jar manifest="${manifest.file}"/>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class" name="-do-jar-with-mainclass" unless="manifest.available+main.class+mkdist.available">
+        <j2seproject1:jar manifest="${manifest.file}">
+            <j2seproject1:manifest>
+                <j2seproject1:attribute name="Main-Class" value="${main.class}"/>
+            </j2seproject1:manifest>
+        </j2seproject1:jar>
+        <echo>To run this application from the command line without Ant, try:</echo>
+        <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <pathconvert property="run.classpath.with.dist.jar">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" to="${dist.jar.resolved}"/>
+        </pathconvert>
+        <echo>java -cp "${run.classpath.with.dist.jar}" ${main.class}</echo>
+    </target>
+    <target depends="init,compile,-pre-pre-jar,-pre-jar" if="manifest.available+main.class+mkdist.available" name="-do-jar-with-libraries">
+        <property location="${build.classes.dir}" name="build.classes.dir.resolved"/>
+        <pathconvert property="run.classpath.without.build.classes.dir">
+            <path path="${run.classpath}"/>
+            <map from="${build.classes.dir.resolved}" to=""/>
+        </pathconvert>
+        <pathconvert pathsep=" " property="jar.classpath">
+            <path path="${run.classpath.without.build.classes.dir}"/>
+            <chainedmapper>
+                <flattenmapper/>
+                <globmapper from="*" to="lib/*"/>
+            </chainedmapper>
+        </pathconvert>
+        <taskdef classname="org.netbeans.modules.java.j2seproject.copylibstask.CopyLibs" classpath="${libs.CopyLibs.classpath}" name="copylibs"/>
+        <copylibs compress="${jar.compress}" jarfile="${dist.jar}" manifest="${manifest.file}" runtimeclasspath="${run.classpath.without.build.classes.dir}">
+            <fileset dir="${build.classes.dir}"/>
+            <manifest>
+                <attribute name="Main-Class" value="${main.class}"/>
+                <attribute name="Class-Path" value="${jar.classpath}"/>
+            </manifest>
+        </copylibs>
+        <echo>To run this application from the command line without Ant, try:</echo>
+        <property location="${dist.jar}" name="dist.jar.resolved"/>
+        <echo>java -jar "${dist.jar.resolved}"</echo>
+    </target>
+    <target name="-post-jar">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-jar,-do-jar-with-manifest,-do-jar-without-manifest,-do-jar-with-mainclass,-do-jar-with-libraries,-post-jar" description="Build JAR." name="jar"/>
+    <!--
+                =================
+                EXECUTION SECTION
+                =================
+            -->
+    <target depends="init,compile" description="Run a main class." name="run">
+        <j2seproject1:java>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <target name="-do-not-recompile">
+        <property name="javac.includes.binary" value=""/>
+    </target>
+    <target depends="init,-do-not-recompile,compile-single" name="run-single">
+        <fail unless="run.class">Must select one file in the IDE or set run.class</fail>
+        <j2seproject1:java classname="${run.class}"/>
+    </target>
+    <!--
+                =================
+                DEBUGGING SECTION
+                =================
+            -->
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger">
+        <j2seproject1:nbjpdastart name="${debug.class}"/>
+    </target>
+    <target depends="init,compile" name="-debug-start-debuggee">
+        <j2seproject3:debug>
+            <customize>
+                <arg line="${application.args}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile,-debug-start-debugger,-debug-start-debuggee" description="Debug project in IDE." if="netbeans.home" name="debug"/>
+    <target depends="init" if="netbeans.home" name="-debug-start-debugger-stepinto">
+        <j2seproject1:nbjpdastart stopclassname="${main.class}"/>
+    </target>
+    <target depends="init,compile,-debug-start-debugger-stepinto,-debug-start-debuggee" if="netbeans.home" name="debug-stepinto"/>
+    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-single">
+        <fail unless="debug.class">Must select one file in the IDE or set debug.class</fail>
+        <j2seproject3:debug classname="${debug.class}"/>
+    </target>
+    <target depends="init,-do-not-recompile,compile-single,-debug-start-debugger,-debug-start-debuggee-single" if="netbeans.home" name="debug-single"/>
+    <target depends="init" name="-pre-debug-fix">
+        <fail unless="fix.includes">Must set fix.includes</fail>
+        <property name="javac.includes" value="${fix.includes}.java"/>
+    </target>
+    <target depends="init,-pre-debug-fix,compile-single" if="netbeans.home" name="-do-debug-fix">
+        <j2seproject1:nbjpdareload/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix" if="netbeans.home" name="debug-fix"/>
+    <!--
+                ===============
+                JAVADOC SECTION
+                ===============
+            -->
+    <target depends="init" name="-javadoc-build">
+        <mkdir dir="${dist.javadoc.dir}"/>
+        <javadoc additionalparam="${javadoc.additionalparam}" author="${javadoc.author}" charset="UTF-8" destdir="${dist.javadoc.dir}" docencoding="UTF-8" encoding="${javadoc.encoding.used}" failonerror="true" noindex="${javadoc.noindex}" nonavbar="${javadoc.nonavbar}" notree="${javadoc.notree}" private="${javadoc.private}" source="${javac.source}" splitindex="${javadoc.splitindex}" use="${javadoc.use}" useexternalfile="true" version="${javadoc.version}" windowtitle="${javadoc.windowtitle}">
+            <classpath>
+                <path path="${javac.classpath}"/>
+            </classpath>
+            <fileset dir="${src.dir}" excludes="${excludes}" includes="${includes}">
+                <filename name="**/*.java"/>
+            </fileset>
+        </javadoc>
+    </target>
+    <target depends="init,-javadoc-build" if="netbeans.home" name="-javadoc-browse" unless="no.javadoc.preview">
+        <nbbrowse file="${dist.javadoc.dir}/index.html"/>
+    </target>
+    <target depends="init,-javadoc-build,-javadoc-browse" description="Build Javadoc." name="javadoc"/>
+    <!--
+                =========================
+                JUNIT COMPILATION SECTION
+                =========================
+            -->
+    <target depends="init,compile" if="have.tests" name="-pre-pre-compile-test">
+        <mkdir dir="${build.test.classes.dir}"/>
+    </target>
+    <target name="-pre-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target if="do.depend.true" name="-compile-test-depend">
+        <j2seproject3:depend classpath="${javac.test.classpath}" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-compile-test-depend" if="have.tests" name="-do-compile-test">
+        <j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" srcdir="${test.src.dir}"/>
+        <copy todir="${build.test.classes.dir}">
+            <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target name="-post-compile-test">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test,-do-compile-test,-post-compile-test" name="compile-test"/>
+    <target name="-pre-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single" if="have.tests" name="-do-compile-test-single">
+        <fail unless="javac.includes">Must select some files in the IDE or set javac.includes</fail>
+        <j2seproject3:force-recompile destdir="${build.test.classes.dir}"/>
+        <j2seproject3:javac classpath="${javac.test.classpath}" debug="true" destdir="${build.test.classes.dir}" excludes="" includes="${javac.includes}" sourcepath="${test.src.dir}" srcdir="${test.src.dir}"/>
+        <copy todir="${build.test.classes.dir}">
+            <fileset dir="${test.src.dir}" excludes="${build.classes.excludes},${excludes}" includes="${includes}"/>
+        </copy>
+    </target>
+    <target name="-post-compile-test-single">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,compile,-pre-pre-compile-test,-pre-compile-test-single,-do-compile-test-single,-post-compile-test-single" name="compile-test-single"/>
+    <!--
+                =======================
+                JUNIT EXECUTION SECTION
+                =======================
+            -->
+    <target depends="init" if="have.tests" name="-pre-test-run">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run" if="have.tests" name="-do-test-run">
+        <j2seproject3:junit testincludes="**/*Test.java"/>
+    </target>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run" if="have.tests" name="-post-test-run">
+        <fail if="tests.failed">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init" if="have.tests" name="test-report"/>
+    <target depends="init" if="netbeans.home+have.tests" name="-test-browse"/>
+    <target depends="init,compile-test,-pre-test-run,-do-test-run,test-report,-post-test-run,-test-browse" description="Run unit tests." name="test"/>
+    <target depends="init" if="have.tests" name="-pre-test-run-single">
+        <mkdir dir="${build.test.results.dir}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single" if="have.tests" name="-do-test-run-single">
+        <fail unless="test.includes">Must select some files in the IDE or set test.includes</fail>
+        <j2seproject3:junit excludes="" includes="${test.includes}"/>
+    </target>
+    <target depends="init,compile-test-single,-pre-test-run-single,-do-test-run-single" if="have.tests" name="-post-test-run-single">
+        <fail if="tests.failed">Some tests failed; see details above.</fail>
+    </target>
+    <target depends="init,-do-not-recompile,compile-test-single,-pre-test-run-single,-do-test-run-single,-post-test-run-single" description="Run single unit test." name="test-single"/>
+    <!--
+                =======================
+                JUNIT DEBUGGING SECTION
+                =======================
+            -->
+    <target depends="init,compile-test" if="have.tests" name="-debug-start-debuggee-test">
+        <fail unless="test.class">Must select one file in the IDE or set test.class</fail>
+        <property location="${build.test.results.dir}/TEST-${test.class}.xml" name="test.report.file"/>
+        <delete file="${test.report.file}"/>
+        <mkdir dir="${build.test.results.dir}"/>
+        <j2seproject3:debug classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner" classpath="${ant.home}/lib/ant.jar:${ant.home}/lib/ant-junit.jar:${debug.test.classpath}">
+            <customize>
+                <syspropertyset>
+                    <propertyref prefix="test-sys-prop."/>
+                    <mapper from="test-sys-prop.*" to="*" type="glob"/>
+                </syspropertyset>
+                <arg value="${test.class}"/>
+                <arg value="showoutput=true"/>
+                <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.BriefJUnitResultFormatter"/>
+                <arg value="formatter=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter,${test.report.file}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile-test" if="netbeans.home+have.tests" name="-debug-start-debugger-test">
+        <j2seproject1:nbjpdastart classpath="${debug.test.classpath}" name="${test.class}"/>
+    </target>
+    <target depends="init,-do-not-recompile,compile-test-single,-debug-start-debugger-test,-debug-start-debuggee-test" name="debug-test"/>
+    <target depends="init,-pre-debug-fix,compile-test-single" if="netbeans.home" name="-do-debug-fix-test">
+        <j2seproject1:nbjpdareload dir="${build.test.classes.dir}"/>
+    </target>
+    <target depends="init,-pre-debug-fix,-do-debug-fix-test" if="netbeans.home" name="debug-fix-test"/>
+    <!--
+                =========================
+                APPLET EXECUTION SECTION
+                =========================
+            -->
+    <target depends="init,compile-single" name="run-applet">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject1:java classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject1:java>
+    </target>
+    <!--
+                =========================
+                APPLET DEBUGGING  SECTION
+                =========================
+            -->
+    <target depends="init,compile-single" if="netbeans.home" name="-debug-start-debuggee-applet">
+        <fail unless="applet.url">Must select one file in the IDE or set applet.url</fail>
+        <j2seproject3:debug classname="sun.applet.AppletViewer">
+            <customize>
+                <arg value="${applet.url}"/>
+            </customize>
+        </j2seproject3:debug>
+    </target>
+    <target depends="init,compile-single,-debug-start-debugger,-debug-start-debuggee-applet" if="netbeans.home" name="debug-applet"/>
+    <!--
+                ===============
+                CLEANUP SECTION
+                ===============
+            -->
+    <target depends="init" name="deps-clean" unless="no.deps">
+        <ant antfile="${project.Core_NBI_Engine}/build.xml" inheritall="false" target="clean"/>
+    </target>
+    <target depends="init" name="-do-clean">
+        <delete dir="${build.dir}"/>
+        <delete dir="${dist.dir}"/>
+    </target>
+    <target name="-post-clean">
+        <!-- Empty placeholder for easier customization. -->
+        <!-- You can override this target in the ../build.xml file. -->
+    </target>
+    <target depends="init,deps-clean,-do-clean,-post-clean" description="Clean build products." name="clean"/>
+</project>

+ 8 - 0
harness/nbi/stub/ext/components/products/helloworld/nbproject/genfiles.properties

@@ -0,0 +1,8 @@
+build.xml.data.CRC32=b5c7f54a
+build.xml.script.CRC32=16bbb630
+build.xml.stylesheet.CRC32=be360661
+# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
+# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
+nbproject/build-impl.xml.data.CRC32=b5c7f54a
+nbproject/build-impl.xml.script.CRC32=815f74ea
+nbproject/build-impl.xml.stylesheet.CRC32=f1d9da08

+ 62 - 0
harness/nbi/stub/ext/components/products/helloworld/nbproject/project.properties

@@ -0,0 +1,62 @@
+application.title=helloworld
+application.vendor=dlm198383
+build.classes.dir=${build.dir}/classes
+build.classes.excludes=**/*.java,**/*.form
+# This directory is removed when the project is cleaned:
+build.dir=build
+build.generated.dir=${build.dir}/generated
+# Only compile against the classpath explicitly listed here:
+build.sysclasspath=ignore
+build.test.classes.dir=${build.dir}/test/classes
+build.test.results.dir=${build.dir}/test/results
+debug.classpath=\
+    ${run.classpath}
+debug.test.classpath=\
+    ${run.test.classpath}
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/helloworld.jar
+dist.javadoc.dir=${dist.dir}/javadoc
+excludes=
+includes=**
+jar.compress=false
+javac.classpath=\
+    ${reference.Core_NBI_Engine.jar}
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.deprecation=false
+javac.source=1.5
+javac.target=1.5
+javac.test.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}:\
+    ${libs.junit.classpath}:\
+    ${libs.junit_4.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=${source.encoding}
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+meta.inf.dir=${src.dir}/META-INF
+platform.active=default_platform
+project.Core_NBI_Engine=../../../../nbi/engine
+reference.Core_NBI_Engine.jar=${project.Core_NBI_Engine}/dist/nbi-engine.jar
+run.classpath=\
+    ${javac.classpath}:\
+    ${build.classes.dir}
+# Space-separated list of JVM arguments used when running the project
+# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
+# or test-sys-prop.name=value to set system properties for unit tests):
+run.jvmargs=
+run.test.classpath=\
+    ${javac.test.classpath}:\
+    ${build.test.classes.dir}
+source.encoding=UTF-8
+src.dir=src
+test.src.dir=test

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.