  | Mailing List | | Home | | Forum Home | | JBoss - Java Application Server | | Tomcat - JSP/Servlet container | | Struts - A MVC web framework | | iText - An open source PDF Java Library | | JDOM - JDOM XML Parser | | JSP - A mailing list about Java Server Pages specification and reference | | J2EE - A mailing list for Java(tm) 2 Platform, Enterprise Edition | | J2EE Pattern - An interest list for Sun Java Center J2EE Pattern Catalog | | Servlet - A mailing list for discussion about Sun Microsystem's Java Servlet API Technology | |
Struts & Hibernate
|
|
|
  | | | Refactor something that 's not quite a Template pattern | Refactor something that 's not quite a Template pattern 2006-08-25 - By Dan Marchant
Back Ah sorry about that I coded it to quick. Update your DAO to take an input for the List.
lCacheList = MiscCodeDao.fetchList(lListKey, pSession);
Then the DAO can select from the appropriate table, etc... maybe even do some dynamic querying if the key doesn't contain any XSS stuff.
- dan
On 8/25/06, snekse <snekse@(protected)> wrote: > That misses a step. I need to split which fetch method it's going to call > if the cached list is null. > > i.e. > > > lCacheList = MiscCodeDao.fetchList_A(pSession); > -OR- > > lCacheList = MiscCodeDao.fetchList_B(pSession); > > > On 8/25/06, Dan Marchant <driedtoast@(protected)> wrote: > > why don't you just do this: > > > > > > > > public static List fetchList(String key, Session pSession) > > throws HibernateException > > { > > String lListKey = key; > > List lCacheList = (List) > getObjectValueOrNull(MISC_LISTS_CACHE > > .get(lListKey)); > > > > if(lCacheList==null) > > { > > lCacheList = MiscCodeDao.fetchList_A(pSession); > > MISC_LISTS_CACHE.put(new > Element(lListKey,lCacheList)); > > } > > return lCacheList; > > } > > > > > > public static List fetchList_A(Session pSession) > > throws HibernateException > > { > > String lListKey = "LIST_A"; > > return fetchList(IListKey,pSession); > > } > > > > public static List fetchList_B(Session pSession) > > throws HibernateException > > { > > String lListKey = "LIST_B"; > > return fetchList(IListKey,pSession); > > } > > > > - dan > > > > On 8/25/06, snekse <snekse@(protected)> wrote: > > > Can anyone point me to a good way to refactor this? Currently these two > > > methods do exactly the same thing, except they use a different param as > the > > > obj key ( lListKey ) and if it's not found in the cache, they need to > call > > > separate methods ( MiscCodeDao.fetch*(..) ) to retrieve the object so it > can > > > put it into the cache. > > > > > > > > > public static List fetchList_A(Session pSession) > > > throws HibernateException > > > { > > > String lListKey = "LIST_A"; > > > List lCacheList = (List) > getObjectValueOrNull(MISC_LISTS_CACHE > > > .get(lListKey)); > > > > > > if(lCacheList==null) > > > { > > > lCacheList = MiscCodeDao.fetchList_A(pSession); > > > MISC_LISTS_CACHE.put(new Element(lListKey,lCacheList)); > > > } > > > return lCacheList; > > > } > > > > > > public static List fetchList_B(Session pSession) > > > throws HibernateException > > > { > > > String lListKey = "LIST_B"; > > > List lCacheList = (List) > > > getObjectValueOrNull(MISC_LISTS_CACHE.get(lListKey)); > > > > > > if(lCacheList==null) > > > { > > > lCacheList = MiscCodeDao.fetchList_B(pSession); > > > MISC_LISTS_CACHE.put(new Element(lListKey,lCacheList)); > > > } > > > return lCacheList; > > > } > > > > > > The reason I want to refactor this is because we are going to have 10-20 > > > list stored in the cache. Here's the rub: I need to avoid hardcoding a > > > string for the method name (i.e. > > > invokeMethod("fetchList_A",MiscCodeDao.class, paramArray) ). We've found > > > issues with refactoring when the method names are hardcoded as a String > > > variable. If possible, I'd also like to avoid a switch as well ( i.e. > > > fetchList("LIST_A") ) > > > > > > Any thoughts? > > > > > > Thanks, > > > snekse > > > > ==================================================================== > > > Companion Site: http://www.corej2eepatterns.com J2EE BluePrints: > > > http://java.sun.com/blueprints/corej2eepatterns List > > > Archive: > > > > http://archives.java.sun.com/archives/j2eepatterns-interest.html > > > Unsubscribing: email "signoff J2EEPATTERNS-INTEREST" to > > > listserv@(protected) > > > > > ==================================================================== > > Companion Site: http://www.corej2eepatterns.com > > J2EE BluePrints: > http://java.sun.com/blueprints/corej2eepatterns > > List Archive: > http://archives.java.sun.com/archives/j2eepatterns-interest.html > > Unsubscribing: email "signoff J2EEPATTERNS-INTEREST" to > listserv@(protected) > > > > ==================================================================== > Companion Site: http://www.corej2eepatterns.com J2EE BluePrints: > http://java.sun.com/blueprints/corej2eepatterns List > Archive: > http://archives.java.sun.com/archives/j2eepatterns-interest.html > Unsubscribing: email "signoff J2EEPATTERNS-INTEREST" to > listserv@(protected)
==================================================================== Companion Site: http://www.corej2eepatterns.com J2EE BluePrints: http://java.sun.com/blueprints/corej2eepatterns List Archive: http://archives.java.sun.com/archives/j2eepatterns-interest.html Unsubscribing: email "signoff J2EEPATTERNS-INTEREST" to listserv@(protected)
|
|
 |