Larry, Thanks for clarifying that. I'm going to compare the render() methods in JUMP, OpenJUMP, and in my modified code.
When I changed the statement if (getRenderer(contentID).equals(null)) back to the statement if (getRenderer(contentID == null) the NullPointerException is generated in a later statement in the render() method. This tells me that at some point the render() method in OpenJUMP is passed a null value. If this wasn't the case the statement if (getRenderer(contentID).equals(null)) would never generate a NullPointerException. I'll get back to the list if I ever figure out what is going on. The Sunburned Surveyor On 5/21/07, Larry Becker <[EMAIL PROTECTED]> wrote: > Wishful thinking. There are no layers in an empty project, so there are no > renders. > > > Larry > > On 5/21/07, Sunburned Surveyor < [EMAIL PROTECTED]> wrote: > > I just realized OpenJUMP isn't passing the LayerViewPanel or any other > > "phantom" object to the render() method. > > > > The only way the > > > > if (getRenderer(contentID).equals(null)) > > > > statement could be causing a NullPointerException is if OpenJUMP was > > passing the render() method a null value. > > > > I think it does this when opening an "empty" project or right before a > > pan and zoom. > > > > I'll see if I can modify the render() method to handle this. Maybe Jon > > would remember how this code works... > > > > SS > > > > On 5/21/07, Sunburned Surveyor <[EMAIL PROTECTED]> wrote: > > > Larry, > > > > > > This makes sense. I didn't think about the fact that I was calling the > > > Object.equals method in this line. > > > > > > I find your comments interesting because a Layer object is not passed > > > to OpenJUMP when a project is first opened. Maybe this is why I can > > > rendering works with no error when I load a Shapefile. In this case I > > > know OpenJUMP is being passed a valid Layer object. > > > > > > I think something besides a layer is being passed to the render() > > > fmethod when OpenJUMP first opens up an empty project. I think this > > > same "phantom" object is being passed before any Layerables the Layer > > > View is panned or zoomed. > > > > > > Perhaps the render() method is passed a reference to the > > > LayerViewPanel itself? I'll have to take a look at the code in JUMP to > > > see if I can figure this out. > > > > > > Very interesting. At least I am beginning to think the problem isn't > > > in any of the classes that I introduced. > > > > > > The Sunburned Surveyor > > > > Hi SS, > > > > > > > > You said: > > > > The line that is generating the error mesage is this: > > > > > > > > if (getRenderer(contentID).equals(null)) > > > > The only way that could be true is if contentID is null. If I > remember > > > > correctly, contentID is basically the layer object. > > > > > > > > Larry > > > > > > > > > > > > > > > > On 5/21/07, Sunburned Surveyor < [EMAIL PROTECTED]> wrote: > > > > > > > > > > Sascha, > > > > > > > > > > This is how the method was coded first, and I still got the error > > > > > message. I changed it today thinking that might fix the problem. > > > > > > > > > > Do you have any other ideas? > > > > > > > > > > The Sunburned Surveyor > > > > > > > > > > On 5/21/07, Sascha L. Teichmann < [EMAIL PROTECTED]> wrote: > > > > > > -----BEGIN PGP SIGNED MESSAGE----- > > > > > > Hash: SHA1 > > > > > > > > > > > > Hi, > > > > > > > > > > > > What about rewriting > > > > > > > > > > > > getRenderer(contentID).equals(null) > > > > > > > > > > > > as > > > > > > > > > > > > getRenderer(contentID) == null > > > > > > > > > > > > ? > > > > > > > > > > > > - - Sascha > > > > > > > > > > > > Sunburned Surveyor schrieb: > > > > > > > I'm about ready to give up on this pluggable rendering system > for > > > > > > > OpenJUMP. :] > > > > > > > > > > > > > > I created JUnit tests for the two main classes involved, namely > > > > > > > RendererFactory and RegularRendererFactoryTool. All the JUnit > tests > > > > > > > for the public methods in both the classes pass with no problems > now > > > > > > > that I have made some corrections to my code. > > > > > > > > > > > > > > I built OpenJUMP today so that I could test the modified code. > > > > > > > OpenJUMP opens but gives me an error message after displaying > the > > > > > > > layer view. The error message is again a NullPointerException > but this > > > > > > > time it is coming from the render() method of the > RenderingManager > > > > > > > class which seems odd. > > > > > > > > > > > > > > The line that is generating the error mesage is this: > > > > > > > > > > > > > > if (getRenderer(contentID).equals(null)) > > > > > > > > > > > > > > This really confuses me, since it seems that we are calling the > > > > > > > getRendererMethod which is defined in the same class, > > > > > > > RenderingManager, that also defines the render() method that is > > > > > > > throwing an exception. > > > > > > > > > > > > > > How can I be generating a NullPointerException from this method? > If > > > > > > > the NullPointerException was coming from inside the > getRenderer() > > > > > > > method itself, wouldn't that be indicated in the stack trace of > the > > > > > > > exception? > > > > > > > > > > > > > > I should also mention that OpenJUMP correctly renders a layer > when I > > > > > > > am adding a new layer to the project, but that any attempts to > pan or > > > > > > > zoom the Layer View result in the same NullPointerException that > is > > > > > > > produced when OpenJUMP first opens. > > > > > > > > > > > > > > I'm really lost with this one. Any help or suggestions of where > to > > > > > > > look for the source of this NullPointerException would be > greatly > > > > > > > appreciated. > > > > > > > > > > > > > > Thanks in advance for the help. > > > > > > > > > > > > > > The Sunburned Surveyor > > > > > > > > > > > > > > P.S. - I have attached the text will all of the statements of > the > > > > > > > RenderingManager.render() method if you want to take a look. > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------ > > > > > > > > > > > > > > public void render(Object contentID, boolean > clearImageCache) { > > > > > > > > > > > > > > if > > > > (getRenderer(contentID).equals(null)) > > > > > > > { > > > > > > > /* > > > > > > > * Modified this method to wrap the call > to > > > > createRenderer() in a try/catch block. > > > > > > > * [The Sunburned Surveyor 2007-05-02] > > > > > > > * > > > > > > > */ > > > > > > > try > > > > > > > { > > > > > > > setRenderer(contentID, > > > > createRenderer(contentID)); > > > > > > > } > > > > > > > > > > > > > > > > > > catch(ExcPluggableRendererNotFound thisException) > > > > > > > { > > > > > > > > > > > System.err.println(thisException.getMessage()); > > > > > > > } > > > > > > > } > > > > > > > > > > > > > > if > > > > (getRenderer(contentID).isRendering()) { > > > > > > > > > > > getRenderer(contentID).cancel(); > > > > > > > > > > > > > > //It might not cancel immediately, so > create a > > > > new Renderer [Jon > > > > > > > // Aquino] > > > > > > > > > > > > > > /* > > > > > > > * Modified this method to wrap the call > to > > > > createRenderer() in a try/catch block. > > > > > > > * [The Sunburned Surveyor 2007-05-02] > > > > > > > * > > > > > > > */ > > > > > > > try > > > > > > > { > > > > > > > setRenderer(contentID, > > > > createRenderer(contentID)); > > > > > > > } > > > > > > > > > > > > > > > > > > catch(ExcPluggableRendererNotFound thisException) > > > > > > > { > > > > > > > System.err.println > > > > (thisException.getMessage()); > > > > > > > } > > > > > > > } > > > > > > > > > > > > > > if (clearImageCache) { > > > > > > > > > > > getRenderer(contentID).clearImageCache(); > > > > > > > } > > > > > > > Runnable runnable = > > > > getRenderer(contentID).createRunnable(); > > > > > > > if (runnable != null) { > > > > > > > // Before I would create threads that did > > > > nothing. Now I never do > > > > > > > // that -- I just return null. A dozen > threads > > > > that do nothing make > > > > > > > // the system sluggish. [Jon Aquino] > > > > > > > ((contentID instanceof Layerable && > ((Layerable) > > > > contentID) > > > > > > > > > > > > .getBlackboard().get(USE_MULTI_RENDERING_THREAD_QUEUE_KEY, > > > > > > > > > > > false)) ? multiRendererThreadQueue > > > > > > > : > > > > defaultRendererThreadQueue).add(runnable); > > > > > > > } > > > > > > > > > > > > > > if (!repaintTimer.isRunning()) { > > > > > > > repaintPanel(); > > > > > > > repaintTimer.start (); > > > > > > > } > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------ > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------- > > > > > > > This SF.net email is sponsored by DB2 Express > > > > > > > Download DB2 Express C - the FREE version of DB2 express and > take > > > > > > > control of your XML. No limits. Just data. Click to get it now. > > > > > > > http://sourceforge.net/powerbar/db2/ > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------ > > > > > > > > > > > > > > _______________________________________________ > > > > > > > Jump-pilot-devel mailing list > > > > > > > Jump-pilot-devel@lists.sourceforge.net > > > > > > > > > > > > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > > > > > > -----BEGIN PGP SIGNATURE----- > > > > > > Version: GnuPG v1.4.2.2 (GNU/Linux) > > > > > > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org > > > > > > > > > > > > > > > > > iD8DBQFGUe9zsrvOlFf8EzcRAp76AJ9c67RdzncWmgt8O6U+Xy/tmti3KQCg0VOj > > > > > > SWcwqwDJ9htfc9SJe1t+Ozo= > > > > > > =qsZ3 > > > > > > -----END PGP SIGNATURE----- > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------- > > > > > > This SF.net email is sponsored by DB2 Express > > > > > > Download DB2 Express C - the FREE version of DB2 express and take > > > > > > control of your XML. No limits. Just data. Click to get it now. > > > > > > http://sourceforge.net/powerbar/db2/ > > > > > > _______________________________________________ > > > > > > Jump-pilot-devel mailing list > > > > > > Jump-pilot-devel@lists.sourceforge.net > > > > > > > > > > > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------- > > > > > This SF.net email is sponsored by DB2 Express > > > > > Download DB2 Express C - the FREE version of DB2 express and take > > > > > control of your XML. No limits. Just data. Click to get it now. > > > > > http://sourceforge.net/powerbar/db2/ > > > > > _______________________________________________ > > > > > Jump-pilot-devel mailing list > > > > > Jump-pilot-devel@lists.sourceforge.net > > > > > > > > > > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > > > > > > > > > > > > > > > > > > > > > -- > > > > http://amusingprogrammer.blogspot.com/ > > > > > ------------------------------------------------------------------------- > > > > This SF.net email is sponsored by DB2 Express > > > > Download DB2 Express C - the FREE version of DB2 express and take > > > > control of your XML. No limits. Just data. Click to get it now. > > > > http://sourceforge.net/powerbar/db2/ > > > > _______________________________________________ > > > > Jump-pilot-devel mailing list > > > > Jump-pilot-devel@lists.sourceforge.net > > > > > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > > > > > > > > > > > > > > > > ------------------------------------------------------------------------- > > This SF.net email is sponsored by DB2 Express > > Download DB2 Express C - the FREE version of DB2 express and take > > control of your XML. No limits. Just data. Click to get it now. > > http://sourceforge.net/powerbar/db2/ > > _______________________________________________ > > Jump-pilot-devel mailing list > > Jump-pilot-devel@lists.sourceforge.net > > > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > > > > > > -- > http://amusingprogrammer.blogspot.com/ > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Jump-pilot-devel mailing list > Jump-pilot-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel > > ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel