Author: johnh
Date: Wed Aug 27 18:16:19 2008
New Revision: 689691
URL: http://svn.apache.org/viewvc?rev=689691&view=rev
Log:
Slight clean-up of recently-submitted refactoring of
CachingWebRetrievalFactory. The name is already
a bad one, but the method signatures can be cleaned up a bit, and are.
fetchFromWeb is now retrieveRawObject,
and the cache key type is templatized.
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/AbstractMessageBundleFactory.java
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetSpecFactory.java
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicMessageBundleFactory.java
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/CachingWebRetrievalFactory.java
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/AbstractMessageBundleFactory.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/AbstractMessageBundleFactory.java?rev=689691&r1=689690&r2=689691&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/AbstractMessageBundleFactory.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/AbstractMessageBundleFactory.java
Wed Aug 27 18:16:19 2008
@@ -30,7 +30,7 @@
* delegates caching and network retrieval to concreate implementations.
*/
public abstract class AbstractMessageBundleFactory
- extends CachingWebRetrievalFactory<MessageBundle, LocaleSpec>
+ extends CachingWebRetrievalFactory<MessageBundle, LocaleSpec, URI>
implements MessageBundleFactory {
protected AbstractMessageBundleFactory(CacheProvider cacheProvider,
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetSpecFactory.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetSpecFactory.java?rev=689691&r1=689690&r2=689691&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetSpecFactory.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetSpecFactory.java
Wed Aug 27 18:16:19 2008
@@ -37,13 +37,15 @@
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
+import java.util.logging.Logger;
/**
* Basic implementation of a gadget spec factory.
*/
@Singleton
-public class BasicGadgetSpecFactory extends
CachingWebRetrievalFactory<GadgetSpec, URI>
+public class BasicGadgetSpecFactory extends
CachingWebRetrievalFactory<GadgetSpec, URI, URI>
implements GadgetSpecFactory {
+ static final Logger logger =
Logger.getLogger(BasicGadgetSpecFactory.class.getName());
private final HttpFetcher fetcher;
private final ContentRewriterRegistry rewriterRegistry;
@@ -53,6 +55,11 @@
protected URI getCacheKeyFromQueryObj(URI queryObj) {
return queryObj;
}
+
+ @Override
+ protected Logger getLogger() {
+ return logger;
+ }
public GadgetSpec getGadgetSpec(GadgetContext context) throws
GadgetException {
return getGadgetSpec(context.getUrl(), context.getIgnoreCache());
@@ -69,7 +76,7 @@
* Retrieves a gadget specification from the Internet, processes its views
and
* adds it to the cache.
*/
- protected FetchedObject<GadgetSpec> fetchFromWeb(URI url, boolean
ignoreCache)
+ protected FetchedObject<GadgetSpec> retrieveRawObject(URI url, boolean
ignoreCache)
throws GadgetException {
HttpRequest request = new
HttpRequest(Uri.fromJavaUri(url)).setIgnoreCache(ignoreCache);
HttpResponse response = fetcher.fetch(request);
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicMessageBundleFactory.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicMessageBundleFactory.java?rev=689691&r1=689690&r2=689691&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicMessageBundleFactory.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicMessageBundleFactory.java
Wed Aug 27 18:16:19 2008
@@ -31,17 +31,18 @@
import com.google.inject.name.Named;
import java.net.URI;
+import java.util.logging.Logger;
/**
* Basic implementation of a message bundle factory.
*/
@Singleton
public class BasicMessageBundleFactory extends AbstractMessageBundleFactory {
-
+ static final Logger logger =
Logger.getLogger(BasicMessageBundleFactory.class.getName());
private final HttpFetcher fetcher;
@Override
- protected FetchedObject<MessageBundle> fetchFromWeb(LocaleSpec locale,
+ protected FetchedObject<MessageBundle> retrieveRawObject(LocaleSpec locale,
boolean ignoreCache) throws GadgetException {
URI url = locale.getMessages();
HttpRequest request = new
HttpRequest(Uri.fromJavaUri(url)).setIgnoreCache(ignoreCache);
@@ -60,6 +61,11 @@
protected URI getCacheKeyFromQueryObj(LocaleSpec queryObj) {
return queryObj.getMessages();
}
+
+ @Override
+ protected Logger getLogger() {
+ return logger;
+ }
protected MessageBundle fetchBundle(LocaleSpec locale, boolean ignoreCache)
throws GadgetException {
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/CachingWebRetrievalFactory.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/CachingWebRetrievalFactory.java?rev=689691&r1=689690&r2=689691&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/CachingWebRetrievalFactory.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/CachingWebRetrievalFactory.java
Wed Aug 27 18:16:19 2008
@@ -18,20 +18,19 @@
*/
package org.apache.shindig.gadgets;
-import java.net.URI;
import java.util.logging.Logger;
import org.apache.shindig.common.cache.Cache;
import org.apache.shindig.common.cache.CacheProvider;
import org.apache.shindig.gadgets.GadgetException;
-public abstract class CachingWebRetrievalFactory<T, Q> {
+public abstract class CachingWebRetrievalFactory<T, Q, K> {
// Subclasses must override these.
- protected abstract FetchedObject<T> fetchFromWeb(Q queryObj, boolean
ignoreCache) throws GadgetException;
- protected abstract URI getCacheKeyFromQueryObj(Q queryObj);
+ protected abstract FetchedObject<T> retrieveRawObject(Q queryObj, boolean
ignoreCache) throws GadgetException;
+ protected abstract K getCacheKeyFromQueryObj(Q queryObj);
+ protected abstract Logger getLogger();
- private static final Logger logger =
Logger.getLogger(CachingWebRetrievalFactory.class.getName());
- private final Cache<URI, TimeoutPair<T>> cache;
+ private final Cache<K, TimeoutPair<T>> cache;
private final long minTtl, maxTtl;
protected CachingWebRetrievalFactory(CacheProvider cacheProvider,
@@ -48,7 +47,7 @@
T resultObj = null;
long expiration = -1;
- URI cacheKey = getCacheKeyFromQueryObj(queryObj);
+ K cacheKey = getCacheKeyFromQueryObj(queryObj);
synchronized(cache) {
TimeoutPair<T> cachedEntry = cache.getElement(cacheKey);
@@ -68,7 +67,7 @@
if (resultObj == null) {
throw e;
} else {
- logger.info("Object fetch failed for " + cacheKey + " - using
cached ");
+ getLogger().info("Object fetch failed for " + cacheKey + " - using
cached ");
// Try again later...
synchronized (cache) {
cache.addElement(cacheKey, new TimeoutPair<T>(resultObj, now +
minTtl));
@@ -81,7 +80,7 @@
}
private T fetchObjectAndCache(Q queryObj, boolean ignoreCache) throws
GadgetException {
- FetchedObject<T> fetched = fetchFromWeb(queryObj, ignoreCache);
+ FetchedObject<T> fetched = retrieveRawObject(queryObj, ignoreCache);
long now = System.currentTimeMillis();
long expiration = fetched.expirationTime;