diff --git a/build.properties b/build.properties index 81f61d12dfddf67f29f9fd7356b4c143cdb27245..951eab3513ed7af233eb3ac5827cf31d2b332328 100644 --- a/build.properties +++ b/build.properties @@ -57,7 +57,8 @@ dist.jar=${dist.dir}/${product.shortname}-${product.Version}.jar dist.src.jar=${dist.dir}/${product.shortname}-${product.Version}-src.jar docs.dir=docs dist.javadoc.dir=${docs.dir}/javadoc -oracle.javadoc.link=https://docs.oracle.com/en/java/javase/20/docs/api/index.html +dist.javadoc.jar=${dist.dir}/${product.shortname}-${product.Version}-javadoc.jar +oracle.javadoc.link=https://docs.oracle.com/en/java/javase/23/docs/api/index.html jjdoc.vrml.dir=${src.java.dir}/org/web3d/parser/vrml97/doc-files jjdoc.x3d.dir=${src.java.dir}/org/web3d/parser/x3d/doc-files lib.dir=lib diff --git a/build.xml b/build.xml index 53b820ad205b25452ba07964618dcb37b48daadf..92edbd269101ec9b714269aec98f8596b94feca9 100644 --- a/build.xml +++ b/build.xml @@ -34,7 +34,7 @@ POSSIBILITY OF SUCH DAMAGE. <!-- Seems to render in Mozilla Firefox the best. Broken in IE7 --> <?xml-stylesheet type="text/xsl" href="./ant2html.xsl"?> -<project name="Xj3D NPS" default="run" basedir="."> +<project name="Xj3D NPS" default="all" basedir="."> <description>Builds, tests, and runs the project NPS Xj3D 2.3</description> <property file="nbproject/private/private.properties"/> @@ -349,7 +349,7 @@ POSSIBILITY OF SUCH DAMAGE. --> <target name="jar.all" - depends="dist,jar,jar.apps,jar.src" + depends="dist" description="Build all Xj3D application jar files"> <echo message="TODO for Xj3D release, push updated jar files to savage.nps.edu"/> </target> @@ -385,13 +385,12 @@ POSSIBILITY OF SUCH DAMAGE. </jar> </target> - <target name="jar.src" - depends="build,compile" - description="Build the Xj3D src distribution jar files"> - + <target name="jar.apps" + depends="build" + description="Build the Xj3D browser and cadfilter application jar files"> - <!-- Jar up core and apps source files for debugging reference --> - <jar destfile="${dist.src.jar}"> + <jar destfile="${browser.jar}" + basedir="${browser.classes.dir}"> <manifest> <attribute name="Specification-Version" value="${product.Version}"/> @@ -412,13 +411,10 @@ POSSIBILITY OF SUCH DAMAGE. <metainf file="${docs.dir}/GPL.txt"/> <metainf file="${docs.dir}/LGPL.txt"/> <metainf file="${docs.dir}/LICENSE"/> - - <fileset dir="${src.java.dir}"> - <include name="**/*.java"/> - </fileset> </jar> - <jar destfile="${browser.src.jar}"> + <jar destfile="${cadfilter.jar}" + basedir="${cadfilter.classes.dir}"> <manifest> <attribute name="Specification-Version" value="${product.Version}"/> @@ -439,13 +435,40 @@ POSSIBILITY OF SUCH DAMAGE. <metainf file="${docs.dir}/GPL.txt"/> <metainf file="${docs.dir}/LGPL.txt"/> <metainf file="${docs.dir}/LICENSE"/> + </jar> - <fileset dir="${browser.src.java.dir}"> - <include name="**/*.java"/> - </fileset> + <copy file="apps/replica/src/java/xj3d/replica/images/Xj3dRenderCaptureFailed.png" todir="${replica.classes.dir}/xj3d/replica/images" verbose="true" overwrite="true"/> + <jar destfile="${replica.jar}" + basedir="${replica.classes.dir}"> + <manifest> + <attribute name="Specification-Version" + value="${product.Version}"/> + <attribute name="Specification-Vendor" + value="${spec.vendor}"/> + <attribute name="Implementation-Title" + value="${product.Name}"/> + <attribute name="Built-By" + value="${my.name} <${my.email}>"/> + <attribute name="Implementation-Version" + value="${product.Version} built on ${TODAY_US}"/> + <attribute name="Implementation-Vendor" + value="${impl.vendor}"/> + <attribute name="Implementation-Vendor-Id" + value="${impl.vendor-id}"/> + </manifest> + <metainf file="${docs.dir}/BSD.txt"/> + <metainf file="${docs.dir}/GPL.txt"/> + <metainf file="${docs.dir}/LGPL.txt"/> + <metainf file="${docs.dir}/LICENSE"/> </jar> + </target> - <jar destfile="${cadfilter.src.jar}"> + <target name="jar.src" + depends="init" + description="Build the Xj3D src distribution jar files"> + + <!-- Jar up core and apps source files for debugging reference --> + <jar destfile="${dist.src.jar}"> <manifest> <attribute name="Specification-Version" value="${product.Version}"/> @@ -467,12 +490,12 @@ POSSIBILITY OF SUCH DAMAGE. <metainf file="${docs.dir}/LGPL.txt"/> <metainf file="${docs.dir}/LICENSE"/> - <fileset dir="${cadfilter.src.java.dir}"> + <fileset dir="${src.java.dir}"> <include name="**/*.java"/> </fileset> </jar> - <jar destfile="${replica.src.jar}"> + <jar destfile="${browser.src.jar}"> <manifest> <attribute name="Specification-Version" value="${product.Version}"/> @@ -494,19 +517,12 @@ POSSIBILITY OF SUCH DAMAGE. <metainf file="${docs.dir}/LGPL.txt"/> <metainf file="${docs.dir}/LICENSE"/> - <fileset dir="${replica.src.java.dir}"> + <fileset dir="${browser.src.java.dir}"> <include name="**/*.java"/> </fileset> </jar> - </target> - - <target name="jar.apps" - depends="build,compile.apps" - description="Build the Xj3D browser and cadfilter application jar files"> - - <jar destfile="${browser.jar}" - basedir="${browser.classes.dir}"> + <jar destfile="${cadfilter.src.jar}"> <manifest> <attribute name="Specification-Version" value="${product.Version}"/> @@ -527,10 +543,13 @@ POSSIBILITY OF SUCH DAMAGE. <metainf file="${docs.dir}/GPL.txt"/> <metainf file="${docs.dir}/LGPL.txt"/> <metainf file="${docs.dir}/LICENSE"/> + + <fileset dir="${cadfilter.src.java.dir}"> + <include name="**/*.java"/> + </fileset> </jar> - <jar destfile="${cadfilter.jar}" - basedir="${cadfilter.classes.dir}"> + <jar destfile="${replica.src.jar}"> <manifest> <attribute name="Specification-Version" value="${product.Version}"/> @@ -551,11 +570,19 @@ POSSIBILITY OF SUCH DAMAGE. <metainf file="${docs.dir}/GPL.txt"/> <metainf file="${docs.dir}/LGPL.txt"/> <metainf file="${docs.dir}/LICENSE"/> + + <fileset dir="${replica.src.java.dir}"> + <include name="**/*.java"/> + </fileset> </jar> + </target> - <copy file="apps/replica/src/java/xj3d/replica/images/Xj3dRenderCaptureFailed.png" todir="${replica.classes.dir}/xj3d/replica/images" verbose="true" overwrite="true"/> - <jar destfile="${replica.jar}" - basedir="${replica.classes.dir}"> + <target name="jar.javadoc" + depends="javadoc" + description="Build the Xj3D API jar file"> + + <!-- Jar up core and apps source files for debugging reference --> + <jar destfile="${dist.javadoc.jar}"> <manifest> <attribute name="Specification-Version" value="${product.Version}"/> @@ -576,6 +603,8 @@ POSSIBILITY OF SUCH DAMAGE. <metainf file="${docs.dir}/GPL.txt"/> <metainf file="${docs.dir}/LGPL.txt"/> <metainf file="${docs.dir}/LICENSE"/> + + <fileset dir="${dist.javadoc.dir}"/> </jar> </target> @@ -907,33 +936,28 @@ POSSIBILITY OF SUCH DAMAGE. <classpath refid="app.classpath"/> <!-- These excludes will avoid most errors, but will have to be - reviewed from time to time to follow Makefile-opengl javadoc - build order --> + reviewed from time to time --> <!-- bugfix: https://stackoverflow.com/questions/16456786/not-able-to-create-javadoc-using-ant --> <fileset dir="${src.java.dir}" defaultexcludes="yes" excludes="${xj3d.build.excludes}"> - <include name="**/*.java" /> - <exclude name="**/Makefile*"/> + <include name="**/*.java" /> <exclude name="**/task"/> <exclude name="**/*.html"/> </fileset> <fileset dir="${browser.src.java.dir}" defaultexcludes="yes" excludes="${browser.build.excludes}"> - <include name="**/*.java" /> - <exclude name="**/Makefile*"/> + <include name="**/*.java" /> <exclude name="**/package.html"/> <exclude name="**/*.properties"/> <exclude name="**/xj3d/browser/renderer/**"/> </fileset> <fileset dir="${cadfilter.src.java.dir}" defaultexcludes="yes" excludes="${cadfilter.build.excludes}"> - <include name="**/*.java" /> - <exclude name="**/Makefile*"/> + <include name="**/*.java" /> <exclude name="**/package.html"/> </fileset> <fileset dir="${replica.src.java.dir}" defaultexcludes="yes"> - <include name="**/*.java" /> - <exclude name="**/Makefile*"/> + <include name="**/*.java" /> <exclude name="**/package.html"/> </fileset> @@ -1039,7 +1063,7 @@ POSSIBILITY OF SUCH DAMAGE. </target> <target name="dist" - depends="build,jar,jar.apps,pack.3rd.party.jars" + depends="pack.3rd.party.jars,jar,jar.apps,jar.src,jar.javadoc" description="Build then create distribution jars"> <echo message="build dist dependencies complete, starting dist tasks"/> @@ -1073,14 +1097,12 @@ POSSIBILITY OF SUCH DAMAGE. </zip> <delete dir="${marshall.dir}"/> - <antcall target="jar.src"/> - <echo message="Production note: X3D Examples image capture links to jars via property name=xj3d.dir"/> <echo message="Production note: X3D-Edit update requires copying Xj3D jars to module www.web3d.org\x3d/tools/X3dEdit4.0/X3dEditModuleSuite/X3dSourceFilePalette/release/modules/ext"/> </target> - <target name="all" depends="versions,clean,build,javadoc,dist" + <target name="all" depends="versions,clean,dist,javadoc" description="complete clean/build ready for distribution and deployment"> <echo message="build.dist to create a distributable Xj3D complete with documentation"/> <!-- build.dist does not include javadoc in installers, but javadoc has ability to detect additional errors..test, --> diff --git a/jars/README.html b/jars/README.html index 1d59884cf60c75e9a45f13d24c7ca0e9702cfe34..f6be3e050aadc1ab0a7e38217a82454f3bfa9508 100644 --- a/jars/README.html +++ b/jars/README.html @@ -27,32 +27,38 @@ <a href="jhall.jar">jhall.jar</a> </li> <li> - <a href="jogamp-fat.jar">jogamp-fat.jar"</a> + <a href="jogamp-fat.jar">jogamp-fat.jar</a> </li> <li> - <a href="xj3d-2.3-nps.jar">xj3d-2.3-nps.jar</a> + <a href="xj3d-2.3-3rdparty-nps.jar">xj3d-2.3-3rdparty-nps.jar</a> </li> <li> - <a href="xj3d-2.3-3rdparty-nps.jar">xj3d-2.3-3rdparty-nps.jar</a> + <a href="xj3d-2.3-nps-javadoc.jar">xj3d-2.3-nps-javadoc.jar</a> </li> <li> - <a href="xj3d.browser_2.3.0-nps.jar">xj3d.browser_2.3.0-nps.jar</a> + <a href="xj3d-2.3-nps-src.jar">xj3d-2.3-nps-src.jar</a> + </li> + <li> + <a href="xj3d-2.3-nps.jar">xj3d-2.3-nps.jar</a> </li> <li> <a href="xj3d.browser_2.3.0-nps-src.jar">xj3d.browser_2.3.0-nps-src.jar</a> </li> <li> - <a href="xj3d.cadfilter_2.3.0-nps.jar">xj3d.cadfilter_2.3.0-nps.jar</a> + <a href="xj3d.browser_2.3.0-nps.jar">xj3d.browser_2.3.0-nps.jar</a> </li> <li> <a href="xj3d.cadfilter_2.3.0-nps-src.jar">xj3d.cadfilter_2.3.0-nps-src.jar</a> </li> <li> - <a href="xj3d.replica_2.3.0-nps.jar">xj3d.replica_2.3.0-nps.jar</a> + <a href="xj3d.cadfilter_2.3.0-nps.jar">xj3d.cadfilter_2.3.0-nps.jar</a> </li> <li> <a href="xj3d.replica_2.3.0-nps-src.jar">xj3d.replica_2.3.0-nps-src.jar</a> </li> + <li> + <a href="xj3d.replica_2.3.0-nps.jar">xj3d.replica_2.3.0-nps.jar</a> + </li> <li> <a href="license.html">license.html</a> and diff --git a/jars/xj3d-2.3-3rdparty-nps.jar b/jars/xj3d-2.3-3rdparty-nps.jar index 73e0f3e1de9ca7a251ecf4f1c5522cd8eb2d941f..441347c8fbe2a262f2ee7610057b92a84049e670 100644 Binary files a/jars/xj3d-2.3-3rdparty-nps.jar and b/jars/xj3d-2.3-3rdparty-nps.jar differ diff --git a/jars/xj3d-2.3-nps-javadoc.jar b/jars/xj3d-2.3-nps-javadoc.jar new file mode 100644 index 0000000000000000000000000000000000000000..26de3ee94b5e7b6284ff8395c5b375e402198af2 Binary files /dev/null and b/jars/xj3d-2.3-nps-javadoc.jar differ diff --git a/jars/xj3d-2.3-nps-src.jar b/jars/xj3d-2.3-nps-src.jar index c91ffdf4aba038306c07fb7f4a0deb8a13bd85ce..d8bbcdde5ecd32396677ac61482beeb54b0a9fab 100644 Binary files a/jars/xj3d-2.3-nps-src.jar and b/jars/xj3d-2.3-nps-src.jar differ diff --git a/jars/xj3d-2.3-nps.jar b/jars/xj3d-2.3-nps.jar index 1c8bafa4d3346bdd4345a968601068a0605b5b64..df035993941707414225438e77a3e27b681afaf3 100644 Binary files a/jars/xj3d-2.3-nps.jar and b/jars/xj3d-2.3-nps.jar differ diff --git a/jars/xj3d.browser_2.3.0-nps-src.jar b/jars/xj3d.browser_2.3.0-nps-src.jar index c245c3051d170f2ec3eb514b5ad1eaed93e25356..76b5e8977fd507a53d9ca1b8c32355d74e1b366e 100644 Binary files a/jars/xj3d.browser_2.3.0-nps-src.jar and b/jars/xj3d.browser_2.3.0-nps-src.jar differ diff --git a/jars/xj3d.browser_2.3.0-nps.jar b/jars/xj3d.browser_2.3.0-nps.jar index 863fcebb48b6de08426af4d1a7cd6adc8fbe76cb..9b2313df028fab8df4d3160fa78e06183b0b1d05 100644 Binary files a/jars/xj3d.browser_2.3.0-nps.jar and b/jars/xj3d.browser_2.3.0-nps.jar differ diff --git a/jars/xj3d.cadfilter_2.3.0-nps-src.jar b/jars/xj3d.cadfilter_2.3.0-nps-src.jar index 1a071134cecbc92fa6556fa65e7b10e0cafb3bc9..7073e5c16ffdca3631f109b9579e5c20c464e11e 100644 Binary files a/jars/xj3d.cadfilter_2.3.0-nps-src.jar and b/jars/xj3d.cadfilter_2.3.0-nps-src.jar differ diff --git a/jars/xj3d.cadfilter_2.3.0-nps.jar b/jars/xj3d.cadfilter_2.3.0-nps.jar index 3186a94ff248e2ff741204a6b7af0a923fcbc39f..8068f23c8cd03ffa83f4178d109ab15ec8f66eac 100644 Binary files a/jars/xj3d.cadfilter_2.3.0-nps.jar and b/jars/xj3d.cadfilter_2.3.0-nps.jar differ diff --git a/jars/xj3d.replica_2.3.0-nps-src.jar b/jars/xj3d.replica_2.3.0-nps-src.jar index 9a7435308655a186b0d1961e203440c18414a69f..acaa9a4913f909f56510aec2815a86051573ef29 100644 Binary files a/jars/xj3d.replica_2.3.0-nps-src.jar and b/jars/xj3d.replica_2.3.0-nps-src.jar differ diff --git a/jars/xj3d.replica_2.3.0-nps.jar b/jars/xj3d.replica_2.3.0-nps.jar index 4735fe52d0ae27f5a86854a2840ad490b2f3a96d..1ccd0ed3a36c6b3040dec64b876de9542cd57bf0 100644 Binary files a/jars/xj3d.replica_2.3.0-nps.jar and b/jars/xj3d.replica_2.3.0-nps.jar differ diff --git a/src/java/org/web3d/vrml/export/X3DRetainedSAXExporter.java b/src/java/org/web3d/vrml/export/X3DRetainedSAXExporter.java index 430a0ae22391507419f1a388dce1c1b198e011c1..c6262b09095c8a7266abbb1f33cc2f5362430b06 100644 --- a/src/java/org/web3d/vrml/export/X3DRetainedSAXExporter.java +++ b/src/java/org/web3d/vrml/export/X3DRetainedSAXExporter.java @@ -39,8 +39,8 @@ import org.web3d.vrml.renderer.common.nodes.AbstractDynamicFieldNode; import org.web3d.vrml.sav.*; /** - * A retained exporter that issues SAX events. Extensions of this class - * are expected to setup the content handler. This class should contain + * A retained exporter that issues SAX events. Extensions of this class + * are expected to setup the content handler. This class should contain * as much of the XML specific knowledge as possible. * * This implementation will use FastInfoSet's AttributesHolder to @@ -75,7 +75,7 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter protected static final int DELTA_ZLIB_INT_ARRAY_ALGORITHM_ID = 33; /** An empty map to avoid null testing */ - protected Map EMPTY_MAP = new HashMap(); + protected Map EMPTY_MAP; /** The current indent level */ protected int indent = 0; @@ -188,6 +188,7 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter protoDeclSet = new HashSet<>(); traverser = new SceneGraphTraverser(); protoMap = new HashMap<>(); + EMPTY_MAP = new HashMap(); printDocType = false; printDocType = true; @@ -397,8 +398,6 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter protected void encodeFloatArray(float[] fval, int numElements, VRMLFieldDeclaration decl, String qName, AttributesHolder aholder, int ftype) { - int clen; - if (fval != null && fval.length != 0) { String st = createX3DString(decl, fval, numElements); @@ -422,8 +421,6 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter protected void encodeDoubleArray(double[] fval, int numElements, VRMLFieldDeclaration decl, String qName, AttributesHolder aholder, int ftype) { - int clen; - if (fval != null && fval.length != 0) { int span; int len2; @@ -490,6 +487,9 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter Object proto; traverser.setObserver(this); + List<VRMLFieldDeclaration> fields; + Iterator<VRMLFieldDeclaration> itr2; + VRMLFieldDeclaration decl; while(itr.hasNext()) { proto = itr.next(); @@ -499,11 +499,11 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter usedNodes.clear(); } else { printPrototypeDecl((PrototypeDecl)proto); - List<VRMLFieldDeclaration> fields = ((VRMLNodeTemplate)proto).getAllFields(); - Iterator<VRMLFieldDeclaration> itr2 = fields.iterator(); + fields = ((VRMLNodeTemplate)proto).getAllFields(); + itr2 = fields.iterator(); while(itr2.hasNext()) { - VRMLFieldDeclaration decl = itr2.next(); + decl = itr2.next(); if(decl == null) continue; @@ -612,8 +612,9 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter // Add user-specified attributes if (x3dAtts != null) { Iterator<Map.Entry<String,String>> itr = x3dAtts.entrySet().iterator(); + Map.Entry<String,String> entry; while(itr.hasNext()) { - Map.Entry<String,String> entry = itr.next(); + entry = itr.next(); atts.addAttribute(new QualifiedName("", "", entry.getKey()), entry.getValue()); } @@ -640,9 +641,9 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter handler.startElement("","head","head", new AttributesHolder()); printNewLine(); - + AttributesHolder atts; for(int i=0; i < len; i++) { - AttributesHolder atts = new AttributesHolder(); + atts = new AttributesHolder(); atts.addAttribute(new QualifiedName("", "", "name"), comps[i].getName()); atts.addAttribute(new QualifiedName("", "", "level"), @@ -665,9 +666,7 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter */ @Override public void printMetaData(Map<String, String> meta) { - Map.Entry[] entries; - - entries = new Map.Entry[meta.size()]; + Map.Entry[] entries = new Map.Entry[meta.size()]; meta.entrySet().toArray(entries); int len = entries.length; @@ -675,10 +674,11 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter indentUp(); try { + AttributesHolder atts; for(int i=0; i < len; i++) { printIndent(); - AttributesHolder atts = new AttributesHolder(); + atts = new AttributesHolder(); atts.addAttribute(new QualifiedName("", "", "name"), (String)entries[i].getKey()); @@ -770,10 +770,11 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter String as; try { + AttributesHolder atts; for (Map.Entry<String, String> entrie : entries) { name = entrie.getValue(); as = entrie.getKey(); - AttributesHolder atts = new AttributesHolder(); + atts = new AttributesHolder(); atts.addAttribute(new QualifiedName("", "", "localDEF"), name); if (as != null && !name.equals(as)) { @@ -806,12 +807,13 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter Object obj; String[] defas; ImportNodeProxy proxy; + AttributesHolder atts; try { for (Map.Entry entrie : entries) { exported = (String) entrie.getKey(); obj = entrie.getValue(); - AttributesHolder atts = new AttributesHolder(); + atts = new AttributesHolder(); if (obj instanceof String[]) { defas = (String[]) entrie.getValue(); atts.addAttribute(new QualifiedName("", "","inlineDEF"), @@ -981,14 +983,15 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter VRMLFieldData value; boolean printField; boolean printFieldDecl = false; - boolean printValue = false; + boolean printValue; int accessType; boolean hasChildren = false; int fieldMetadata = parent.getFieldIndex("metadata"); printField = isProtoInstance; - String fieldName; + VRMLFieldDeclaration decl; + AttributesHolder atts; for(int i = 0; i < fields.length; i++) { if (parent instanceof AbstractDynamicFieldNode) { @@ -1044,7 +1047,7 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter } if (printField) { - VRMLFieldDeclaration decl = parent.getFieldDeclaration(fields[i]); + decl = parent.getFieldDeclaration(fields[i]); printIndent(); try { @@ -1066,8 +1069,8 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter } else { printIndent(); - AttributesHolder atts = new AttributesHolder(); - atts.addAttribute(new QualifiedName("", "", "name"), + atts = new AttributesHolder(); + atts.addAttribute(new QualifiedName("", "", "name"), decl.getName()); handler.startElement("","fieldValue","fieldValue", atts); @@ -1085,8 +1088,7 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter } } else { // Check for containerfield - VRMLFieldDeclaration decl = - parent.getFieldDeclaration(fields[i]); + decl = parent.getFieldDeclaration(fields[i]); fieldName = decl.getName(); } @@ -1139,7 +1141,7 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter continue; if (printField) { - VRMLFieldDeclaration decl = parent.getFieldDeclaration(fields[i]); + decl = parent.getFieldDeclaration(fields[i]); printIndent(); try { @@ -1160,7 +1162,7 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter continue; } } else { - AttributesHolder atts = new AttributesHolder(); + atts = new AttributesHolder(); atts.addAttribute(new QualifiedName("", "", "name"), decl.getName()); @@ -1172,7 +1174,7 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter } } else { // Check for containerfield - VRMLFieldDeclaration decl = parent.getFieldDeclaration(fields[i]); + decl = parent.getFieldDeclaration(fields[i]); fieldName = decl.getName(); } @@ -1223,20 +1225,22 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter int field_url = node.getFieldIndex("url"); int field_metadata = node.getFieldIndex("metadata"); + VRMLFieldDeclaration decl; + VRMLFieldData data; + StringBuilder buf = new StringBuilder("Can't get field: "); + int idx; // Handle all attributes first while(itr.hasNext()) { - VRMLFieldDeclaration decl = itr.next(); + decl = itr.next(); if(decl == null) continue; - VRMLFieldData data; - int idx = node.getFieldIndex(decl.getName()); + idx = node.getFieldIndex(decl.getName()); try { data = node.getFieldValue(idx); } catch(InvalidFieldException e) { - StringBuilder buf = new StringBuilder("Can't get field: "); buf.append(decl.getName()); buf.append(" for: "); buf.append(node); @@ -1246,6 +1250,7 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter buf.append(field_url); errorReporter.errorReport(buf.toString(), null); + buf.setLength(0); // reset continue; } @@ -1279,18 +1284,16 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter // Handle non-node <field> values while(itr.hasNext()) { - VRMLFieldDeclaration decl = itr.next(); + decl = itr.next(); if(decl == null) continue; - VRMLFieldData data; - int idx = node.getFieldIndex(decl.getName()); + idx = node.getFieldIndex(decl.getName()); try { data = node.getFieldValue(idx); } catch(InvalidFieldException e) { - StringBuilder buf = new StringBuilder("Can't get field: "); buf.append(decl.getName()); buf.append(" for: "); buf.append(node); @@ -1300,6 +1303,7 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter buf.append(field_url); errorReporter.errorReport(buf.toString(), null); + buf.setLength(0); // reset continue; } @@ -1463,9 +1467,11 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter String fieldName; // Find IS relationships to pre-print + VRMLFieldDeclaration decl; + VRMLFieldDeclaration defaultDecl; + String is; while(itr.hasNext()) { - VRMLFieldDeclaration decl = itr.next(); - VRMLFieldDeclaration defaultDecl = null; + decl = itr.next(); if(decl == null) continue; @@ -1474,7 +1480,7 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter idx = node.getFieldIndex(fieldName); - String is = findIS(node, idx, isMap); + is = findIS(node, idx, isMap); if (is != null) { isList.add(new String[] {decl.getName(), is}); @@ -1490,9 +1496,13 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter // currentCompressor = new TestCompressor(); } + VRMLFieldData data; + VRMLFieldData fdata; + String[] url; + int pos, midx, access; + String emd; while(itr.hasNext()) { - VRMLFieldDeclaration decl = itr.next(); - VRMLFieldDeclaration defaultDecl = null; + decl = itr.next(); if(decl == null) continue; @@ -1505,7 +1515,7 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter defaultDecl = defaultNode.getFieldDeclaration(didx); } - String is = findIS(node, idx, isMap); + is = findIS(node, idx, isMap); if (is != null) { continue; @@ -1521,14 +1531,12 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter continue; } - int access = decl.getAccessType(); + access = decl.getAccessType(); if (access == FieldConstants.EVENTIN || access == FieldConstants.EVENTOUT) continue; - VRMLFieldData data; try { data = node.getFieldValue(idx); - } catch(InvalidFieldException e) { // Don't print exceptions here. There is a difference in spec setup // between the default node and real one. Not sure how best to deal with this. @@ -1562,8 +1570,8 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter continue; } - if (removeWorldUrl && (urlFields.contains(idx))) { - String[] url = data.stringArrayValues; + if (removeWorldUrl && urlFields.contains(idx)) { + url = data.stringArrayValues; if (url != null && worldUrl != null) { for(int j=0; j < url.length; j++) { @@ -1578,11 +1586,11 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter if (upgradeInline) { if (decl.getName().equals("url")) { - String[] url = data.stringArrayValues; + url = data.stringArrayValues; if (url != null) { for(int j=0; j < url.length; j++) { - int pos = url[j].indexOf(".wrl"); + pos = url[j].indexOf(".wrl"); if (pos >= 0) { url[j] = url[j].substring(0, pos); url[j] = url[j] + encodingTo; @@ -1601,13 +1609,11 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter atts.addAttribute(new QualifiedName("", "", "encoder"), "1"); - int[] data = currentCompressor.compress(node); - atts.addAttributeWithAlgorithmData( new QualifiedName("", "", "", "data"), null, EncodingAlgorithmIndexes.INT, - data); + currentCompressor.compress(node)); // Print data } if (hasChildren && !isProtoInstance) { @@ -1622,7 +1628,7 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter } else { if (!isProtoInstance) { try { - if (isList.size() > 0) { + if (!isList.isEmpty()) { handler.startElement("",elementName,elementName, atts); printNewLine(); @@ -1657,8 +1663,8 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter indentUp(); - int midx = node.getFieldIndex("metadata"); - VRMLFieldData fdata = node.getFieldValue(midx); + midx = node.getFieldIndex("metadata"); + fdata = node.getFieldValue(midx); // Print original metadata if (fdata.nodeValue != null) { @@ -1682,9 +1688,6 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter handler.endElement("","MetadataInteger","MetadataInteger"); printNewLine(); - // Print data - int[] data = currentCompressor.compress(node); - printIndent(); atts = new AttributesHolder(); @@ -1695,14 +1698,14 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter new QualifiedName("", "", "", "value"), null, EncodingAlgorithmIndexes.INT, - data); + currentCompressor.compress(node)); // Print data handler.startElement("","MetadataInteger","MetadataInteger", atts); handler.endElement("","MetadataInteger","MetadataInteger"); printNewLine(); - String emd = currentCompressor.getEncoderMetadata(); + emd = currentCompressor.getEncoderMetadata(); if (emd != null) { // TODO: Need to fix this @@ -1776,15 +1779,22 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter Iterator<VRMLFieldDeclaration> itr = fields.iterator(); List<String[]> isList = new ArrayList<>(); + VRMLFieldDeclaration decl; + VRMLFieldData data = null; + int idx, field_url, len, len2; + String is; + String[] urls; + StringBuilder buf; + boolean foundProtocol = false; while(itr.hasNext()) { - VRMLFieldDeclaration decl = itr.next(); + decl = itr.next(); if(decl == null) continue; - int idx = node.getFieldIndex(decl.getName()); + idx = node.getFieldIndex(decl.getName()); - String is = findIS(node, idx, isMap); + is = findIS(node, idx, isMap); if (is == null) { continue; @@ -1799,16 +1809,15 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter indentUp(); - int field_url = node.getFieldIndex("url"); + field_url = node.getFieldIndex("url"); - VRMLFieldDeclaration decl = node.getFieldDeclaration(field_url); + decl = node.getFieldDeclaration(field_url); - VRMLFieldData data = null; try { data = node.getFieldValue(field_url); } catch(InvalidFieldException e) { - StringBuilder buf = new StringBuilder("Can't get field: "); + buf = new StringBuilder("Can't get field: "); buf.append(decl.getName()); buf.append(" for: "); buf.append(node); @@ -1818,15 +1827,13 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter buf.append(field_url); errorReporter.errorReport(buf.toString(), null); + buf.setLength(0); // reset } if (upgrading) { - String[] urls = new String[data.stringArrayValues.length]; + urls = new String[data.stringArrayValues.length]; - boolean foundProtocol = false; - - int len = urls.length; - int len2; + len = urls.length; for(int i=0; i < len; i++) { urls[i] = data.stringArrayValues[i]; @@ -1983,12 +1990,14 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter int idx; boolean valReq; + VRMLFieldDeclaration decl; + VRMLFieldData val = null; + int access; while(itr.hasNext()) { - VRMLFieldDeclaration decl = itr.next(); + decl = itr.next(); idx = proto.getFieldIndex(decl.getName()); - VRMLFieldData val = null; - int access = decl.getAccessType(); + access = decl.getAccessType(); if (access != FieldConstants.EVENTIN && access != FieldConstants.EVENTOUT) { val = proto.getFieldValue(idx); @@ -2093,22 +2102,24 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter int len = url.length; StringBuilder urlAtt = new StringBuilder(); + int pos, locpos; + String original, target; for(int i=0; i < len; i++) { urlAtt.append("\""); if (upgrading) { - int pos = url[i].indexOf(".wrl"); - int locpos = url[i].indexOf("#"); + pos = url[i].indexOf(".wrl"); + locpos = url[i].indexOf("#"); if (pos >= 0) { - String original = url[i]; + original = url[i]; url[i] = url[i].substring(0, pos); url[i] = url[i] + encodingTo; if (locpos > 0) { - String target = original.substring(locpos); + target = original.substring(locpos); url[i] = url[i] + target; } } @@ -2134,10 +2145,10 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter Iterator<VRMLFieldDeclaration> itr = fields.iterator(); int idx; + VRMLFieldDeclaration decl; while(itr.hasNext()) { - VRMLFieldDeclaration decl = itr.next(); + decl = itr.next(); idx = proto.getFieldIndex(decl.getName()); - VRMLFieldData val = null; // Ignore metadata for EP if (decl.getName().equals("metadata")) @@ -2365,8 +2376,6 @@ public abstract class X3DRetainedSAXExporter extends BaseRetainedExporter // Print the field value - VRMLNode n; - if (val != null) { switch(val.dataType) { case VRMLFieldData.NODE_DATA: diff --git a/src/java/org/web3d/vrml/nodes/VRMLWorldRootChildNodeType.java b/src/java/org/web3d/vrml/nodes/VRMLWorldRootChildNodeType.java index 9a5e5ec24bebdbf1d6da5c193f3253ab45eac6c2..1e84f9e97d4178c8766ae717b33f918394184425 100644 --- a/src/java/org/web3d/vrml/nodes/VRMLWorldRootChildNodeType.java +++ b/src/java/org/web3d/vrml/nodes/VRMLWorldRootChildNodeType.java @@ -18,8 +18,8 @@ package org.web3d.vrml.nodes; // None /** - * An abstract representation of the a node that can be used directly at the - * root of the scene graph. + * An abstract representation of a node that can be used directly at the root of + * the scene graph. * <p> * * Only X3DChildNode and LayerSet nodes can appear at the root level of a diff --git a/src/java/org/web3d/vrml/renderer/CRProtoCreator.java b/src/java/org/web3d/vrml/renderer/CRProtoCreator.java index bc14a8731d657068661c17e92abf61055ef8b0d8..aac5a861c8c2de15bf0e768e2fdd36ccc8ca3c4d 100644 --- a/src/java/org/web3d/vrml/renderer/CRProtoCreator.java +++ b/src/java/org/web3d/vrml/renderer/CRProtoCreator.java @@ -351,13 +351,13 @@ public abstract class CRProtoCreator */ private void processDEFs(Map<String, VRMLNode> defMappings) { Set<Entry<String, VRMLNode>> def_set = defMappings.entrySet(); - Iterator<Entry<String, VRMLNode>> itr = def_set.iterator(); - - while(itr.hasNext()) { - Map.Entry<String, VRMLNode> e = itr.next(); - String name = e.getKey(); - VRMLNodeType src_node = (VRMLNodeType) e.getValue(); - VRMLNodeType dest_node = (VRMLNodeType) nodeMap.get(src_node); + String name; + VRMLNodeType src_node; + VRMLNodeType dest_node; + for (Entry<String, VRMLNode> e : def_set) { + name = e.getKey(); + src_node = (VRMLNodeType) e.getValue(); + dest_node = (VRMLNodeType) nodeMap.get(src_node); scene.addDEFNode(name, dest_node); } @@ -379,21 +379,27 @@ public abstract class CRProtoCreator Map<String, VRMLNode> def_map = scene.getDEFNodes(); Map<String, Map<String, VRMLNode>> export_map = new HashMap<>(); + Map.Entry<String, VRMLNode> e; + ImportNodeProxy value; + String key, inline; + ImportNodeProxy proxy; + Map<String, VRMLNode> exports; + VRMLInlineNodeType i_node; while(itr.hasNext()) { - Map.Entry<String, VRMLNode> e = itr.next(); + e = itr.next(); try { - ImportNodeProxy value = (ImportNodeProxy)e.getValue(); - String key = e.getKey(); + value = (ImportNodeProxy)e.getValue(); + key = e.getKey(); - ImportNodeProxy proxy = (ImportNodeProxy)value.clone(); + proxy = (ImportNodeProxy)value.clone(); - String inline = value.getInlineDEFName(); - Map<String, VRMLNode> exports = export_map.get(inline); + inline = value.getInlineDEFName(); + exports = export_map.get(inline); if(exports == null) { exports = new HashMap<>(); export_map.put(inline, exports); - VRMLInlineNodeType i_node = (VRMLInlineNodeType)def_map.get(inline); + i_node = (VRMLInlineNodeType)def_map.get(inline); i_node.setImportNodes(exports); } diff --git a/src/java/org/web3d/vrml/renderer/DefaultNodeFactory.java b/src/java/org/web3d/vrml/renderer/DefaultNodeFactory.java index c55149ae5f8ebd2a4c2dacc08725254375f34c0b..80f19068bbc8fed06c7878e29ad74924feffef47 100644 --- a/src/java/org/web3d/vrml/renderer/DefaultNodeFactory.java +++ b/src/java/org/web3d/vrml/renderer/DefaultNodeFactory.java @@ -107,7 +107,7 @@ public class DefaultNodeFactory private static final int INC_SIZE = 4; /** The class listing for the constructor for clone copying */ - private static final Class<?>[] NODE_CLASS = { VRMLNodeType.class }; + private static final Class<?> NODE_CLASS = VRMLNodeType.class; /** Message if the spec version number for VRML is not 2.0 */ private static final String INVALID_VRML_SPEC_VERSION = @@ -338,7 +338,7 @@ public class DefaultNodeFactory * Set specification version * @param major 2 (VRML97), 3, or 4 * @param minor 0, 1, 2, 3 - * @throws UnsupportedSpecVersionException + * @throws UnsupportedSpecVersionException */ @Override public void setSpecVersion(int major, int minor) throws UnsupportedSpecVersionException diff --git a/src/java/org/web3d/vrml/renderer/ProtoCopier.java b/src/java/org/web3d/vrml/renderer/ProtoCopier.java index 932b1944cfc154192141aee4ea828ed2550eacc8..0969ab5ecabad86005edd3da398b464a04dcf5cc 100644 --- a/src/java/org/web3d/vrml/renderer/ProtoCopier.java +++ b/src/java/org/web3d/vrml/renderer/ProtoCopier.java @@ -146,10 +146,10 @@ public class ProtoCopier implements SceneGraphTraversalSimpleObserver { if(scn == null) throw new NullPointerException("No scene supplied"); - scene = scn; - protoInstance = src; - majorVersion = major; - minorVersion = minor; + this.scene = scn; + this.protoInstance = src; + this.majorVersion = major; + this.minorVersion = minor; this.nodeMap = nodeMap; this.staticNodes = staticNodes; } @@ -210,17 +210,19 @@ public class ProtoCopier implements SceneGraphTraversalSimpleObserver { protoInstance.addBodyChild(out_kid); } else { VRMLNodeType out_parent = (VRMLNodeType)nodeMap.get(parent); - VRMLFieldDeclaration decl = parent.getFieldDeclaration(field); + if (out_parent != null) { + VRMLFieldDeclaration decl = parent.getFieldDeclaration(field); - int idx = out_parent.getFieldIndex(decl.getName()); + int idx = out_parent.getFieldIndex(decl.getName()); - try { - out_parent.setValue(idx, out_kid); - } catch(FieldException ife) { - errorReporter.warningReport( - "ProtoCopier error setting copied node! Parent:" + - parent.getClass() + " child: " + child.getClass() + - " field " + field, ife); + try { + out_parent.setValue(idx, out_kid); + } catch (FieldException ife) { + errorReporter.warningReport( + "ProtoCopier error setting copied node! Parent:" + + parent.getClass() + " child: " + child.getClass() + + " field " + field, ife); + } } } } @@ -322,7 +324,11 @@ public class ProtoCopier implements SceneGraphTraversalSimpleObserver { break; case TypeConstants.ScriptNodeType: -System.out.println("ProtoCopier can't handle script fields containing protos. Must fix"); + System.err.println("ProtoCopier can't handle script fields containing protos. Must fix"); + break; + + default: + break; } } } diff --git a/src/java/org/web3d/vrml/renderer/common/nodes/shape/BaseShape.java b/src/java/org/web3d/vrml/renderer/common/nodes/shape/BaseShape.java index 2745c34c339a6bd237b3fc61bf1bebf7903df943..4155c083bf9aa912718dc2d25c2c0c16bcc6bdad 100644 --- a/src/java/org/web3d/vrml/renderer/common/nodes/shape/BaseShape.java +++ b/src/java/org/web3d/vrml/renderer/common/nodes/shape/BaseShape.java @@ -49,13 +49,13 @@ public abstract class BaseShape extends AbstractNode /** Index for the bboxCenter field */ private static final int FIELD_BBOX_CENTER = LAST_NODE_INDEX + 4; - + /** Index for the bboxDisplay field */ private static final int FIELD_BBOX_DISPLAY = LAST_NODE_INDEX + 5; - + /** Index for the visible field */ private static final int FIELD_VISIBLE = LAST_NODE_INDEX + 6; - + /** Index for the castShadow field */ private static final int FIELD_CASTSHADOW = LAST_NODE_INDEX + 7; @@ -119,13 +119,13 @@ public abstract class BaseShape extends AbstractNode /** SFVec3f bboxSize NULL */ protected float[] vfBboxSize; - + /** SFBool bboxDisplay false */ protected boolean vfBboxDisplay; - + /** SFBool visible true */ protected boolean vfVisible; - + /** SFBool castShadow true */ protected boolean vfCastShadow; @@ -196,7 +196,7 @@ public abstract class BaseShape extends AbstractNode fieldMap.put("bboxDisplay", FIELD_BBOX_DISPLAY); fieldMap.put("visible", FIELD_VISIBLE); fieldMap.put("castShadow", FIELD_CASTSHADOW); - + forceLighting = PropertyTools.fetchSystemProperty(FORCE_LIGHTING_PROP, DEFAULT_FORCE_LIGHTING); } @@ -224,7 +224,7 @@ public abstract class BaseShape extends AbstractNode * @param node The node to copy * @throws IllegalArgumentException Incorrect node type */ - protected BaseShape(BaseShape node) { + protected BaseShape(VRMLNodeType node) { this(); // invoke default constructor checkNodeType(node); @@ -240,12 +240,12 @@ public abstract class BaseShape extends AbstractNode vfBboxSize[0] = field[0]; vfBboxSize[1] = field[1]; vfBboxSize[2] = field[2]; - + boolean b = ((VRMLBoundedNodeType)node).getBboxDisplay(); vfBboxDisplay = b; b = ((VRMLBoundedNodeType)node).getVisible(); vfVisible = b; - b = node.getCastShadow(); + b = ((BaseShape)node).getCastShadow(); vfCastShadow = b; } @@ -417,17 +417,17 @@ public abstract class BaseShape extends AbstractNode public float[] getBboxSize() { return vfBboxSize; } - + @Override public boolean getBboxDisplay() { return vfBboxDisplay; } - + @Override public boolean getVisible() { return vfVisible; } - + public boolean getCastShadow() { return vfCastShadow; } @@ -488,7 +488,7 @@ public abstract class BaseShape extends AbstractNode //---------------------------------------------------------- // Methods defined by LocalColorsListener //---------------------------------------------------------- - + /** * The localColors state has change. * @@ -628,21 +628,21 @@ public abstract class BaseShape extends AbstractNode fieldData.dataType = VRMLFieldData.FLOAT_ARRAY_DATA; fieldData.numElements = 1; break; - + case FIELD_BBOX_DISPLAY: fieldData.clear(); fieldData.booleanValue = vfBboxDisplay; fieldData.dataType = VRMLFieldData.BOOLEAN_DATA; fieldData.numElements = 1; break; - + case FIELD_VISIBLE: fieldData.clear(); fieldData.booleanValue = vfVisible; fieldData.dataType = VRMLFieldData.BOOLEAN_DATA; fieldData.numElements = 1; break; - + case FIELD_CASTSHADOW: fieldData.clear(); fieldData.booleanValue = vfCastShadow; @@ -703,7 +703,7 @@ public abstract class BaseShape extends AbstractNode ifve.getMessage()); } } - + @Override public void setValue(int index, boolean value) { switch(index) @@ -711,15 +711,15 @@ public abstract class BaseShape extends AbstractNode case FIELD_BBOX_DISPLAY: setBboxDisplay(value); break; - + case FIELD_VISIBLE: setVisible(value); break; - + case FIELD_CASTSHADOW: setCastShadow(value); break; - + default: super.setValue(index, value); } @@ -828,30 +828,30 @@ public abstract class BaseShape extends AbstractNode vfBboxSize[1] = newBboxSize[1]; vfBboxSize[2] = newBboxSize[2]; } - - /** Set the bounding box display for this node. Only used by the field + + /** Set the bounding box display for this node. Only used by the field * parser - * + * * @param val the display value to set */ @Override public void setBboxDisplay(boolean val) { vfBboxDisplay = val; } - - /** Set visible field for this node. Only used by the field + + /** Set visible field for this node. Only used by the field * parser - * + * * @param val the display value to set */ @Override public void setVisible(boolean val) { vfVisible = val; } - - /** Set castShadow field for this node. Only used by the field + + /** Set castShadow field for this node. Only used by the field * parser - * + * * @param val the display value to set */ public void setCastShadow(boolean val) { diff --git a/src/java/org/web3d/vrml/renderer/common/nodes/texture/BaseImageTexture.java b/src/java/org/web3d/vrml/renderer/common/nodes/texture/BaseImageTexture.java index 9b0b1ff1105143e7a2b56deb928f566f4883db0a..31e23294c6c740926c87a946b87b3ddb21e42dfa 100644 --- a/src/java/org/web3d/vrml/renderer/common/nodes/texture/BaseImageTexture.java +++ b/src/java/org/web3d/vrml/renderer/common/nodes/texture/BaseImageTexture.java @@ -26,7 +26,9 @@ import org.web3d.vrml.nodes.VRMLSingleExternalNodeType; import org.web3d.vrml.nodes.VRMLFieldData; import org.web3d.vrml.nodes.VRMLUrlListener; import org.web3d.vrml.nodes.VRMLContentStateListener; + import org.web3d.vrml.renderer.common.nodes.BaseTexture2DNode; + import org.web3d.vrml.util.URLChecker; /** @@ -129,17 +131,14 @@ public class BaseImageTexture extends BaseTexture2DNode new VRMLFieldDeclaration(FieldConstants.FIELD, "SFNode", "textureProperties"); - fieldDecl[FIELD_AUTOREFRESH] = new VRMLFieldDeclaration(FieldConstants.FIELD, "SFTime", "autoRefresh"); - fieldDecl[FIELD_AUTOREFRESHTIMELIMIT] = new VRMLFieldDeclaration(FieldConstants.FIELD, "SFTime", "autoRefreshTimeLimit"); - fieldDecl[FIELD_LOAD] = new VRMLFieldDeclaration(FieldConstants.FIELD, "SFBool", @@ -159,7 +158,7 @@ public class BaseImageTexture extends BaseTexture2DNode fieldMap.put("repeatS", FIELD_REPEATS); fieldMap.put("repeatT", FIELD_REPEATT); fieldMap.put("textureProperties", FIELD_TEXTURE_PROPERTIES); - + fieldMap.put("autoRefresh",FIELD_AUTOREFRESH); fieldMap.put("autoRefreshTimeLimit",FIELD_AUTOREFRESHTIMELIMIT); fieldMap.put("load",FIELD_LOAD); @@ -219,7 +218,7 @@ public class BaseImageTexture extends BaseTexture2DNode index = node.getFieldIndex("load"); field = node.getFieldValue(index); vfLoad = field.booleanValue; - } + } catch(VRMLException ve) { throw new IllegalArgumentException(ve.getMessage()); } @@ -292,7 +291,7 @@ public class BaseImageTexture extends BaseTexture2DNode fireFieldChanged(FIELD_LOAD); } } - + /** * Get a string for caching this object. Null means do not cache this * texture. @@ -365,7 +364,7 @@ public class BaseImageTexture extends BaseTexture2DNode public void setWorldUrl(String url) { if((url == null) || (url.isEmpty())) return; - + worldURL = url; } @@ -417,7 +416,7 @@ public class BaseImageTexture extends BaseTexture2DNode return vfURL; } - + //---------------------------------------------------------- // Methods overriding BaseTexture2DNode abstract class. //---------------------------------------------------------- @@ -634,17 +633,28 @@ public class BaseImageTexture extends BaseTexture2DNode @Override public VRMLFieldData getFieldValue(int index) throws InvalidFieldException { VRMLFieldData fieldData = fieldLocalData.get(); - + fieldData.clear(); switch(index) { case FIELD_URL: - fieldData.clear(); fieldData.stringArrayValues = vfURL; fieldData.dataType = VRMLFieldData.STRING_ARRAY_DATA; fieldData.numElements = vfURL.length; break; + case FIELD_AUTOREFRESH: + fieldData.doubleValue = vfAutoRefresh; + fieldData.dataType = VRMLFieldData.DOUBLE_DATA; + break; + case FIELD_AUTOREFRESHTIMELIMIT: + fieldData.doubleValue = vfAutoRefreshTimeLimit; + fieldData.dataType = VRMLFieldData.DOUBLE_DATA; + break; + case FIELD_LOAD: + fieldData.booleanValue = vfLoad; + fieldData.dataType = VRMLFieldData.BOOLEAN_DATA; + break; default: - return(super.getFieldValue(index)); + return super.getFieldValue(index); } return fieldData; @@ -723,7 +733,7 @@ public class BaseImageTexture extends BaseTexture2DNode public void setValue(int index, double value) throws InvalidFieldException { - switch(index) + switch(index) { case FIELD_AUTOREFRESH: setAutoRefresh(value); diff --git a/src/java/org/web3d/vrml/renderer/ogl/OGLExternPrototypeDecl.java b/src/java/org/web3d/vrml/renderer/ogl/OGLExternPrototypeDecl.java index 19b723023285a0350d6858f403cb79c128be26a6..5c325aa8e9484c9044c200b165d6f355fdf4a490 100644 --- a/src/java/org/web3d/vrml/renderer/ogl/OGLExternPrototypeDecl.java +++ b/src/java/org/web3d/vrml/renderer/ogl/OGLExternPrototypeDecl.java @@ -97,8 +97,7 @@ public class OGLExternPrototypeDecl extends CRExternPrototypeDecl { "No matching PROTO instances in " + scene.getLoadedURI() + " to match this EXTERNPROTO " + getVRMLNodeName()); - VRMLWorldRootNodeType root = - (VRMLWorldRootNodeType)scene.getRootNode(); + VRMLWorldRootNodeType root = (VRMLWorldRootNodeType)scene.getRootNode(); setProtoDetails(proto_def); OGLProtoCreator creator = diff --git a/src/java/org/web3d/vrml/renderer/ogl/nodes/shape/OGLShape.java b/src/java/org/web3d/vrml/renderer/ogl/nodes/shape/OGLShape.java index e04de74cc212159bd406bf2d66909c159f684ab8..68d6ce39258ff0d8057135affff82739830395ae 100644 --- a/src/java/org/web3d/vrml/renderer/ogl/nodes/shape/OGLShape.java +++ b/src/java/org/web3d/vrml/renderer/ogl/nodes/shape/OGLShape.java @@ -76,6 +76,7 @@ public class OGLShape extends BaseShape * Construct a new default shape node implementation. */ public OGLShape() { + super(); checkMaterialListener = false; shareCount = 0; } @@ -88,7 +89,7 @@ public class OGLShape extends BaseShape * @param node The node to copy * @throws IllegalArgumentException Incorrect node type */ - public OGLShape(BaseShape node) { + public OGLShape(VRMLNodeType node) { super(node); checkMaterialListener = false; } diff --git a/src/java/org/xj3d/core/loading/ContentLoader.java b/src/java/org/xj3d/core/loading/ContentLoader.java index 0f1c99341a7d0e03f8ddc9f9a434d4acdb271384..54a8136e88e9f46291ef868e7d00c41c4dce119b 100644 --- a/src/java/org/xj3d/core/loading/ContentLoader.java +++ b/src/java/org/xj3d/core/loading/ContentLoader.java @@ -39,19 +39,19 @@ class ContentLoader implements Runnable /** Message for an unexpected exception message */ private static final String UNEXPECTED_EXCEPTION_MSG = "[ContentLoader] unexpected Xj3D exception during model loading"; - - private static final String Xj3D_ISSUE_LIST = + + private static final String XJ3D_ISSUE_LIST = "New Xj3D issue needed to improve the open source, please see\n" + " https://gitlab.nps.edu/Savage/xj3d/issues"; - + /** The threading running this loader */ private Thread thread; /** The list of data we are fetching from */ - private ContentLoadQueue pendingContentLoadQueue; + private final ContentLoadQueue pendingContentLoadQueue; /** The map of nodes we are currently loading to their loader */ - private Map<String[], LoadRequest> inProgressLoadRequestMap; + private final Map<String[], LoadRequest> inProgressLoadRequestMap; /** Flag indicating that the current load should be terminated */ private boolean terminateCurrent; @@ -117,19 +117,19 @@ class ContentLoader implements Runnable // Register now that we are processing this object inProgressLoadRequestMap.put(currentLoadRequest.url, currentLoadRequest); - + currentLoadRequest.loadRequestHandler.processLoadRequest(errorReporter, currentLoadRequest.url, currentLoadRequest.loadDetailsList); // Register now that we finished processing this object inProgressLoadRequestMap.remove(currentLoadRequest.url); - } - catch (Exception e) + } + catch (Exception e) { // Any other exception // System.out.println ("ContentLoader exception:"); // debug errorReporter.errorReport (UNEXPECTED_EXCEPTION_MSG, e); - errorReporter.messageReport(Xj3D_ISSUE_LIST); + errorReporter.messageReport(XJ3D_ISSUE_LIST); // e.printStackTrace(System.out); // debug inProgressLoadRequestMap.remove(currentLoadRequest.url); continue; diff --git a/src/java/org/xj3d/core/loading/LoaderThreadPool.java b/src/java/org/xj3d/core/loading/LoaderThreadPool.java index 73a80b610e7291d08287fa8e20c9df796e92e4c5..5ec826e74797e3dc2cae4f6faa9499ab4fc3c1ed 100644 --- a/src/java/org/xj3d/core/loading/LoaderThreadPool.java +++ b/src/java/org/xj3d/core/loading/LoaderThreadPool.java @@ -86,9 +86,9 @@ public class LoaderThreadPool { // fetch the system property defining the values Integer prop = AccessController.doPrivileged((PrivilegedAction<Integer>) () -> { int num_processors = Runtime.getRuntime().availableProcessors(); - + DEFAULT_THREAD_COUNT = (num_processors == 1) ? 1 : (num_processors - 1); - + // privileged code goes here, for example: return Integer.getInteger(THREAD_COUNT_PROP, DEFAULT_THREAD_COUNT); }); @@ -99,7 +99,7 @@ public class LoaderThreadPool { if (size != DEFAULT_THREAD_COUNT) System.out.println(THREAD_COUNT_PROP + " set to: " + size); - + loaders = new ContentLoader[size]; for(int i = size; --i >= 0;) @@ -226,13 +226,13 @@ public class LoaderThreadPool { * Ensure all threads are running. */ public void restartThreads() { - + // TODO: Deprecated in JDK16. How to compensate? if (threadGroup.isDestroyed()) { threadGroup = null; threadPool = new LoaderThreadPool(); } - int size = loaders.length; +// int size = loaders.length; for(ContentLoader loader : loaders) { if(!loader.isAlive()) loader = new ContentLoader(threadGroup, pending, inProgress);