<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://jogamp.org/bugzilla/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.2"
          urlbase="https://jogamp.org/bugzilla/"
          
          maintainer="sgothel@jausoft.com"
>

    <bug>
          <bug_id>460</bug_id>
          
          <creation_ts>2011-01-18 21:49:25 +0100</creation_ts>
          <short_desc>NPE using the GLCanvas.getFactory() method with minimal setup.</short_desc>
          <delta_ts>2011-03-21 07:41:40 +0100</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>3</classification_id>
          <classification>JogAmp</classification>
          <product>Jogl</product>
          <component>opengl</component>
          <version>2</version>
          <rep_platform>pc_x86_32</rep_platform>
          <op_sys>linux</op_sys>
          <bug_status>VERIFIED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>---</priority>
          <bug_severity>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="François Coupal">fcoupal</reporter>
          <assigned_to name="Sven Gothel">sgothel</assigned_to>
          
          
          <cf_type>---</cf_type>
          <cf_scm_refs>2cbab63bd6c230d31b8ae6f1d794ad49bf23bb53
e8b25a1d6c9fe06b68bb16c0ea19276f97e28414
694eb0c9309b3705a8bdb582f0c287aa77169996</cf_scm_refs>
          <cf_workaround>---</cf_workaround>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>776</commentid>
    <comment_count>0</comment_count>
    <who name="François Coupal">fcoupal</who>
    <bug_when>2011-01-18 21:49:25 +0100</bug_when>
    <thetext>NullPointerException pops up when following code is executed.

I executed this test on Ubuntu (Linux i386) with every native library and every module library (nativewindows, jogl, newt, jogl.test, ant, junit, ant-junit and gluegen) using the &quot;*.all.*&quot; variation. Therefore I think every single class was present, save for the JDK packages.

The goal of this test is to extract every OpenGL extension supported by the graphic card.

*******

import java.util.Collections;
import java.util.SortedSet;
import java.util.TreeSet;

import javax.media.nativewindow.AbstractGraphicsDevice;
import javax.media.opengl.DefaultGLCapabilitiesChooser;
import javax.media.opengl.GL;
import javax.media.opengl.GL2;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLCapabilitiesChooser;
import javax.media.opengl.GLCapabilitiesImmutable;
import javax.media.opengl.GLContext;
import javax.media.opengl.GLDrawableFactory;
import javax.media.opengl.GLPbuffer;
import javax.media.opengl.GLProfile;
import javax.media.opengl.awt.GLCanvas;

public class testJOGL2 {
        public static void main(String[] args) {
                GLProfile.initSingleton(true);
                GLCapabilities caps = new GLCapabilities(GLProfile.get(GLProfile.GL2));
                GLCanvas glc = new GLCanvas(caps);
                GLDrawableFactory usine = glc.getFactory();
                GLCapabilitiesImmutable glci = glc.getChosenGLCapabilities();
                GLCapabilitiesChooser glcc = new DefaultGLCapabilitiesChooser();
                AbstractGraphicsDevice agd = usine.getDefaultDevice();
               
                GLPbuffer pbuffer = usine.createGLPbuffer(agd, glci, glcc, 256, 256, null);
                GLContext context = pbuffer.getContext();
                context.makeCurrent();
                GL2 gl = pbuffer.getContext().getGL().getGL2();
               
                String extensions = gl.glGetString(GL.GL_EXTENSIONS);
                String[] tabExtensions = extensions.split(&quot; &quot;);
                SortedSet&lt;String&gt; setExtensions = new TreeSet&lt;String&gt;();
                Collections.addAll(setExtensions, tabExtensions);
                System.out.println(setExtensions);
        }
}

*********

Here is the console output:

Info: XInitThreads() called for concurrent Thread support
Exception in thread &quot;main&quot; java.lang.NullPointerException
        at javax.media.opengl.awt.GLCanvas.getFactory(GLCanvas.java:694)
        at testJOGL2.main(testJOGL2.java:24)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780</commentid>
    <comment_count>1</comment_count>
    <who name="François Coupal">fcoupal</who>
    <bug_when>2011-01-20 21:07:24 +0100</bug_when>
    <thetext>Additional Information when run with debug information:

