  | 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 snekse
Back 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)
That misses a step. I need to split which fetch method it's going to call if the cached list is null.<br><br>i.e. <br><br>lCacheList = MiscCodeDao .fetchList_A(pSession);<br>-OR-<br>lCacheList = MiscCodeDao.fetchList_B(pSession ); <br><br><div><span class="gmail_quote">On 8/25/06, <b class="gmail_sendername" >Dan Marchant</b> <<a href="mailto:driedtoast@(protected)">driedtoast@(protected) </a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> why don't you just do this:<br><br><br><br>public static List fetchList(String key, Session pSession)<br> throws HibernateException<br> {<br>   ;String lListKey = key;<br> List lCacheList = (List) getObjectValueOrNull(MISC_LISTS_CACHE <br>.get(lListKey));<br><br> if (lCacheList==null)<br> {<br>  ; lCacheList = MiscCodeDao.fetchList_A(pSession);<br>   ; MISC_LISTS_CACHE.put(new Element(lListKey ,lCacheList));<br> }<br> return lCacheList; <br> }<br><br><br>public static List fetchList_A(Session pSession)<br> throws HibernateException<br> {<br> String lListKey = "LIST_A";<br> return fetchList(IListKey,pSession);<br> }<br> <br> public static List fetchList_B(Session pSession)<br > throws HibernateException<br> { <br> String lListKey = "LIST _B";<br> return fetchList (IListKey,pSession);<br> }<br><br>- dan<br> <br>On 8/25/06, snekse <<a href="mailto:snekse@(protected)">snekse@(protected)< /a>> wrote:<br>> Can anyone point me to a good way to refactor this? Currently these two<br>> methods do exactly the same thing, except they use a different param as the <br>> obj key ( lListKey ) and if it's not found in the cache, they need to call<br>> separate methods ( MiscCodeDao.fetch*(..) ) to retrieve the object so it can<br>> put it into the cache.<br>><br>><br>> public static List fetchList_A(Session pSession) <br>> throws HibernateException<br>> {<br>> String lListKey = "LIST_A";<br>>   ; List lCacheList = (List) getObjectValueOrNull(MISC_LISTS_CACHE<br>> .get(lListKey));<br>><br> > if(lCacheList==null)<br> > {<br>> lCacheList = MiscCodeDao .fetchList_A(pSession);<br>> MISC_LISTS_CACHE.put(new Element(lListKey,lCacheList)); <br>> }<br>> return lCacheList; <br>> }<br>><br>> public static List fetchList_B(Session pSession)<br>>   ; throws HibernateException<br>> {<br>>   ; String lListKey = "LIST_B";<br> > List lCacheList = (List) <br>> getObjectValueOrNull(MISC_LISTS_CACHE.get(lListKey));<br>><br>> if(lCacheList==null)<br>> {<br>> lCacheList = MiscCodeDao .fetchList_B(pSession);<br>> MISC_LISTS_CACHE.put(new Element(lListKey,lCacheList)); <br>> }<br>> return lCacheList;<br>>   ; }<br>><br>> The reason I want to refactor this is because we are going to have 10-20<br>> list stored in the cache. Here's the rub : I need to avoid hardcoding a <br>> string for the method name (i.e.<br>> invokeMethod("fetchList _A",MiscCodeDao.class, paramArray) ). We've found<br>> issues with refactoring when the method names are hardcoded as a String<br>> variable. If possible, I'd also like to avoid a switch as well ( i.e.<br>> fetchList("LIST_A") )<br>><br>> Any thoughts?<br>><br>> Thanks,<br>> snekse<br>> ====================== ==============================================<br>> Companion Site: <a href= "http://www.corej2eepatterns.com"> http://www.corej2eepatterns.com</a> J2EE BluePrints:<br>> <a href="http:/ /java.sun.com/blueprints/corej2eepatterns">http://java.sun.com/blueprints /corej2eepatterns</a> List<br>> Archive:<br>> <a href="http://archives .java.sun.com/archives/j2eepatterns-interest.html"> http://archives.java.sun.com/archives/j2eepatterns-interest.html</a><br>> Unsubscribing: email "signoff J2EEPATTERNS-INTEREST" to<br>> <a href="mailto:listserv@(protected)">listserv@(protected)</a><br><br> ====================================================================<br >Companion Site: <a href="http://www.corej2eepatterns.com">http://www .corej2eepatterns.com</a><br>J2EE BluePrints: <a href="http://java.sun.com /blueprints/corej2eepatterns"> http://java.sun.com/blueprints/corej2eepatterns</a><br>List Archive: <a href= "http://archives.java.sun.com/archives/j2eepatterns-interest.html">http:/ /archives.java.sun.com/archives/j2eepatterns-interest.html</a><br>Unsubscribing: email "signoff J2EEPATTERNS-INTEREST" to <a href="mailto:listserv@(protected)">listserv@(protected)</a><br>< /blockquote></div><br> ==================================================================== 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)
|
|
 |