Open Discussion (#3) - 2007-10-07 cruisecontrol builds non-op (#8) - Message List

2007-10-07 cruisecontrol builds non-op

Both of the recent 2007-10-07 cruisecontrol builds fail to launch on the 8320. When starting you get an immediate "Uncaught exception. 0 >= 0." Rolling back to the 2007-10-01 cruisecontrol build works just fine.

  • Message #14

    I'm in the process of making major changes to the way configuration data is stored, and every time I do that it causes major breakage when trying to load an existing configuration on startup. Unfortunately, I have not figured out how to purge the Java Record Store on the BlackBerry from outside LogicMail. I haven't seen that specific error on the simulator, but I'll have to look into it.

    Ultimately, I'll need a permanent solution to this problem. It could possibly be some backdoor way of purging the Java Record Store, or just very error-tolerant configuration loading code.

    • Message #15

      Gotcha - I saw some of the underpinnings you're changing and have been following the commits. Thinking forward, is there a way to insert a config version number in the Record Store? Then future loads could have a 'config upgrade' class that understands how to read an old version and write it back out in the new version or something similar....futureproof it.

      • Message #16

        That is actually s good idea, and will definitely help.

        I'm also starting to get concerned about the J2ME RecordStore as a whole, since it apparently is limited to 64k across all applications. Thus, it'll really only be useful for configuration data and limited caching (like the folder trees currently cached). Long term, we may just have to bite the bullet and make LogicMail require those nasty code signing keys to use the real BlackBerry object persistence API if we want to start caching real data.

      • Message #17

        Oh, and another quick workaround I just discovered:

         How To - Handle stored data when removing an application

        Read the section entitled: "MIDP Record Stores"

        • Message #18

          Unfortunately I don't believe this statement:

          "If the devices use Device Software 4.1, the application data is always deleted once the application is removed."

          I have uninstalled apps and reinstalled them (not an upgrade, etc.) and have had the RMS data still left behind, upon installation I've sometimes found the old settings still active. This is just what I've experienced on my 8100, haven't done a lot of uninstalling on my new 8320 quite yet.

          Idea: could you build a very basic applet (not tied to LogicMail code) that was able to display the RMS records and allow a user to selectively delete one of the records/datastores? I could then - with LogicMail installed - just use the app to whack it's config data and when it starts up it could be in first-time-use mode. I could see this as being very handy just in general, too...

          • Message #20

            Having a simple RMS utility is not really possible, since the data stores are isolated between applications. What is a practical solution is embedding a header in the configuration so it can be whacked (with a prompt first) when starting a new version of LogicMail on your device.

            Configuration migration isn't really practical at the moment, but may become important in the 1.0 world and beyond.

            What you are really experiencing right now are the pains of using software while I am in the middle of making major changes to how I handle object serialization. Once those changes settle down, it is likely that the configurations will be pretty stable again.

        • Message #19

          Oh, and another quick workaround I just discovered:

          Read the section entitled: "MIDP Record Stores"

          I failed to followup on this, sorry -- as per the article, I uninstalled and then reinstalled new and it was "fixed" so to speak.

          Perhaps we could add the ability to export/import the config settings to an XML file? Maybe that would save to the SD card or internal memory only if we want to stay OS 4.1 and below compatible.

          I'll add a feature request for 0.5 or whatnot.