I use JDK 1.6.0_23.

**** Manifest file ******

Manifest-Version: 1.0

Implementation-Title: Java Bindings for OpenGL Runtime Environment

Implementation-Version: 2.0-b11-20101213

Specification-Vendor: JogAmp Community

Created-By: 1.6.0_22-b04 (Sun Microsystems Inc.)

Implementation-URL: http://jogamp.org/

Ant-Version: Apache Ant 1.8.0

Implementation-Commit: e735c312c874ae6abc401b4765b24a83f5238a99

Implementation-Vendor: JogAmp Community

Trusted-Library: true

Implementation-Vendor-Id: com.jogamp

Specification-Title: Java Bindings for OpenGL API Specification

Implementation-Branch: rc

Specification-Version: 2.0

Extension-Name: javax.media.opengl

*************************

java.lang.Throwable: Info: NativeWindowFactory.initSingleton(true)
	at javax.media.nativewindow.NativeWindowFactory.initSingleton(NativeWindowFactory.java:155)
	at javax.media.opengl.GLProfile.initProfilesForDefaultDevices(GLProfile.java:1090)
	at javax.media.opengl.GLProfile.access$000(GLProfile.java:66)
	at javax.media.opengl.GLProfile$1.run(GLProfile.java:111)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.media.opengl.GLProfile.initSingleton(GLProfile.java:109)
	at testJOGL2.main(testJOGL2.java:20)
Info: XInitThreads() called for concurrent Thread support
X11Util.isFirstX11ActionOnProcess: true
NativeWindowFactory.registerFactory() interface javax.media.nativewindow.NativeWindow -&gt; com.jogamp.nativewindow.impl.NativeWindowFactoryImpl@148aa23
NativeWindowFactory firstUIActionOnProcess true
NativeWindowFactory isAWTAvailable false, defaultFactory com.jogamp.nativewindow.impl.NativeWindowFactoryImpl@148aa23
GraphicsConfigurationFactory.registerFactory() class javax.media.nativewindow.x11.X11GraphicsDevice -&gt; com.jogamp.nativewindow.impl.x11.X11GraphicsConfigurationFactory@763f5d
GraphicsConfigurationFactory.registerFactory() interface javax.media.nativewindow.AbstractGraphicsDevice -&gt; com.jogamp.nativewindow.impl.DefaultGraphicsConfigurationFactoryImpl@186768e
GraphicsConfigurationFactory.registerFactory() class javax.media.nativewindow.x11.X11GraphicsDevice -&gt; com.jogamp.opengl.impl.x11.glx.X11GLXGraphicsConfigurationFactory@14a8cd1
X11 Display(NULL) &lt;:0.0&gt;
GraphicsConfigurationFactory.registerFactory() class javax.media.nativewindow.egl.EGLGraphicsDevice -&gt; com.jogamp.opengl.impl.egl.EGLGraphicsConfigurationFactory@1319c
java.lang.Exception: X11Util.Display: Created new NamedX11Display[:0.0, 0x96d3e90, refCount 1, unCloseable false]. Thread main-SharedResourceRunner
	at com.jogamp.nativewindow.impl.x11.X11Util.createDisplay(X11Util.java:315)
	at com.jogamp.opengl.impl.x11.glx.X11GLXDrawableFactory$SharedResourceImplementation.createSharedResource(X11GLXDrawableFactory.java:162)
	at com.jogamp.opengl.impl.SharedResourceRunner.run(SharedResourceRunner.java:201)
	at java.lang.Thread.run(Thread.java:619)
chooseCapabilities: Using recommendedIndex: idx 0
Exception in thread &quot;main&quot; java.lang.NullPointerException
	at javax.media.opengl.awt.GLCanvas.getFactory(GLCanvas.java:694)
	at testJOGL2.main(testJOGL2.java:23)
