4 Replies Latest reply on Feb 12, 2014 11:53 AM by lincolnthree

    [forge-dev] F2Console issues

    lincolnthree

      Hey Koen,

       

      Awesome work on the F2 console integration! I have a couple bug scenarios

      for you:

       

      1. Start F2 using CMD-5

      2. F2Console is not attached. Cannot press start, but no shell prompt is

      available. Must stop then re-start from the F2Console button to get CLI to

      appear.

       

      2a. On stopping F2 from F2Console view (when it has been started via CMD-5)

      an exception occurs:

       

       

       

      org.eclipse.swt.SWTException: Failed to execute runnable

      (java.lang.NullPointerException)

      at org.eclipse.swt.SWT.error(SWT.java:4397)

      at org.eclipse.swt.SWT.error(SWT.java:4312)

      at

      org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:138)

      at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3976)

      at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3653)

      at

      org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113)

      at

      org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)

      at

      org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997)

      at

      org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:138)

      at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:610)

      at

      org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)

      at

      org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567)

      at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)

      at

      org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)

      at

      org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)

      at

      org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)

      at

      org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)

      at

      org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)

      at

      org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)

      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

      at

      sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

      at

      sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

      at java.lang.reflect.Method.invoke(Method.java:601)

      at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)

      at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)

      at org.eclipse.equinox.launcher.Main.run(Main.java:1450)

      at org.eclipse.equinox.launcher.Main.main(Main.java:1426)

      Caused by: java.lang.NullPointerException

      at org.jboss.tools.forge.ui.ext.cli.F2Console.stop(F2Console.java:39)

      at org.jboss.tools.forge.ui.ext.cli.F2TextViewer$2.run(F2TextViewer.java:31)

      at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)

      at

      org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)

      ... 24 more

       

       

      --

      Lincoln Baxter, III

      http://ocpsoft.org

      "Simpler is better."

       

        • 1. Re: [forge-dev] F2Console issues
          koen.aers

          Hi Lincoln,

           

          The F2Console View is in fact purged in master. You can use both the F1 and the F2 consoles by bringing up the Forge Console View and using the drop down toolbar menu to switch between both consoles. You can also start and stop both the F1 and F2 runtimes from there. Unfortunately the purging was done after branching for 4.2.0.Alpha2 so the two views are still there in the build that is now a candidate for release.

           

          Cheers,

          Koen

           

          Op 10-feb.-2014, om 21:20 heeft Lincoln Baxter, III het volgende geschreven:

           

          Hey Koen,

           

          Awesome work on the F2 console integration! I have a couple bug scenarios for you:

           

          1. Start F2 using CMD-5

          2. F2Console is not attached. Cannot press start, but no shell prompt is available. Must stop then re-start from the F2Console button to get CLI to appear.

           

          2a. On stopping F2 from F2Console view (when it has been started via CMD-5) an exception occurs:

           

           

           

          org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NullPointerException)

               at org.eclipse.swt.SWT.error(SWT.java:4397)

               at org.eclipse.swt.SWT.error(SWT.java:4312)

               at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:138)

               at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3976)

               at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3653)

               at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113)

               at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)

               at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997)

               at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:138)

               at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:610)

               at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)

               at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567)

               at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)

               at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)

               at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)

               at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)

               at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)

               at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)

               at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)

               at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

               at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

               at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

               at java.lang.reflect.Method.invoke(Method.java:601)

               at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)

               at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)

               at org.eclipse.equinox.launcher.Main.run(Main.java:1450)

               at org.eclipse.equinox.launcher.Main.main(Main.java:1426)

          Caused by: java.lang.NullPointerException

               at org.jboss.tools.forge.ui.ext.cli.F2Console.stop(F2Console.java:39)

               at org.jboss.tools.forge.ui.ext.cli.F2TextViewer$2.run(F2TextViewer.java:31)

               at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)

               at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)

               ... 24 more

           

           

          --

          Lincoln Baxter, III

          http://ocpsoft.org

          "Simpler is better."

           

           

          • 2. Re: [forge-dev] F2Console issues
            lincolnthree

            Yes. I'm pretty sure this latest version is where I found the bugs. Could

            you take a look and try to reproduce/fix? (or let me know if I'm wrong, and

            I'll try again.) Thanks!

             

             

            On Tue, Feb 11, 2014 at 7:59 AM, Koen Aers <koen.aers@jboss.com> wrote:

             

            Hi Lincoln,

             

            The F2Console View is in fact purged in master. You can use both the F1

            and the F2 consoles by bringing up the Forge Console View and using the

            drop down toolbar menu to switch between both consoles. You can also start

            and stop both the F1 and F2 runtimes from there. Unfortunately the purging

            was done after branching for 4.2.0.Alpha2 so the two views are still there

            in the build that is now a candidate for release.

             

            Cheers,

            Koen

             

            Op 10-feb.-2014, om 21:20 heeft Lincoln Baxter, III het volgende

            geschreven:

             

            Hey Koen,

             

            Awesome work on the F2 console integration! I have a couple bug scenarios

            for you:

             

            1. Start F2 using CMD-5

            2. F2Console is not attached. Cannot press start, but no shell prompt is

            available. Must stop then re-start from the F2Console button to get CLI to

            appear.

             

            2a. On stopping F2 from F2Console view (when it has been started via

            CMD-5) an exception occurs:

             

            >

             

            org.eclipse.swt.SWTException: Failed to execute runnable

            (java.lang.NullPointerException)

            at org.eclipse.swt.SWT.error(SWT.java:4397)

            at org.eclipse.swt.SWT.error(SWT.java:4312)

            at

            org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:138)

            at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3976)

            at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3653)

            at

            org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113)

            at

            org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)

            at

            org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997)

            at

            org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:138)

            at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:610)

            at

            org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)

            at

            org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567)

            at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)

            at

            org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)

            at

            org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)

            at

            org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)

            at

            org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)

            at

            org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)

            at

            org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)

            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

            at

            sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

            at

            sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

            at java.lang.reflect.Method.invoke(Method.java:601)

            at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)

            at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)

            at org.eclipse.equinox.launcher.Main.run(Main.java:1450)

            at org.eclipse.equinox.launcher.Main.main(Main.java:1426)

            Caused by: java.lang.NullPointerException

            at org.jboss.tools.forge.ui.ext.cli.F2Console.stop(F2Console.java:39)

            at

            org.jboss.tools.forge.ui.ext.cli.F2TextViewer$2.run(F2TextViewer.java:31)

            at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)

            at

            org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)

            ... 24 more

             

            >

            --

            Lincoln Baxter, III

            http://ocpsoft.org

            "Simpler is better."

             

            >

             

             

            --

            Lincoln Baxter, III

            http://ocpsoft.org

            "Simpler is better."

             

            • 3. Re: [forge-dev] F2Console issues
              koen.aers

              You are right.

               

              I didn't see it because my F2 console was visible when I was testing. The key to reproduce is that the Forge Console View is closed/not visible when starting F2 with Cmd+5.

               

              I have created JBIDE-16528.

               

              Thanks,

              Koen

               

              Op 11-feb.-2014, om 23:41 heeft Lincoln Baxter, III het volgende geschreven:

               

              Yes. I'm pretty sure this latest version is where I found the bugs. Could you take a look and try to reproduce/fix? (or let me know if I'm wrong, and I'll try again.) Thanks!

               

               

              On Tue, Feb 11, 2014 at 7:59 AM, Koen Aers <koen.aers@jboss.com> wrote:

              Hi Lincoln,

               

              The F2Console View is in fact purged in master. You can use both the F1 and the F2 consoles by bringing up the Forge Console View and using the drop down toolbar menu to switch between both consoles. You can also start and stop both the F1 and F2 runtimes from there. Unfortunately the purging was done after branching for 4.2.0.Alpha2 so the two views are still there in the build that is now a candidate for release.

               

              Cheers,

              Koen

               

              Op 10-feb.-2014, om 21:20 heeft Lincoln Baxter, III het volgende geschreven:

               

              >> Hey Koen,

              >>

              >> Awesome work on the F2 console integration! I have a couple bug scenarios for you:

              >>

              >> 1. Start F2 using CMD-5

              >> 2. F2Console is not attached. Cannot press start, but no shell prompt is available. Must stop then re-start from the F2Console button to get CLI to appear.

              >>

              >> 2a. On stopping F2 from F2Console view (when it has been started via CMD-5) an exception occurs:

              >>

              >>

              >>

              >> org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NullPointerException)

              >>      at org.eclipse.swt.SWT.error(SWT.java:4397)

              >>      at org.eclipse.swt.SWT.error(SWT.java:4312)

              >>      at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:138)

              >>      at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3976)

              >>      at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3653)

              >>      at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113)

              >>      at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)

              >>      at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997)

              >>      at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:138)

              >>      at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:610)

              >>      at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)

              >>      at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567)

              >>      at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)

              >>      at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)

              >>      at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)

              >>      at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)

              >>      at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)

              >>      at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)

              >>      at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)

              >>      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

              >>      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

              >>      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

              >>      at java.lang.reflect.Method.invoke(Method.java:601)

              >>      at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)

              >>      at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)

              >>      at org.eclipse.equinox.launcher.Main.run(Main.java:1450)

              >>      at org.eclipse.equinox.launcher.Main.main(Main.java:1426)

              >> Caused by: java.lang.NullPointerException

              >>      at org.jboss.tools.forge.ui.ext.cli.F2Console.stop(F2Console.java:39)

              >>      at org.jboss.tools.forge.ui.ext.cli.F2TextViewer$2.run(F2TextViewer.java:31)

              >>      at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)

              >>      at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)

              >>      ... 24 more

              >>

              >>

              >> --

              >> Lincoln Baxter, III

              >> http://ocpsoft.org

              >> "Simpler is better."

               

               

               

              --

              Lincoln Baxter, III

              http://ocpsoft.org

              "Simpler is better."

              _______________________________________________

              forge-dev mailing list

              forge-dev@lists.jboss.org

              https://lists.jboss.org/mailman/listinfo/forge-dev

               

               

              • 4. Re: [forge-dev] F2Console issues
                lincolnthree

                Ok, great. Thanks!

                 

                 

                On Wed, Feb 12, 2014 at 2:53 AM, Koen Aers <koen.aers@jboss.com> wrote:

                 

                You are right.

                 

                I didn't see it because my F2 console was visible when I was testing. The

                key to reproduce is that the Forge Console View is closed/not visible when

                starting F2 with Cmd+5.

                 

                I have created JBIDE-16528.

                 

                Thanks,

                Koen

                 

                Op 11-feb.-2014, om 23:41 heeft Lincoln Baxter, III het volgende

                geschreven:

                 

                Yes. I'm pretty sure this latest version is where I found the bugs. Could

                you take a look and try to reproduce/fix? (or let me know if I'm wrong, and

                I'll try again.) Thanks!

                 

                >

                On Tue, Feb 11, 2014 at 7:59 AM, Koen Aers <koen.aers@jboss.com> wrote:

                 

                >> Hi Lincoln,

                >>

                >> The F2Console View is in fact purged in master. You can use both the F1

                >> and the F2 consoles by bringing up the Forge Console View and using the

                >> drop down toolbar menu to switch between both consoles. You can also start

                >> and stop both the F1 and F2 runtimes from there. Unfortunately the purging

                >> was done after branching for 4.2.0.Alpha2 so the two views are still there

                >> in the build that is now a candidate for release.

                >>

                >> Cheers,

                >> Koen

                >>

                >> Op 10-feb.-2014, om 21:20 heeft Lincoln Baxter, III het volgende

                >> geschreven:

                >>

                >> Hey Koen,

                >>

                >> Awesome work on the F2 console integration! I have a couple bug scenarios

                >> for you:

                >>

                >> 1. Start F2 using CMD-5

                >> 2. F2Console is not attached. Cannot press start, but no shell prompt is

                >> available. Must stop then re-start from the F2Console button to get CLI to

                >> appear.

                >>

                >> 2a. On stopping F2 from F2Console view (when it has been started via

                >> CMD-5) an exception occurs:

                >>

                >>

                >>

                >> org.eclipse.swt.SWTException: Failed to execute runnable

                >> (java.lang.NullPointerException)

                >>  at org.eclipse.swt.SWT.error(SWT.java:4397)

                >> at org.eclipse.swt.SWT.error(SWT.java:4312)

                >> at

                >> org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:138)

                >>  at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3976)

                >> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3653)

                >>  at

                >> org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113)

                >> at

                >> org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)

                >>  at

                >> org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997)

                >> at

                >> org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:138)

                >>  at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:610)

                >> at

                >> org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)

                >>  at

                >> org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567)

                >> at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)

                >>  at

                >> org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)

                >> at

                >> org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)

                >>  at

                >> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)

                >> at

                >> org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)

                >>  at

                >> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)

                >> at

                >> org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)

                >>  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

                >> at

                >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

                >>  at

                >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

                >> at java.lang.reflect.Method.invoke(Method.java:601)

                >>  at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)

                >> at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)

                >>  at org.eclipse.equinox.launcher.Main.run(Main.java:1450)

                >> at org.eclipse.equinox.launcher.Main.main(Main.java:1426)

                >> Caused by: java.lang.NullPointerException

                >> at org.jboss.tools.forge.ui.ext.cli.F2Console.stop(F2Console.java:39)

                >> at

                >> org.jboss.tools.forge.ui.ext.cli.F2TextViewer$2.run(F2TextViewer.java:31)

                >>  at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)

                >> at

                >> org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)

                >>  ... 24 more

                >>

                >>

                >> --

                >> Lincoln Baxter, III

                >> http://ocpsoft.org

                >> "Simpler is better."

                >>

                >>

                >>

                >

                 

                --

                Lincoln Baxter, III

                http://ocpsoft.org

                "Simpler is better."

                _______________________________________________

                forge-dev mailing list

                forge-dev@lists.jboss.org

                https://lists.jboss.org/mailman/listinfo/forge-dev

                 

                >

                 

                _______________________________________________

                forge-dev mailing list

                forge-dev@lists.jboss.org

                https://lists.jboss.org/mailman/listinfo/forge-dev

                 

                 

                 

                 

                --

                Lincoln Baxter, III

                http://ocpsoft.org

                "Simpler is better."