diff --git a/OpenAMASE/build.xml b/OpenAMASE/build.xml
index 5ce1555..a91f698 100644
--- a/OpenAMASE/build.xml
+++ b/OpenAMASE/build.xml
@@ -1,73 +1,73 @@
-
-
-
-
-
-
-
-
-
-
- Builds, tests, and runs the project OpenAMASE.
-
-
-
+
+
+
+
+
+
+
+
+
+
+ Builds, tests, and runs the project OpenAMASE.
+
+
+
diff --git a/OpenAMASE/lib/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar b/OpenAMASE/lib/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar
index 14c3bbb..70ce7f6 100644
Binary files a/OpenAMASE/lib/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar and b/OpenAMASE/lib/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar differ
diff --git a/OpenAMASE/lib/nblibraries.properties b/OpenAMASE/lib/nblibraries.properties
index 2b10aaa..364daac 100644
--- a/OpenAMASE/lib/nblibraries.properties
+++ b/OpenAMASE/lib/nblibraries.properties
@@ -1,39 +1,39 @@
-libs.CopyLibs.classpath=\
- ${base}/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar
-libs.CopyLibs.displayName=CopyLibs Task
-libs.CopyLibs.prop-version=2.0
-libs.Flexdock.classpath=\
- ${base}/Flexdock/flexdock-1.2.3.jar
-libs.Flexdock.displayName=Flexdock
-libs.Flexdock.src=\
- ${base}/Flexdock/flexdock-1.2/src/java/core/;\
- ${base}/Flexdock/flexdock-1.2/src/java/demo/;\
- ${base}/Flexdock/flexdock-1.2/src/java/dockbar/;\
- ${base}/Flexdock/flexdock-1.2/src/java/drag/;\
- ${base}/Flexdock/flexdock-1.2/src/java/perspective/;\
- ${base}/Flexdock/flexdock-1.2/src/java/plaf/;\
- ${base}/Flexdock/flexdock-1.2/src/java/test/;\
- ${base}/Flexdock/flexdock-1.2/src/java/view/
-libs.GRAL.classpath=\
- ${base}/GRAL/gral-core-0.10.jar
-libs.GRAL.displayName=GRAL
-libs.GRAL.src=\
- ${base}/GRAL/java/
-libs.JScience.classpath=\
- ${base}/JScience/jscience.jar
-libs.JScience.displayName=JScience
-libs.JScience.src=\
- ${base}/JScience/src/
-libs.SwingX.classpath=\
- ${base}/SwingX/swingx-all-1.6.4.jar
-libs.SwingX.displayName=SwingX
-libs.SwingX.javadoc=\
- ${base}/SwingX/swingx-all-1.6.4-javadoc.jar!//
-libs.SwingX.src=\
- ${base}/SwingX/swingx-all-1.6.4-sources.jar!//
-libs.Worldwind.classpath=\
- ${base}/Worldwind/worldwindx.jar;\
- ${base}/worldwind.jar
-libs.Worldwind.displayName=Worldwind
-libs.Worldwind.src=\
- ${base}/Worldwind/src.zip!/src/
+libs.CopyLibs.classpath=\
+ ${base}/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar
+libs.CopyLibs.displayName=CopyLibs Task
+libs.CopyLibs.prop-version=3.0
+libs.Flexdock.classpath=\
+ ${base}/Flexdock/flexdock-1.2.3.jar
+libs.Flexdock.displayName=Flexdock
+libs.Flexdock.src=\
+ ${base}/Flexdock/flexdock-1.2/src/java/core/;\
+ ${base}/Flexdock/flexdock-1.2/src/java/demo/;\
+ ${base}/Flexdock/flexdock-1.2/src/java/dockbar/;\
+ ${base}/Flexdock/flexdock-1.2/src/java/drag/;\
+ ${base}/Flexdock/flexdock-1.2/src/java/perspective/;\
+ ${base}/Flexdock/flexdock-1.2/src/java/plaf/;\
+ ${base}/Flexdock/flexdock-1.2/src/java/test/;\
+ ${base}/Flexdock/flexdock-1.2/src/java/view/
+libs.GRAL.classpath=\
+ ${base}/GRAL/gral-core-0.10.jar
+libs.GRAL.displayName=GRAL
+libs.GRAL.src=\
+ ${base}/GRAL/java/
+libs.JScience.classpath=\
+ ${base}/JScience/jscience.jar
+libs.JScience.displayName=JScience
+libs.JScience.src=\
+ ${base}/JScience/src/
+libs.SwingX.classpath=\
+ ${base}/SwingX/swingx-all-1.6.4.jar
+libs.SwingX.displayName=SwingX
+libs.SwingX.javadoc=\
+ ${base}/SwingX/swingx-all-1.6.4-javadoc.jar!//
+libs.SwingX.src=\
+ ${base}/SwingX/swingx-all-1.6.4-sources.jar!//
+libs.Worldwind.classpath=\
+ ${base}/Worldwind/worldwindx.jar;\
+ ${base}/worldwind.jar
+libs.Worldwind.displayName=Worldwind
+libs.Worldwind.src=\
+ ${base}/Worldwind/src.zip!/src/
diff --git a/OpenAMASE/nbproject/build-impl.xml b/OpenAMASE/nbproject/build-impl.xml
index 2f8dc4f..9f21aec 100644
--- a/OpenAMASE/nbproject/build-impl.xml
+++ b/OpenAMASE/nbproject/build-impl.xml
@@ -1,1455 +1,1810 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Must set Core.dir
- Must set Amase.dir
- Must set SetupTool.dir
- Must set src.example.dir
- Must set build.dir
- Must set dist.dir
- Must set build.classes.dir
- Must set dist.javadoc.dir
- Must set build.test.classes.dir
- Must set build.test.results.dir
- Must set build.classes.excludes
- Must set dist.jar
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Must set javac.includes
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- No tests executed.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Must set JVM to use for profiling in profiler.info.jvm
- Must set profiler agent JVM arguments in profiler.info.jvmargs.agent
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Must select some files in the IDE or set javac.includes
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- To run this application from the command line without Ant, try:
-
- java -jar "${dist.jar.resolved}"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Must select one file in the IDE or set run.class
-
-
-
- Must select one file in the IDE or set run.class
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Must select one file in the IDE or set debug.class
-
-
-
-
- Must select one file in the IDE or set debug.class
-
-
-
-
- Must set fix.includes
-
-
-
-
-
-
-
-
-
- This target only works when run from inside the NetBeans IDE.
-
-
-
-
-
-
-
-
- Must select one file in the IDE or set profile.class
- This target only works when run from inside the NetBeans IDE.
-
-
-
-
-
-
-
-
- This target only works when run from inside the NetBeans IDE.
-
-
-
-
-
-
-
-
-
-
-
-
- This target only works when run from inside the NetBeans IDE.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Must select one file in the IDE or set run.class
-
-
-
-
-
- Must select some files in the IDE or set test.includes
-
-
-
-
- Must select one file in the IDE or set run.class
-
-
-
-
- Must select one file in the IDE or set applet.url
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Must select some files in the IDE or set javac.includes
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Some tests failed; see details above.
-
-
-
-
-
-
-
-
- Must select some files in the IDE or set test.includes
-
-
-
- Some tests failed; see details above.
-
-
-
- Must select some files in the IDE or set test.class
- Must select some method in the IDE or set test.method
-
-
-
- Some tests failed; see details above.
-
-
-
-
- Must select one file in the IDE or set test.class
-
-
-
- Must select one file in the IDE or set test.class
- Must select some method in the IDE or set test.method
-
-
-
-
-
-
-
-
-
-
-
-
-
- Must select one file in the IDE or set applet.url
-
-
-
-
-
-
-
-
- Must select one file in the IDE or set applet.url
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must set Core.dir
+ Must set Amase.dir
+ Must set SetupTool.dir
+ Must set src.example.dir
+ Must set build.dir
+ Must set dist.dir
+ Must set build.classes.dir
+ Must set dist.javadoc.dir
+ Must set build.test.classes.dir
+ Must set build.test.results.dir
+ Must set build.classes.excludes
+ Must set dist.jar
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ No tests executed.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must set JVM to use for profiling in profiler.info.jvm
+ Must set profiler agent JVM arguments in profiler.info.jvmargs.agent
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ To run this application from the command line without Ant, try:
+
+ java -jar "${dist.jar.resolved}"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set debug.class
+
+
+
+
+ Must select one file in the IDE or set debug.class
+
+
+
+
+ Must set fix.includes
+
+
+
+
+
+
+
+
+
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set profile.class
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+
+
+
+
+ This target only works when run from inside the NetBeans IDE.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+
+
+ Must select some files in the IDE or set test.includes
+
+
+
+
+ Must select one file in the IDE or set run.class
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set javac.includes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Some tests failed; see details above.
+
+
+
+
+
+
+
+
+ Must select some files in the IDE or set test.includes
+
+
+
+ Some tests failed; see details above.
+
+
+
+ Must select some files in the IDE or set test.class
+ Must select some method in the IDE or set test.method
+
+
+
+ Some tests failed; see details above.
+
+
+
+
+ Must select one file in the IDE or set test.class
+
+
+
+ Must select one file in the IDE or set test.class
+ Must select some method in the IDE or set test.method
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
+
+
+
+
+
+ Must select one file in the IDE or set applet.url
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/OpenAMASE/nbproject/build-native.xml b/OpenAMASE/nbproject/build-native.xml
index 1aa10a0..899e945 100644
--- a/OpenAMASE/nbproject/build-native.xml
+++ b/OpenAMASE/nbproject/build-native.xml
@@ -6,45 +6,24 @@
-->
@@ -664,6 +643,25 @@ Portions Copyrighted 2013 Sun Microsystems, Inc.
// manifest
var man = jar.createManifest();
+ var userManifestPath = project.getProperty("manifest.file");
+ if (userManifestPath) {
+ var userManifestFile = project.resolveFile(userManifestPath);
+ if (userManifestFile.isFile()) {
+ var manifestEncoding = project.getProperty("manifest.encoding");
+ var userManifestReader = manifestEncoding ?
+ new java.io.InputStreamReader(
+ new java.io.FileInputStream(userManifestFile),
+ manifestEncoding) :
+ new java.io.InputStreamReader(
+ new java.io.FileInputStream(userManifestFile));
+ try {
+ var userManifest = new org.apache.tools.ant.taskdefs.Manifest(userManifestReader);
+ man.merge(userManifest);
+ } finally {
+ userManifestReader.close();
+ }
+ }
+ }
var a1val = new String(project.getProperty("application.vendor"));
var a1 = new org.apache.tools.ant.taskdefs.Manifest.Attribute();
a1.setName("Implementation-Vendor");
diff --git a/OpenAMASE/nbproject/genfiles.properties b/OpenAMASE/nbproject/genfiles.properties
index dca6934..32eae85 100644
--- a/OpenAMASE/nbproject/genfiles.properties
+++ b/OpenAMASE/nbproject/genfiles.properties
@@ -1,8 +1,8 @@
-build.xml.data.CRC32=bf9fc4ef
-build.xml.script.CRC32=f19a1b87
-build.xml.stylesheet.CRC32=8064a381@1.79.1.48
-# 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=bf9fc4ef
-nbproject/build-impl.xml.script.CRC32=90f070c0
-nbproject/build-impl.xml.stylesheet.CRC32=05530350@1.79.1.48
+build.xml.data.CRC32=bf9fc4ef
+build.xml.script.CRC32=f19a1b87
+build.xml.stylesheet.CRC32=f85dc8f2@1.108.0.48
+# 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=bf9fc4ef
+nbproject/build-impl.xml.script.CRC32=c61f68a4
+nbproject/build-impl.xml.stylesheet.CRC32=12e0a6c2@1.108.0.48
diff --git a/OpenAMASE/nbproject/project.properties b/OpenAMASE/nbproject/project.properties
index 5241859..0a795de 100644
--- a/OpenAMASE/nbproject/project.properties
+++ b/OpenAMASE/nbproject/project.properties
@@ -1,90 +1,105 @@
-Amase.dir=${file.reference.src-Amase}
-annotation.processing.enabled=true
-annotation.processing.enabled.in.editor=false
-annotation.processing.processors.list=
-annotation.processing.run.all.processors=true
-annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
-application.title=OpenAMASE
-application.vendor=AFRL.RQ
-auxiliary.org-netbeans-spi-editor-hints-projects.perProjectHintSettingsFile=nbproject/cfg_hints.xml
-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
-Core.dir=${file.reference.src-Core}
-# 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}/OpenAMASE.jar
-dist.javadoc.dir=${dist.dir}/javadoc
-endorsed.classpath=
-excludes=
-file.reference.lmcplib.jar=lib/lmcplib.jar
-file.reference.src-Amase=src/Amase
-file.reference.src-Core=src/Core
-file.reference.src-SetupTool=src/SetupTool
-file.reference.worldwind.jar=lib/worldwind.jar
-includes=**
-jar.compress=false
-javac.classpath=\
- ${file.reference.lmcplib.jar}:\
- ${libs.Flexdock.classpath}:\
- ${libs.SwingX.classpath}:\
- ${libs.GRAL.classpath}:\
- ${file.reference.worldwind.jar}
-# Space-separated list of extra javac options
-javac.compilerargs=
-javac.deprecation=false
-javac.external.vm=false
-javac.processorpath=\
- ${javac.classpath}
-javac.source=1.7
-javac.target=1.7
-javac.test.classpath=\
- ${javac.classpath}:\
- ${build.classes.dir}
-javac.test.processorpath=\
- ${javac.test.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=
-main.class=avtas.app.Application
-manifest.file=manifest.mf
-meta.inf.dir=${src.dir}/META-INF
-mkdist.disabled=true
-native.bundling.enabled=true
-platform.active=default_platform
-project.license=rqqd_license
-project.licensePath=./nbproject/rqqd_license.txt
-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.
-# To set system properties for unit tests define test-sys-prop.name=value:
-run.jvmargs=-splash:./data/amase_splash.png
-run.test.classpath=\
- ${javac.test.classpath}:\
- ${build.test.classes.dir}
-SetupTool.dir=${file.reference.src-SetupTool}
-source.encoding=UTF-8
-src.example.dir=src\\example
+Amase.dir=${file.reference.src-Amase}
+annotation.processing.enabled=true
+annotation.processing.enabled.in.editor=false
+annotation.processing.processors.list=
+annotation.processing.run.all.processors=true
+annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
+application.title=OpenAMASE
+application.vendor=AFRL.RQ
+auxiliary.org-netbeans-spi-editor-hints-projects.perProjectHintSettingsFile=nbproject/cfg_hints.xml
+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
+Core.dir=${file.reference.src-Core}
+# Uncomment to specify the preferred debugger connection transport:
+#debug.transport=dt_socket
+debug.classpath=\
+ ${run.classpath}
+debug.modulepath=\
+ ${run.modulepath}
+debug.test.classpath=\
+ ${run.test.classpath}
+debug.test.modulepath=\
+ ${run.test.modulepath}
+# This directory is removed when the project is cleaned:
+dist.dir=dist
+dist.jar=${dist.dir}/OpenAMASE.jar
+dist.javadoc.dir=${dist.dir}/javadoc
+endorsed.classpath=
+excludes=
+file.reference.lmcplib.jar=lib/lmcplib.jar
+file.reference.src-Amase=src/Amase
+file.reference.src-Core=src/Core
+file.reference.src-SetupTool=src/SetupTool
+file.reference.worldwind.jar=lib/worldwind.jar
+includes=**
+jar.compress=false
+javac.classpath=\
+ ${file.reference.lmcplib.jar}:\
+ ${libs.Flexdock.classpath}:\
+ ${libs.SwingX.classpath}:\
+ ${libs.GRAL.classpath}:\
+ ${file.reference.worldwind.jar}
+# Space-separated list of extra javac options
+javac.compilerargs=
+javac.deprecation=true
+javac.external.vm=false
+javac.modulepath=
+javac.processormodulepath=
+javac.processorpath=\
+ ${javac.classpath}
+javac.source=11
+javac.target=11
+javac.test.classpath=\
+ ${javac.classpath}:\
+ ${build.classes.dir}
+javac.test.modulepath=\
+ ${javac.modulepath}
+javac.test.processorpath=\
+ ${javac.test.classpath}
+javadoc.additionalparam=
+javadoc.author=false
+javadoc.encoding=${source.encoding}
+javadoc.html5=false
+javadoc.noindex=false
+javadoc.nonavbar=false
+javadoc.notree=false
+javadoc.private=false
+javadoc.splitindex=true
+javadoc.use=true
+javadoc.version=false
+javadoc.windowtitle=
+jlink.launcher=false
+jlink.launcher.name=OpenAMASE
+main.class=avtas.app.Application
+manifest.file=manifest.mf
+meta.inf.dir=${src.dir}/META-INF
+mkdist.disabled=true
+native.bundling.enabled=true
+platform.active=default_platform
+project.license=rqqd_license
+project.licensePath=./nbproject/rqqd_license.txt
+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.
+# To set system properties for unit tests define test-sys-prop.name=value:
+run.jvmargs=-splash:./data/amase_splash.png
+run.modulepath=\
+ ${javac.modulepath}
+run.test.classpath=\
+ ${javac.test.classpath}:\
+ ${build.test.classes.dir}
+run.test.modulepath=\
+ ${javac.test.modulepath}
+SetupTool.dir=${file.reference.src-SetupTool}
+source.encoding=UTF-8
+src.example.dir=src\\example
diff --git a/OpenAMASE/src/Amase/avtas/amase/entity/EntityModel.java b/OpenAMASE/src/Amase/avtas/amase/entity/EntityModel.java
index 028918b..e310281 100644
--- a/OpenAMASE/src/Amase/avtas/amase/entity/EntityModel.java
+++ b/OpenAMASE/src/Amase/avtas/amase/entity/EntityModel.java
@@ -275,26 +275,36 @@ public void fireModelEvent(Object event) {
* the source.
*/
public void fireModelEvent(Object event, Object source) {
+ synchronized(eventQueue) {
+ eventQueue.add(new EventWrapper(event, source));
+ }
- eventQueue.add(new EventWrapper(event, source));
-
- if (isDispatching) {
- return;
+ synchronized(this) {
+ if (isDispatching) {
+ return;
+ }
+ isDispatching = true;
}
- isDispatching = true;
-
- while (!eventQueue.isEmpty()) {
- EventWrapper eventWrapper = eventQueue.pollFirst();
- if (eventWrapper != null) {
- for (EntityModule m : moduleList) {
- if (eventWrapper.source != m) {
- m.modelEventOccurred(event);
+
+ while (true) {
+ synchronized(eventQueue) {
+ if (eventQueue.isEmpty()) {
+ break;
+ }
+ EventWrapper eventWrapper = eventQueue.pollFirst();
+ if (eventWrapper != null) {
+ for (EntityModule m : moduleList) {
+ if (eventWrapper.source != m) {
+ m.modelEventOccurred(eventWrapper.event);
+ }
}
}
}
}
- isDispatching = false;
+ synchronized(this) {
+ isDispatching = false;
+ }
}
public long getID() {
diff --git a/OpenAMASE/src/Amase/avtas/amase/map/MapPlugin.java b/OpenAMASE/src/Amase/avtas/amase/map/MapPlugin.java
index fd405c0..83deac6 100644
--- a/OpenAMASE/src/Amase/avtas/amase/map/MapPlugin.java
+++ b/OpenAMASE/src/Amase/avtas/amase/map/MapPlugin.java
@@ -293,7 +293,7 @@ public void actionPerformed(ActionEvent e) {
try {
Class c = Class.forName(ans);
if (MapLayer.class.isAssignableFrom(c)) {
- MapLayer layer = (MapLayer) c.newInstance();
+ MapLayer layer = (MapLayer) c.getDeclaredConstructor().newInstance();
map.add(layer);
if (context != null) {
context.addObject(layer);
diff --git a/OpenAMASE/src/Amase/avtas/amase/network/EntityTcpServer.java b/OpenAMASE/src/Amase/avtas/amase/network/EntityTcpServer.java
index 1f50323..4124829 100644
--- a/OpenAMASE/src/Amase/avtas/amase/network/EntityTcpServer.java
+++ b/OpenAMASE/src/Amase/avtas/amase/network/EntityTcpServer.java
@@ -127,6 +127,8 @@ public void run() {
while (isRunning) {
try {
+ //TODO: The Java Socket types is NOT thread safe and there's no protection here for concurrent read/write
+ // to the socket!
byte[] bytes = LMCPFactory.getMessageBytes(socket.getInputStream());
if (bytes.length > 0) {
avtas.lmcp.LMCPObject lmcpObject = LMCPFactory.getObject(bytes);
diff --git a/OpenAMASE/src/Amase/avtas/amase/objtree/LmcpObjectActions.java b/OpenAMASE/src/Amase/avtas/amase/objtree/LmcpObjectActions.java
index 896ac1f..96bd428 100644
--- a/OpenAMASE/src/Amase/avtas/amase/objtree/LmcpObjectActions.java
+++ b/OpenAMASE/src/Amase/avtas/amase/objtree/LmcpObjectActions.java
@@ -379,7 +379,7 @@ public static ArrayList