java.lang.Exception: X11Util.Display: Closing new NamedX11Display[:0.0, 0x96d3e90, refCount 1, unCloseable false]. Thread main-SharedResourceRunner
	at com.jogamp.nativewindow.impl.x11.X11Util.closeDisplay(X11Util.java:340)
	at javax.media.nativewindow.x11.X11GraphicsDevice.close(X11GraphicsDevice.java:85)
	at com.jogamp.opengl.impl.x11.glx.X11GLXDrawableFactory$SharedResourceImplementation.releaseSharedResource(X11GLXDrawableFactory.java:235)
	at com.jogamp.opengl.impl.SharedResourceRunner.releaseSharedResources(SharedResourceRunner.java:240)
	at com.jogamp.opengl.impl.SharedResourceRunner.run(SharedResourceRunner.java:224)
	at java.lang.Thread.run(Thread.java:619)
java.lang.Exception: X11Util.Display: Shutdown (close open / pending Displays: false, open (no close attempt): 0/0, open (no close attempt and uncloseable): 0)
	at com.jogamp.nativewindow.impl.x11.X11Util.shutdown(X11Util.java:196)
	at com.jogamp.opengl.impl.x11.glx.X11GLXDrawableFactory.shutdownInstance(X11GLXDrawableFactory.java:313)
	at javax.media.opengl.GLDrawableFactory.shutdownImpl(GLDrawableFactory.java:200)
	at javax.media.opengl.GLDrawableFactory.access$100(GLDrawableFactory.java:90)
	at javax.media.opengl.GLDrawableFactory$2.run(GLDrawableFactory.java:171)
	at java.lang.Thread.run(Thread.java:619)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853</commentid>
    <comment_count>2</comment_count>
    <who name="Sven Gothel">sgothel</who>
    <bug_when>2011-02-25 05:43:37 +0100</bug_when>
    <thetext>Was fixed dec 2011:
- 2cbab63bd6c230d31b8ae6f1d794ad49bf23bb53
- e8b25a1d6c9fe06b68bb16c0ea19276f97e28414</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>876</commentid>
    <comment_count>3</comment_count>
      <attachid>238</attachid>
    <who name="François Coupal">fcoupal</who>
    <bug_when>2011-03-07 16:33:51 +0100</bug_when>
    <thetext>Created attachment 238
JUnit test case for recreating the NPE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>877</commentid>
    <comment_count>4</comment_count>
      <attachid>239</attachid>
    <who name="François Coupal">fcoupal</who>
    <bug_when>2011-03-07 16:34:33 +0100</bug_when>
    <thetext>Created attachment 239
File needed to make the OneTriangleAWT example work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>878</commentid>
    <comment_count>5</comment_count>
      <attachid>240</attachid>
    <who name="François Coupal">fcoupal</who>
    <bug_when>2011-03-07 16:36:12 +0100</bug_when>
    <thetext>Created attachment 240
Working example using a Frame.

You can use this file to change behavior depending on what you want to acheive. To make it work (show the exetnsions), just leave as is. If you want to make it crash, prevent the Frame from being set visible in any way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879</commentid>
    <comment_count>6</comment_count>
    <who name="François Coupal">fcoupal</who>
    <bug_when>2011-03-08 15:44:04 +0100</bug_when>
    <thetext>Re-opening the bug.

I&apos;ve noticed the NPE error is created in &quot;toString()&quot; methods when throwing exceptions.

Simply put, in an insufficent context (missing JARs, unavailiable ressources, no profile possible for whatever reason), the exception mechanism tries to make a long string of static info, but these info point to &quot;null&quot; members because of the botched initialisation of the context, and thus turn a normal exception into a NullPointerException.

This behavior is very easy to reproduce in the class GLProfile. Just by looking at the source code I was able to identify about 3-4 cases where nullity is not checked when accessing static objects. (example, line 1283 is VERY likely to throw an NPE when an incorrect initialisation occurs. GLCanvas:748 is another culprit).

