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