Thread: [Squirrel-sql-develop] question about StringManagerFactory's Map
A Java SQL client for any JDBC compliant database
Brought to you by:
colbell,
gerdwagner
From: pjsong <pjs...@16...> - 2007-05-28 14:03:02
|
RmlsZSBTdHJpbmdNYW5hZ2VyRmFjdG9yeSBoYXMgYSBtZW1iZXIgc19tZ3JzICwgaSBrbm93IGl0 J3MgYSBjb2xsZWN0aW9uIG9mIFN0cmluZ01hbmFnZXIgb2JqZWN0cyBrZXllZCBieSBqYXZhcGFj a2FnZSBuYW1lLCBidXQgaSBkb24ndCBrbm93IHdoZW4gdGhpcyBIYXNoTWFwIHdhcyBpbml0aWFs aXplZC4gd2hlbiB0aGUga2V5IGFuZCBpdCdzIHZhbHVlIHdhcyBhZGRlZC4NCnRoeCBhIGxvdC4= |
From: Robert M. <rob...@gm...> - 2007-05-28 14:33:57
|
On 5/28/07, pjsong <pjs...@16...> wrote: > File StringManagerFactory has a member s_mgrs , i know it's a collection of StringManager objects keyed by javapackage name, but i don't know when this HashMap was initialized. when the key and it's value was added. The StringManager for a given package is initialized when the first class in that package is statically initialized if the class has a class variable declared such as : private static final StringManager s_stringMgr = StringManagerFactory.getStringManager(<class>) Search the source code for the variable named s_stringMgr - you will find many examples. Rob |
From: Robert M. <rob...@gm...> - 2007-05-29 02:32:30
|
It's ok. Each class in a package will make this call, but only the first class that is loaded in a given package will cause the key to be stored for a new StringManager for that package. Every class in that package after the first will see that the key is already in the map, so no new StringManager is created. My guess is that somehow your breakpoint occurred after the first class in the package made the call - so the key you were looking was in the map already. Rob On 5/28/07, pjsong <pjs...@16...> wrote: > Sorry i don't get the idea very much. When debugging I have traced from code in class Application > > private static final StringManager s_stringMgr = > StringManagerFactory.getStringManager(<class>) > > to code in class StringManagerFactory > > StringManagerFactory.getStringManager(clazz){} > > Through Watch, I noticed that Map s_mgrs has got its key-value upon debug's entering this call. But there has no one line been executed yet. how s_mgrs get its value? > Thank you very much ! > > > ----- Original Message ----- > From: "Robert Manning" <rob...@gm...> > To: "pjsong" <pjs...@16...> > Cc: <squ...@li...> > Sent: Monday, May 28, 2007 10:33 PM > Subject: (????-??????????)Re: [Squirrel-sql-develop] question about StringManagerFactory's Map > > > > On 5/28/07, pjsong <pjs...@16...> wrote: > > > File StringManagerFactory has a member s_mgrs , i know it's a collection of StringManager objects keyed by javapackage name, but i don't know when this HashMap was initialized. when the key and it's value was added. > > > > The StringManager for a given package is initialized when the first > > class in that package is statically initialized if the class has a > > class variable declared such as : > > > > private static final StringManager s_stringMgr = > > StringManagerFactory.getStringManager(<class>) > > > > Search the source code for the variable named s_stringMgr - you will > > find many examples. > > > > Rob > > |
From: Robert M. <rob...@gm...> - 2007-05-29 10:15:33
|
On 5/28/07, pjsong <pjs...@16...> wrote: > My breakpoint is set at the very beginning of the main function of the main class . > The first class is Application, is it right ? > Would you accept a screen-copy for more detailed information? > thx a lot. > That is not quite correct; the first class that loads a StringManager is Version.java at line 46 in Main.java. Version is the class that is putting the "...client" package as a key into the s_mgrs map. Set your breakpoints at Main:46 and StringManagerFactory:84. When you hit the one in main, resume and the hit the next one. Then inspect the s_mgrs HashMap - it should be empty at this point. Rob |