By getting rid of these NPEs, it would be much easier to identify the real problems behind the initialization sequence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880</commentid>
    <comment_count>7</comment_count>
    <who name="François Coupal">fcoupal</who>
    <bug_when>2011-03-08 15:45:42 +0100</bug_when>
    <thetext>This is the correct state for an open bug. Sorry for the double setting. I&apos;m not very familiar with BugZilla.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>914</commentid>
    <comment_count>8</comment_count>
    <who name="Sven Gothel">sgothel</who>
    <bug_when>2011-03-21 07:41:40 +0100</bug_when>
    <thetext>thx a lot ..

if you have more &apos;ideas&apos; / hints for GLPRofile NPEs .. please let us know</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>238</attachid>
            <date>2011-03-07 16:33:51 +0100</date>
            <delta_ts>2011-03-07 16:33:51 +0100</delta_ts>
            <desc>JUnit test case for recreating the NPE.</desc>
            <filename>testJOGL2.java</filename>
            <type>text/plain</type>
            <size>1730</size>
            <attacher name="François Coupal">fcoupal</attacher>
            
              <data encoding="base64">aW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKaW1wb3J0IGphdmEudXRpbC5Tb3J0ZWRTZXQ7
CmltcG9ydCBqYXZhLnV0aWwuVHJlZVNldDsKCmltcG9ydCBqYXZheC5tZWRpYS5uYXRpdmV3aW5k
b3cuQWJzdHJhY3RHcmFwaGljc0RldmljZTsKaW1wb3J0IGphdmF4Lm1lZGlhLm9wZW5nbC5EZWZh
dWx0R0xDYXBhYmlsaXRpZXNDaG9vc2VyOwppbXBvcnQgamF2YXgubWVkaWEub3BlbmdsLkdMOwpp
bXBvcnQgamF2YXgubWVkaWEub3BlbmdsLkdMMjsKaW1wb3J0IGphdmF4Lm1lZGlhLm9wZW5nbC5H
TENhcGFiaWxpdGllczsKaW1wb3J0IGphdmF4Lm1lZGlhLm9wZW5nbC5HTENhcGFiaWxpdGllc0No
b29zZXI7CmltcG9ydCBqYXZheC5tZWRpYS5vcGVuZ2wuR0xDYXBhYmlsaXRpZXNJbW11dGFibGU7
CmltcG9ydCBqYXZheC5tZWRpYS5vcGVuZ2wuR0xDb250ZXh0OwppbXBvcnQgamF2YXgubWVkaWEu
b3BlbmdsLkdMRHJhd2FibGVGYWN0b3J5OwppbXBvcnQgamF2YXgubWVkaWEub3BlbmdsLkdMUGJ1
ZmZlcjsKaW1wb3J0IGphdmF4Lm1lZGlhLm9wZW5nbC5HTFByb2ZpbGU7CmltcG9ydCBqYXZheC5t
ZWRpYS5vcGVuZ2wuYXd0LkdMQ2FudmFzOwoKaW1wb3J0IG9yZy5qdW5pdC5UZXN0OwoKcHVibGlj
IGNsYXNzIHRlc3RKT0dMMiB7CgoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJn
cykgewoJCXRlc3RKT0dMMiBpbnN0YW5jZSA9IG5ldyB0ZXN0Sk9HTDIoKTsKCQlpbnN0YW5jZS50
ZXN0Sm9nbDJFeHRlbnNpb25DaGVjaygpOwoJfQoKCUBUZXN0CglwdWJsaWMgdm9pZCB0ZXN0Sm9n
bDJFeHRlbnNpb25DaGVjaygpIHsKCQlHTFByb2ZpbGUuaW5pdFNpbmdsZXRvbihmYWxzZSk7Ci8v
CQlHTENhcGFiaWxpdGllcyBjYXBzID0gbmV3IEdMQ2FwYWJpbGl0aWVzKEdMUHJvZmlsZS5nZXQo
R0xQcm9maWxlLkdMMikpOwoJCUdMQ2FwYWJpbGl0aWVzIGNhcHMgPSBuZXcgR0xDYXBhYmlsaXRp
ZXMoR0xQcm9maWxlLmdldERlZmF1bHQoKSk7CgkJR0xDYW52YXMgZ2xjID0gbmV3IEdMQ2FudmFz
KGNhcHMpOwoJCUdMRHJhd2FibGVGYWN0b3J5IHVzaW5lID0gZ2xjLmdldEZhY3RvcnkoKTsKCQlH
TENhcGFiaWxpdGllc0ltbXV0YWJsZSBnbGNpID0gZ2xjLmdldENob3NlbkdMQ2FwYWJpbGl0aWVz
KCk7CgkJR0xDYXBhYmlsaXRpZXNDaG9vc2VyIGdsY2MgPSBuZXcgRGVmYXVsdEdMQ2FwYWJpbGl0
aWVzQ2hvb3NlcigpOwoJCUFic3RyYWN0R3JhcGhpY3NEZXZpY2UgYWdkID0gdXNpbmUuZ2V0RGVm
YXVsdERldmljZSgpOwoJCQoJCUdMUGJ1ZmZlciBwYnVmZmVyID0gdXNpbmUuY3JlYXRlR0xQYnVm
ZmVyKGFnZCwgZ2xjaSwgZ2xjYywgMjU2LCAyNTYsIG51bGwpOwoJCUdMQ29udGV4dCBjb250ZXh0
ID0gcGJ1ZmZlci5nZXRDb250ZXh0KCk7CgkJY29udGV4dC5tYWtlQ3VycmVudCgpOwoJCUdMMiBn
bCA9IHBidWZmZXIuZ2V0Q29udGV4dCgpLmdldEdMKCkuZ2V0R0wyKCk7CgkJCgkJU3RyaW5nIGV4
dGVuc2lvbnMgPSBnbC5nbEdldFN0cmluZyhHTC5HTF9FWFRFTlNJT05TKTsKCQlTdHJpbmdbXSB0
YWJFeHRlbnNpb25zID0gZXh0ZW5zaW9ucy5zcGxpdCgiICIpOwoJCVNvcnRlZFNldDxTdHJpbmc+
IHNldEV4dGVuc2lvbnMgPSBuZXcgVHJlZVNldDxTdHJpbmc+KCk7CgkJQ29sbGVjdGlvbnMuYWRk
QWxsKHNldEV4dGVuc2lvbnMsIHRhYkV4dGVuc2lvbnMpOwoJCVN5c3RlbS5vdXQucHJpbnRsbihz
ZXRFeHRlbnNpb25zKTsKCX0KfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>239</attachid>
            <date>2011-03-07 16:34:33 +0100</date>
            <delta_ts>2011-03-07 16:34:33 +0100</delta_ts>
            <desc>File needed to make the OneTriangleAWT example work.</desc>
            <filename>OneTriangle.java</filename>
            <type>text/plain</type>
            <size>1052</size>
            <attacher name="François Coupal">fcoupal</attacher>
            
              <data encoding="base64">aW1wb3J0IGphdmF4Lm1lZGlhLm9wZW5nbC5HTDsKaW1wb3J0IGphdmF4Lm1lZGlhLm9wZW5nbC5H
TDI7CmltcG9ydCBqYXZheC5tZWRpYS5vcGVuZ2wuZ2x1LkdMVTsKCnB1YmxpYyBjbGFzcyBPbmVU
cmlhbmdsZSB7CiAgICBwcm90ZWN0ZWQgc3RhdGljIHZvaWQgc2V0dXAoIEdMMiBnbDIsIGludCB3
aWR0aCwgaW50IGhlaWdodCApIHsKICAgICAgICBnbDIuZ2xNYXRyaXhNb2RlKCBHTDIuR0xfUFJP
SkVDVElPTiApOwogICAgICAgIGdsMi5nbExvYWRJZGVudGl0eSgpOwoKICAgICAgICAvLyBjb29y
ZGluYXRlIHN5c3RlbSBvcmlnaW4gYXQgbG93ZXIgbGVmdCB3aXRoIHdpZHRoIGFuZCBoZWlnaHQg
c2FtZSBhcyB0aGUgd2luZG93CiAgICAgICAgR0xVIGdsdSA9IG5ldyBHTFUoKTsKICAgICAgICBn
bHUuZ2x1T3J0aG8yRCggMC4wZiwgd2lkdGgsIDAuMGYsIGhlaWdodCApOwoKICAgICAgICBnbDIu
Z2xNYXRyaXhNb2RlKCBHTDIuR0xfTU9ERUxWSUVXICk7CiAgICAgICAgZ2wyLmdsTG9hZElkZW50
aXR5KCk7CgogICAgICAgIGdsMi5nbFZpZXdwb3J0KCAwLCAwLCB3aWR0aCwgaGVpZ2h0ICk7CiAg
ICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyB2b2lkIHJlbmRlciggR0wyIGdsMiwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0ICkgewogICAgICAgIGdsMi5nbENsZWFyKCBHTC5HTF9DT0xPUl9CVUZGRVJf
QklUICk7CgogICAgICAgIC8vIGRyYXcgYSB0cmlhbmdsZSBmaWxsaW5nIHRoZSB3aW5kb3cKICAg
ICAgICBnbDIuZ2xMb2FkSWRlbnRpdHkoKTsKICAgICAgICBnbDIuZ2xCZWdpbiggR0wuR0xfVFJJ
QU5HTEVTICk7CiAgICAgICAgZ2wyLmdsQ29sb3IzZiggMSwgMCwgMCApOwogICAgICAgIGdsMi5n
bFZlcnRleDJmKCAwLCAwICk7CiAgICAgICAgZ2wyLmdsQ29sb3IzZiggMCwgMSwgMCApOwogICAg
ICAgIGdsMi5nbFZlcnRleDJmKCB3aWR0aCwgMCApOwogICAgICAgIGdsMi5nbENvbG9yM2YoIDAs
IDAsIDEgKTsKICAgICAgICBnbDIuZ2xWZXJ0ZXgyZiggd2lkdGggLyAyLCBoZWlnaHQgKTsKICAg
ICAgICBnbDIuZ2xFbmQoKTsKICAgIH0KfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>240</attachid>
            <date>2011-03-07 16:36:12 +0100</date>
            <delta_ts>2011-03-07 16:36:12 +0100</delta_ts>
            <desc>Working example using a Frame.</desc>
            <filename>OneTriangleAWT.java</filename>
            <type>text/plain</type>
            <size>2851</size>
            <attacher name="François Coupal">fcoupal</attacher>
            
              <data encoding="base64">aW1wb3J0IGphdmEuYXd0LkZyYW1lOwppbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93QWRhcHRl
cjsKaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0V2ZW50OwppbXBvcnQgamF2YS51dGlsLkNv
bGxlY3Rpb25zOwppbXBvcnQgamF2YS51dGlsLlNvcnRlZFNldDsKaW1wb3J0IGphdmEudXRpbC5U
cmVlU2V0OwoKaW1wb3J0IGphdmF4Lm1lZGlhLm5hdGl2ZXdpbmRvdy5BYnN0cmFjdEdyYXBoaWNz
RGV2aWNlOwppbXBvcnQgamF2YXgubWVkaWEub3BlbmdsLkRlZmF1bHRHTENhcGFiaWxpdGllc0No
b29zZXI7CmltcG9ydCBqYXZheC5tZWRpYS5vcGVuZ2wuR0w7CmltcG9ydCBqYXZheC5tZWRpYS5v
cGVuZ2wuR0wyOwppbXBvcnQgamF2YXgubWVkaWEub3BlbmdsLkdMQXV0b0RyYXdhYmxlOwppbXBv
cnQgamF2YXgubWVkaWEub3BlbmdsLkdMQ2FwYWJpbGl0aWVzOwppbXBvcnQgamF2YXgubWVkaWEu
b3BlbmdsLkdMQ2FwYWJpbGl0aWVzQ2hvb3NlcjsKaW1wb3J0IGphdmF4Lm1lZGlhLm9wZW5nbC5H
TENhcGFiaWxpdGllc0ltbXV0YWJsZTsKaW1wb3J0IGphdmF4Lm1lZGlhLm9wZW5nbC5HTENvbnRl
eHQ7CmltcG9ydCBqYXZheC5tZWRpYS5vcGVuZ2wuR0xEcmF3YWJsZUZhY3Rvcnk7CmltcG9ydCBq
YXZheC5tZWRpYS5vcGVuZ2wuR0xFdmVudExpc3RlbmVyOwppbXBvcnQgamF2YXgubWVkaWEub3Bl
bmdsLkdMUGJ1ZmZlcjsKaW1wb3J0IGphdmF4Lm1lZGlhLm9wZW5nbC5HTFByb2ZpbGU7CmltcG9y
dCBqYXZheC5tZWRpYS5vcGVuZ2wuYXd0LkdMQ2FudmFzOwoKLyoqCiAqIEEgbWluaW1hbCBwcm9n
cmFtIHRoYXQgZHJhd3Mgd2l0aCBKT0dMIGluIGFuIEFXVCBGcmFtZS4KICoKICogQGF1dGhvciBX
YWRlIFdhbGtlcgogKi8KcHVibGljIGNsYXNzIE9uZVRyaWFuZ2xlQVdUIHsKCglzdGF0aWMgewoJ
CUdMUHJvZmlsZS5pbml0U2luZ2xldG9uKCB0cnVlICk7Cgl9CgoJcHVibGljIHN0YXRpYyB2b2lk
IG1haW4oIFN0cmluZyBbXSBhcmdzICkgewovLwkJR0xQcm9maWxlIGdscHJvZmlsZSA9IEdMUHJv
ZmlsZS5nZXREZWZhdWx0KCk7CgkJR0xQcm9maWxlIGdscHJvZmlsZSA9IEdMUHJvZmlsZS5nZXQo
R0xQcm9maWxlLkdMMik7CgkJR0xDYXBhYmlsaXRpZXMgZ2xjYXBhYmlsaXRpZXMgPSBuZXcgR0xD
YXBhYmlsaXRpZXMoIGdscHJvZmlsZSApOwoJCWZpbmFsIEdMQ2FudmFzIGdsY2FudmFzID0gbmV3
IEdMQ2FudmFzKCBnbGNhcGFiaWxpdGllcyApOwoKCQlnbGNhbnZhcy5hZGRHTEV2ZW50TGlzdGVu
ZXIoIG5ldyBHTEV2ZW50TGlzdGVuZXIoKSB7CgoJCQlAT3ZlcnJpZGUKCQkJcHVibGljIHZvaWQg
cmVzaGFwZSggR0xBdXRvRHJhd2FibGUgZ2xhdXRvZHJhd2FibGUsIGludCB4LCBpbnQgeSwgaW50
IHdpZHRoLCBpbnQgaGVpZ2h0ICkgewoJCQkJT25lVHJpYW5nbGUuc2V0dXAoIGdsYXV0b2RyYXdh
YmxlLmdldEdMKCkuZ2V0R0wyKCksIHdpZHRoLCBoZWlnaHQgKTsKCQkJfQoKCQkJQE92ZXJyaWRl
CgkJCXB1YmxpYyB2b2lkIGluaXQoIEdMQXV0b0RyYXdhYmxlIGdsYXV0b2RyYXdhYmxlICkgewoJ
CQl9CgoJCQlAT3ZlcnJpZGUKCQkJcHVibGljIHZvaWQgZGlzcG9zZSggR0xBdXRvRHJhd2FibGUg
Z2xhdXRvZHJhd2FibGUgKSB7CgkJCX0KCgkJCUBPdmVycmlkZQoJCQlwdWJsaWMgdm9pZCBkaXNw
bGF5KCBHTEF1dG9EcmF3YWJsZSBnbGF1dG9kcmF3YWJsZSApIHsKCQkJCU9uZVRyaWFuZ2xlLnJl
bmRlciggZ2xhdXRvZHJhd2FibGUuZ2V0R0woKS5nZXRHTDIoKSwgZ2xhdXRvZHJhd2FibGUuZ2V0
V2lkdGgoKSwgZ2xhdXRvZHJhd2FibGUuZ2V0SGVpZ2h0KCkgKTsKCQkJfQoJCX0pOwoKCQlmaW5h
bCBGcmFtZSBmcmFtZSA9IG5ldyBGcmFtZSggIk9uZSBUcmlhbmdsZSBBV1QiICk7CgkJZnJhbWUu
YWRkKCBnbGNhbnZhcyApOwoJCWZyYW1lLmFkZFdpbmRvd0xpc3RlbmVyKCBuZXcgV2luZG93QWRh
cHRlcigpIHsKCQkJcHVibGljIHZvaWQgd2luZG93Q2xvc2luZyggV2luZG93RXZlbnQgd2luZG93
ZXZlbnQgKSB7CgkJCQlmcmFtZS5yZW1vdmUoIGdsY2FudmFzICk7CgkJCQlmcmFtZS5kaXNwb3Nl
KCk7CgkJCQlTeXN0ZW0uZXhpdCggMCApOwoJCQl9CgkJfSk7CgoJCWZyYW1lLnNldFNpemUoIDY0
MCwgNDgwICk7CgkJZnJhbWUuc2V0VmlzaWJsZSggdHJ1ZSApOwoKCQlHTERyYXdhYmxlRmFjdG9y
eSB1c2luZSA9IGdsY2FudmFzLmdldEZhY3RvcnkoKTsKCQlHTENhcGFiaWxpdGllc0ltbXV0YWJs
ZSBnbGNpID0gZ2xjYW52YXMuZ2V0Q2hvc2VuR0xDYXBhYmlsaXRpZXMoKTsKCQlHTENhcGFiaWxp
dGllc0Nob29zZXIgZ2xjYyA9IG5ldyBEZWZhdWx0R0xDYXBhYmlsaXRpZXNDaG9vc2VyKCk7CgkJ
QWJzdHJhY3RHcmFwaGljc0RldmljZSBhZ2QgPSB1c2luZS5nZXREZWZhdWx0RGV2aWNlKCk7CgoJ
CUdMUGJ1ZmZlciBwYnVmZmVyID0gdXNpbmUuY3JlYXRlR0xQYnVmZmVyKGFnZCwgZ2xjaSwgZ2xj
YywgMjU2LCAyNTYsIG51bGwpOwoJCUdMQ29udGV4dCBjb250ZXh0ID0gcGJ1ZmZlci5nZXRDb250
ZXh0KCk7CgkJY29udGV4dC5tYWtlQ3VycmVudCgpOwoJCUdMMiBnbCA9IHBidWZmZXIuZ2V0Q29u
dGV4dCgpLmdldEdMKCkuZ2V0R0wyKCk7CgoJCVN0cmluZyBleHRlbnNpb25zID0gZ2wuZ2xHZXRT
dHJpbmcoR0wuR0xfRVhURU5TSU9OUyk7CgkJU3RyaW5nW10gdGFiRXh0ZW5zaW9ucyA9IGV4dGVu
c2lvbnMuc3BsaXQoIiAiKTsKCQlTb3J0ZWRTZXQ8U3RyaW5nPiBzZXRFeHRlbnNpb25zID0gbmV3
IFRyZWVTZXQ8U3RyaW5nPigpOwoJCUNvbGxlY3Rpb25zLmFkZEFsbChzZXRFeHRlbnNpb25zLCB0
YWJFeHRlbnNpb25zKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oc2V0RXh0ZW5zaW9ucyk7Cgl9Cn0K
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>