RE: problems with recent change in TemplateModel....
Stefan Armbruster <[email protected]>
| Newsgroups | gmane.comp.java.enhydra.barracuda.general |
|---|---|
| Message-ID | <[email protected]> |
Hi Christian, my contrib works so far. Some parts of my code uses Diez' contrib (Repopulation & IterativeListModel), so I suppose this one works too. Regards, Stefan Am Fre, 2003-03-07 um 21.41 schrieb Christian Cryder: > Ok, this is done! I believe I have all the changes properly applied, > but I'm not sure how to test the contrib stuff...Diez and > Steven...could you guys update from cvs and confirm/deny whether > things still work there? > > You can see exactly what I changed by searching for //csc_030703.1 > > All the unit tests work, and I have rebuilt the jars. > > THanks, > Christian > ---------------------------------------------- > Christian Cryder [[email protected]] > Internet Architect, ATMReports.com > Barracuda - http://barracudamvc.org > ---------------------------------------------- > "Coffee? I could quit anytime, just not today" > -----Original Message----- > From: [email protected] > [mailto:[email protected]]On Behalf Of Jacob > Kjome > Sent: Friday, March 07, 2003 9:24 AM > To: [email protected] > Subject: RE: [Barracuda] problems with recent change in > TemplateModel.... > > > Hi Christian, > > If you want to go ahead and make the necessary changes, that > would be great. I agree that having both getItem() methods in > the interface confuses things. This was just a short term > solution to get everything compiling and working properly > until we deciding to fix things. > > To do a clean rebuild of the contrib stuff without recompiling > everything else do..... > > ant contrib -Dclean.contrib=true -Dsubskip=true > > to clean everything do... > > ant superclean contrib -Dsubproject=all -Dsubtarget=superclean > > That will clean Barracuda, Build Barracuda + contrib, and then > clean up each of the contrib projects > > to install the contrib projects to Tomcat to verify that they > work after changes do... > > ant contrib -Dsubproject=all -Dsubtarget=catalina-install > > > later, > > Jake > > At 08:21 AM 3/7/2003 -0500, you wrote: > > Hi Jake! > > > > My bad. I forgot to check the contrib directory. What I'd > > like to do is completely remove the getItem(String key) > > method, simply because it complicates the interface - it > > really should have been getItem(TemplateDirective td) from > > the beginning. I'm concerned that if we leave it folks will > > look at the interface and go "do I need to implement > > both???" > > > > All that should be required is to change the signature in > > any classes that implement TemplateModel. So instead of > > this: > > > > public Object getItem(String key) > > ... > > > > they'd do this: > > > > public Object getITem(TemplateDirective td) > > String key = td.getKeyName(); > > ... > > > > pretty straightforward and easy to do. I'd be happy to make > > the change to all the contrib code if you'd like, since its > > my change that is causing the trouble. > > > > Alternatively, any code that implements TemplateModel could > > be modified to extend from AbstractTemplateModel, and all > > should be well that way too. > > > > Of course, any classes that utilize TemplateModel from above > > (like TemplateHelper, or in Diez' case, FilterFactory) have > > to be modified as well. Again, these are relatively trivial > > changes, but they are changes nonetheless. > > > > So let me know what you think - I'd really like to just get > > to the one new getItem() method, as opposed to two. However, > > I also realize that my change as I made it yesterday does in > > fact break some existing code (which is never good ;-) so > > I'd be happy to help fix the mess. Or if you are comfortable > > making the changes to the contrib package, we could do it > > that way too. > > > > My guess is that outside of the Barracuda framework, there > > aren't too many people out there actually implementing > > TemplateModel directly. > > > > Christian > > > > > > > > > > > > ---------------------------------------------- > > Christian Cryder [[email protected]] > > Internet Architect, ATMReports.com > > Barracuda - http://barracudamvc.org > > ---------------------------------------------- > > "Coffee? I could quit anytime, just not today" > > > > > > -----Original Message----- > > > > From: [email protected] > > [mailto:[email protected]]On Behalf > > Of Jacob Kjome > > > > Sent: Thursday, March 06, 2003 10:49 PM > > > > To: [email protected] > > > > Subject: [Barracuda] problems with recent change in > > TemplateModel.... > > > > > > > > Hi Christian, > > > > > > I noticed that you modified TemplateModel to take a > > TemplateDirective in getItem(). > > > > > > You said this... > > > > > > Log message: > > > > <b>csc_030603.2</b> - changed the signature > > of the getItem() method in the > > > > TemplateModel interface from: > > > > getItem(String key) > > > > to: > > > > getItem(TemplateDirective td) > > > > This gives the model implementation access > > to the full TemplateDirective, and opens > > > > up some interesting pattern opportunities > > based on the key data portion of directives > > > > (rather than on a naming convention applied > > to key name, which was the only option > > > > available before). While changing the > > signature might seem like it will have a big impact > > > > on existing code, I don't think it will do > > so because AbstractTemplateModel implements > > > > this method and simply calls the old > > getItem(String key) method. So old code should > > > > continue to work, but it you want to > > implement something under the new signature, you > > > > certainly can. The only caveat is that if > > you implement this new method directly, you > > > > should make sure you call super.getItem() > > for TemplateDirectives that go unhandled. > > > > or are still handled in the old > > getItem(String key) method. > > > > > > but it results in the following errors in the > > contrib projects and that doesn't even include the > > contrib webapps, that's just the main contrib > > package.... > > > > > > compile.contrib: > > > > [javac] Compiling 4 source files to > > D:\myclasses\Repository\Enhydra\Barracud > > > > aMVC_2003-02-17\Barracuda\WEB-INF\classes > > > > [javac] > > D:\myclasses\Repository\Enhydra\BarracudaMVC_2003-02-17\Barracuda\sr > > > > c\org\enhydra\barracuda\contrib\dbroggisch\display\filters\FilterFactory.java:46 > > > > 8: > > getItem(org.enhydra.barracuda.core.comp.TemplateDirective) in org.enhydra.bar > > > > racuda.core.comp.TemplateModel cannot be applied to > > (java.lang.String) > > > > [javac] > > res.setItem((String)entry.getValue(), ltm.getIte > > > > m((String)entry.getKey())); > > > > > > [javac] ^ > > > > [javac] > > D:\myclasses\Repository\Enhydra\BarracudaMVC_2003-02-17\Barracuda\sr > > > > c\org\enhydra\barracuda\contrib\dbroggisch\display\filters\FilterFactory.java:47 > > > > 8: > > getItem(org.enhydra.barracuda.core.comp.TemplateDirective) in org.enhydra.bar > > > > racuda.core.comp.TemplateModel cannot be applied to > > (java.lang.String) > > > > [javac] > > res.setItem(key, f.filter(ltm.getItem(ke > > > > y), ctx)); > > > > > > [javac] ^ > > > > [javac] > > D:\myclasses\Repository\Enhydra\BarracudaMVC_2003-02-17\Barracuda\sr > > > > c\org\enhydra\barracuda\contrib\dbroggisch\display\filters\FilterFactory.java:48 > > > > 3: > > getItem(org.enhydra.barracuda.core.comp.TemplateDirective) in org.enhydra.bar > > > > racuda.core.comp.TemplateModel cannot be applied to > > (java.lang.String) > > > > [javac] > > res.setItem(key, ltm.getItem(key)); > > > > > > [javac] ^ > > > > [javac] > > D:\myclasses\Repository\Enhydra\BarracudaMVC_2003-02-17\Barracuda\sr > > > > c\org\enhydra\barracuda\contrib\dbroggisch\repopulation\RepopulationFormMap.java > > > > :38: > > org.enhydra.barracuda.contrib.dbroggisch.repopulation.RepopulationFormMap s > > > > hould be declared abstract; it does not define > > getItem(org.enhydra.barracuda.cor > > > > e.comp.TemplateDirective) in > > org.enhydra.barracuda.contrib.dbroggisch.repopulati > > > > on.RepopulationFormMap > > > > [javac] public class RepopulationFormMap extends > > ErrorFormMap implements Tem > > > > plateModel { > > > > [javac] ^ > > > > [javac] > > D:\myclasses\Repository\Enhydra\BarracudaMVC_2003-02-17\Barracuda\sr > > > > c\org\enhydra\barracuda\contrib\sam\models\MapDecorator.java:23: org.enhydra.bar > > > > racuda.contrib.sam.models.MapDecorator should be > > declared abstract; it does not > > > > define > > getItem(org.enhydra.barracuda.core.comp.TemplateDirective) in org.enhydra > > > > .barracuda.core.comp.TemplateModel > > > > [javac] public class MapDecorator extends > > TemplateModelDecorator { > > > > [javac] ^ > > > > [javac] > > D:\myclasses\Repository\Enhydra\BarracudaMVC_2003-02-17\Barracuda\sr > > > > c\org\enhydra\barracuda\contrib\sam\models\MapDecorator.java:63: getItem(org.enh > > > > ydra.barracuda.core.comp.TemplateDirective) in > > org.enhydra.barracuda.core.comp.T > > > > emplateModel cannot be applied to (java.lang.String) > > > > [javac] Object value = > > _templateModel.getItem(key); > > > > [javac] ^ > > > > [javac] > > D:\myclasses\Repository\Enhydra\BarracudaMVC_2003-02-17\Barracuda\sr > > > > c\org\enhydra\barracuda\contrib\sam\models\MapDecorator.java:75: getItem(org.enh > > > > ydra.barracuda.core.comp.TemplateDirective) in > > org.enhydra.barracuda.core.comp.T > > > > emplateModel cannot be applied to (java.lang.String) > > > > [javac] value=mapItemAsLookup(key, > > _templateModel.getItem(key), > > > > (Map)mapper ); > > > > > > [javac] ^ > > > > [javac] > > D:\myclasses\Repository\Enhydra\BarracudaMVC_2003-02-17\Barracuda\sr > > > > c\org\enhydra\barracuda\contrib\sam\models\MapDecorator.java:77: getItem(org.enh > > > > ydra.barracuda.core.comp.TemplateDirective) in > > org.enhydra.barracuda.core.comp.T > > > > emplateModel cannot be applied to (java.lang.String) > > > > [javac] > > value=mapItemAsNumberFormat(key, > > _templateModel.getItem( > > > > key), (NumberFormat)mapper ); > > > > > > [javac] ^ > > > > [javac] > > D:\myclasses\Repository\Enhydra\BarracudaMVC_2003-02-17\Barracuda\sr > > > > c\org\enhydra\barracuda\contrib\sam\models\MapDecorator.java:79: getItem(org.enh > > > > ydra.barracuda.core.comp.TemplateDirective) in > > org.enhydra.barracuda.core.comp.T > > > > emplateModel cannot be applied to (java.lang.String) > > > > [javac] > > value=mapItemAsDateFormat(key, > > _templateModel.getItem(ke > > > > y), (DateFormat)mapper ); > > > > > > [javac] ^ > > > > [javac] > > D:\myclasses\Repository\Enhydra\BarracudaMVC_2003-02-17\Barracuda\sr > > > > c\org\enhydra\barracuda\contrib\sam\models\MapDecorator.java:81: getItem(org.enh > > > > ydra.barracuda.core.comp.TemplateDirective) in > > org.enhydra.barracuda.core.comp.T > > > > emplateModel cannot be applied to (java.lang.String) > > > > [javac] value=mapItemAsEvent(key, > > _templateModel.getItem(key), ( > > > > ControlEvent) mapper); > > > > > > [javac] ^ > > > > [javac] > > D:\myclasses\Repository\Enhydra\BarracudaMVC_2003-02-17\Barracuda\sr > > > > c\org\enhydra\barracuda\contrib\sam\models\MapDecorator.java:157: getItem(org.en > > > > hydra.barracuda.core.comp.TemplateDirective) in > > org.enhydra.barracuda.core.comp. > > > > TemplateModel cannot be applied to > > (java.lang.String) > > > > [javac] label = > > (String)_templateModel.getItem(l > > > > abel); > > > > > > [javac] ^ > > > > [javac] > > D:\myclasses\Repository\Enhydra\BarracudaMVC_2003-02-17\Barracuda\sr > > > > c\org\enhydra\barracuda\contrib\sam\models\MapDecorator.java:176: getItem(org.en > > > > hydra.barracuda.core.comp.TemplateDirective) in > > org.enhydra.barracuda.core.comp. > > > > TemplateModel cannot be applied to > > (java.lang.String) > > > > [javac] v = > > (String) _templateModel.getI > > > > tem( v); > > > > > > [javac] ^ > > > > > > [javac] 12 errors > > > > > > BUILD FAILED > > > > file:D:/myclasses/Repository/Enhydra/BarracudaMVC_2003-02-17/Barracuda/src/build > > > > -contrib.xml:84: Compile failed; see the compiler > > error output for details. > > > > > > > > I'm afraid that this might be a big deal to some > > people. If this is going to be the way it is and it > > provides benefits that outweigh the pain of fixing > > all these errors, then I'm fine with the change, but > > I want to make sure that this is what we want before > > I start trying to fix the contrib and my other apps. > > > > > > Jake