Author: johnh
Date: Tue Jan 15 16:50:11 2008
New Revision: 612327
URL: http://svn.apache.org/viewvc?rev=612327&view=rev
Log:
Check blacklist before loading a gadget spec. Throw a GadgetException
out of the SpecLoadTask if the gadget to be loaded is on the blacklist.
The blacklist is an optional member of GadgetServer.
Patch contributed by: [EMAIL PROTECTED]; last vestige of code moved
from Google repository to svn!
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetException.java
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetServerTest.java
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetException.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetException.java?rev=612327&r1=612326&r2=612327&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetException.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetException.java
Tue Jan 15 16:50:11 2008
@@ -46,7 +46,10 @@
MISSING_SPEC_CACHE,
// Caja error
- MALFORMED_FOR_SAFE_INLINING
+ MALFORMED_FOR_SAFE_INLINING,
+
+ // Blacklisting
+ BLACKLISTED_GADGET
}
private final Code code;
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java?rev=612327&r1=612326&r2=612327&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/GadgetServer.java
Tue Jan 15 16:50:11 2008
@@ -36,6 +36,7 @@
private GadgetDataCache<GadgetSpec> specCache;
private GadgetDataCache<MessageBundle> messageBundleCache;
private RemoteContentFetcher fetcher;
+ private GadgetBlacklist gadgetBlacklist;
private static final Logger logger
= Logger.getLogger("org.apache.shindig.gadgets");
@@ -60,6 +61,10 @@
this.registry = registry;
}
+ public void setGadgetBlacklist(GadgetBlacklist gadgetBlacklist) {
+ this.gadgetBlacklist = gadgetBlacklist;
+ }
+
/**
* Process a single gadget.
* @param gadgetId
@@ -104,8 +109,8 @@
WorkflowDependency urlFetchDep =
new WorkflowDependency(WorkflowDependency.Type.CORE, URL_FETCH);
wc.jobsToRun.addJob(
- new SpecLoadTask(fetcher, gadgetId, userPrefs, specCache), urlFetchDep,
- cacheLoadDep);
+ new SpecLoadTask(fetcher, gadgetId, userPrefs, specCache,
gadgetBlacklist),
+ urlFetchDep, cacheLoadDep);
WorkflowDependency enqueueFeatDep =
new WorkflowDependency(WorkflowDependency.Type.CORE, ENQUEUE_FEATURES);
@@ -290,18 +295,27 @@
private final GadgetView.ID gadgetId;
private final GadgetDataCache<GadgetSpec> specCache;
private final UserPrefs prefs;
+ private final GadgetBlacklist blacklist;
private SpecLoadTask(RemoteContentFetcher fetcher, GadgetView.ID gadgetId,
UserPrefs prefs,
- GadgetDataCache<GadgetSpec> specCache) {
+ GadgetDataCache<GadgetSpec> specCache,
+ GadgetBlacklist blacklist) {
this.fetcher = fetcher;
this.gadgetId = gadgetId;
this.specCache = specCache;
this.prefs = prefs;
+ this.blacklist = blacklist;
}
@Override
public void run(WorkflowContext wc) throws GadgetException {
+ if (blacklist != null && blacklist.isBlacklisted(gadgetId.getURI())) {
+ throw new GadgetException(
+ GadgetException.Code.BLACKLISTED_GADGET,
+ "Gadget blacklisted at: " + gadgetId.getURI());
+ }
+
if (wc.gadget != null) {
// Already retrieved: do nothing.
return;
Modified:
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetServerTest.java
URL:
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetServerTest.java?rev=612327&r1=612326&r2=612327&view=diff
==============================================================================
---
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetServerTest.java
(original)
+++
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/GadgetServerTest.java
Tue Jan 15 16:50:11 2008
@@ -84,4 +84,24 @@
assertEquals("Goodbye, World!", gadget.getContentData());
verify();
}
+
+ public void testBlacklistedGadget() throws Exception {
+ GadgetBlacklist blacklist = mock(GadgetBlacklist.class);
+ gadgetServer.setGadgetBlacklist(blacklist);
+
+ expect(specCache.get(eq(DATETIME_URI_STRING))).andReturn(null);
+ expect(blacklist.isBlacklisted(eq(DATETIME_URI))).andReturn(true);
+ replay();
+
+ try {
+ gadgetServer.processGadget(DATETIME_ID, UserPrefs.EMPTY, EN_US_LOCALE,
+ RenderingContext.GADGET);
+ fail();
+ } catch (GadgetServer.GadgetProcessException ex) {
+ assertEquals(1, ex.getComponents().size());
+ assertEquals(GadgetException.Code.BLACKLISTED_GADGET,
+ ex.getComponents().get(0).getCode());
+ }
+ verify();
+ }
}