You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by et...@apache.org on 2008/09/19 19:10:00 UTC
svn commit: r697154 - in /incubator/shindig/trunk/java/gadgets/src:
main/java/org/apache/shindig/gadgets/
main/java/org/apache/shindig/gadgets/servlet/
test/java/org/apache/shindig/gadgets/
test/java/org/apache/shindig/gadgets/servlet/
Author: etnu
Date: Fri Sep 19 10:09:59 2008
New Revision: 697154
URL: http://svn.apache.org/viewvc?rev=697154&view=rev
Log:
Moving UrlGenerator into gadgets and out of servlet; extracting interface for easier extension.
Added:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultUrlGenerator.java
- copied, changed from r697024, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/UrlGenerator.java
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/UrlGenerator.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultUrlGeneratorTest.java
- copied, changed from r697024, incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/UrlGeneratorTest.java
Removed:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/UrlGenerator.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/UrlGeneratorTest.java
Modified:
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTask.java
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcHandler.java
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ServletTestFixture.java
Copied: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultUrlGenerator.java (from r697024, incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/UrlGenerator.java)
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultUrlGenerator.java?p2=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultUrlGenerator.java&p1=incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/UrlGenerator.java&r1=697024&r2=697154&rev=697154&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/UrlGenerator.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/DefaultUrlGenerator.java Fri Sep 19 10:09:59 2008
@@ -16,16 +16,10 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.shindig.gadgets.servlet;
+package org.apache.shindig.gadgets;
import org.apache.shindig.common.util.HashUtil;
import org.apache.shindig.common.util.Utf8UrlCoder;
-import org.apache.shindig.gadgets.Gadget;
-import org.apache.shindig.gadgets.GadgetContext;
-import org.apache.shindig.gadgets.GadgetFeature;
-import org.apache.shindig.gadgets.GadgetFeatureRegistry;
-import org.apache.shindig.gadgets.JsLibrary;
-import org.apache.shindig.gadgets.UserPrefs;
import org.apache.shindig.gadgets.spec.GadgetSpec;
import org.apache.shindig.gadgets.spec.UserPref;
import org.apache.shindig.gadgets.spec.View;
@@ -38,32 +32,38 @@
import java.util.regex.Pattern;
/**
- * Generates urls for various public entrypoints
+ * Default url generator. Produces js urls that include checksums for cache-busting.
+ *
+ * TODO: iframe and js url generation are two distinct things, and should probably be different
+ * interfaces.
*/
@Singleton
-public class UrlGenerator {
-
+public class DefaultUrlGenerator implements UrlGenerator {
+ private final static Pattern ALLOWED_FEATURE_NAME = Pattern.compile("[0-9a-zA-Z\\.\\-]+");
private final String jsPrefix;
private final String iframePrefix;
private final String jsChecksum;
- private final static Pattern ALLOWED_FEATURE_NAME
- = Pattern.compile("[0-9a-zA-Z\\.\\-]+");
- /**
- * @param features The list of features that js is needed for.
- * @return The url for the bundled javascript that includes all referenced
- * feature libraries.
- */
- public String getBundledJsUrl(Collection<String> features,
- GadgetContext context) {
+ @Inject
+ public DefaultUrlGenerator(@Named("shindig.urls.iframe.prefix") String iframePrefix,
+ @Named("shindig.urls.js.prefix") String jsPrefix,
+ GadgetFeatureRegistry registry) {
+ this.iframePrefix = iframePrefix;
+ this.jsPrefix = jsPrefix;
+
+ StringBuilder jsBuf = new StringBuilder();
+ for (GadgetFeature feature : registry.getAllFeatures()) {
+ for (JsLibrary library : feature.getJsLibraries(null, null)) {
+ jsBuf.append(library.getContent());
+ }
+ }
+ jsChecksum = HashUtil.checksum(jsBuf.toString().getBytes());
+ }
+
+ public String getBundledJsUrl(Collection<String> features, GadgetContext context) {
return jsPrefix + getBundledJsParam(features, context);
}
- /**
- * @param features
- * @param context
- * @return The bundled js parameter for type=url gadgets.
- */
public String getBundledJsParam(Collection<String> features, GadgetContext context) {
StringBuilder buf = new StringBuilder();
boolean first = false;
@@ -87,11 +87,8 @@
}
/**
- * Generates iframe urls for meta data service.
- * Use this rather than generating your own urls by hand.
- *
- * @param gadget
- * @return The generated iframe url.
+ * TODO: This is in need of a rewrite most likely. It doesn't even take locked domain into
+ * consideration!
*/
public String getIframeUrl(Gadget gadget) {
StringBuilder buf = new StringBuilder();
@@ -153,20 +150,4 @@
return buf.toString();
}
-
- @Inject
- public UrlGenerator(@Named("shindig.urls.iframe.prefix") String iframePrefix,
- @Named("shindig.urls.js.prefix") String jsPrefix,
- GadgetFeatureRegistry registry) {
- this.iframePrefix = iframePrefix;
- this.jsPrefix = jsPrefix;
-
- StringBuilder jsBuf = new StringBuilder();
- for (GadgetFeature feature : registry.getAllFeatures()) {
- for (JsLibrary library : feature.getJsLibraries(null, null)) {
- jsBuf.append(library.getContent());
- }
- }
- jsChecksum = HashUtil.checksum(jsBuf.toString().getBytes());
- }
-}
+}
\ No newline at end of file
Added: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/UrlGenerator.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/UrlGenerator.java?rev=697154&view=auto
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/UrlGenerator.java (added)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/UrlGenerator.java Fri Sep 19 10:09:59 2008
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.shindig.gadgets;
+
+import com.google.inject.ImplementedBy;
+
+import java.util.Collection;
+
+/**
+ * Generates urls for various public entrypoints
+ */
+@ImplementedBy(DefaultUrlGenerator.class)
+public interface UrlGenerator {
+ /**
+ * @param features The list of features that js is needed for.
+ * @return The url for the bundled javascript that includes all referenced feature libraries.
+ */
+ String getBundledJsUrl(Collection<String> features, GadgetContext context);
+
+ /**
+ * @param features
+ * @param context
+ * @return The bundled js parameter for type=url gadgets.
+ */
+ String getBundledJsParam(Collection<String> features, GadgetContext context);
+
+ /**
+ * Generates iframe urls for meta data service.
+ * Use this rather than generating your own urls by hand.
+ *
+ * @return The generated iframe url.
+ */
+ String getIframeUrl(Gadget gadget);
+}
Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTask.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTask.java?rev=697154&r1=697153&r2=697154&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTask.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetRenderingTask.java Fri Sep 19 10:09:59 2008
@@ -32,6 +32,7 @@
import org.apache.shindig.gadgets.JsLibrary;
import org.apache.shindig.gadgets.LockedDomainService;
import org.apache.shindig.gadgets.MessageBundleFactory;
+import org.apache.shindig.gadgets.DefaultUrlGenerator;
import org.apache.shindig.gadgets.http.HttpResponse;
import org.apache.shindig.gadgets.spec.Feature;
import org.apache.shindig.gadgets.spec.LocaleSpec;
@@ -93,7 +94,7 @@
private final ContainerConfig containerConfig;
- private final UrlGenerator urlGenerator;
+ private final DefaultUrlGenerator urlGenerator;
private GadgetContext context;
@@ -560,7 +561,7 @@
MessageBundleFactory messageBundleFactory,
GadgetFeatureRegistry registry,
ContainerConfig containerConfig,
- UrlGenerator urlGenerator,
+ DefaultUrlGenerator urlGenerator,
LockedDomainService lockedDomainService) {
this.server = server;
this.messageBundleFactory = messageBundleFactory;
Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcHandler.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcHandler.java?rev=697154&r1=697153&r2=697154&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcHandler.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/JsonRpcHandler.java Fri Sep 19 10:09:59 2008
@@ -22,6 +22,7 @@
import org.apache.shindig.gadgets.GadgetContext;
import org.apache.shindig.gadgets.GadgetException;
import org.apache.shindig.gadgets.GadgetServer;
+import org.apache.shindig.gadgets.DefaultUrlGenerator;
import org.apache.shindig.gadgets.spec.GadgetSpec;
import org.apache.shindig.gadgets.spec.LinkSpec;
import org.apache.shindig.gadgets.spec.ModulePrefs;
@@ -52,7 +53,7 @@
private final ExecutorService executor;
private final GadgetServer server;
- private final UrlGenerator urlGenerator;
+ private final DefaultUrlGenerator urlGenerator;
/**
* Processes a JSON request.
@@ -221,7 +222,7 @@
@Inject
public JsonRpcHandler(ExecutorService executor, GadgetServer server,
- UrlGenerator iframeUrlGenerator) {
+ DefaultUrlGenerator iframeUrlGenerator) {
this.executor = executor;
this.server = server;
this.urlGenerator = iframeUrlGenerator;
Copied: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultUrlGeneratorTest.java (from r697024, incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/UrlGeneratorTest.java)
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultUrlGeneratorTest.java?p2=incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultUrlGeneratorTest.java&p1=incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/UrlGeneratorTest.java&r1=697024&r2=697154&rev=697154&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/UrlGeneratorTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/DefaultUrlGeneratorTest.java Fri Sep 19 10:09:59 2008
@@ -16,21 +16,17 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.shindig.gadgets.servlet;
+package org.apache.shindig.gadgets;
import static org.easymock.EasyMock.expect;
-import com.google.common.collect.Maps;
+import org.apache.shindig.gadgets.spec.GadgetSpec;
-import junitx.framework.StringAssert;
+import com.google.common.collect.Maps;
import org.apache.commons.lang.StringEscapeUtils;
-import org.apache.shindig.gadgets.Gadget;
-import org.apache.shindig.gadgets.GadgetContext;
-import org.apache.shindig.gadgets.GadgetTestFixture;
-import org.apache.shindig.gadgets.JsLibrary;
-import org.apache.shindig.gadgets.UserPrefs;
-import org.apache.shindig.gadgets.spec.GadgetSpec;
+
+import junitx.framework.StringAssert;
import java.net.URI;
import java.util.ArrayList;
@@ -40,9 +36,9 @@
import java.util.Map;
/**
- * Tests for UrlGenerator.
+ * Tests for DefaultUrlGenerator.
*/
-public class UrlGeneratorTest extends GadgetTestFixture {
+public class DefaultUrlGeneratorTest extends GadgetTestFixture {
private final static String IFR_PREFIX = "shindig/eye-frame?";
private final static String JS_PREFIX = "get-together/livescript/";
private final static String SPEC_URL = "http://example.org/gadget.xml";
@@ -58,11 +54,11 @@
private final static int MODULE_ID = 3435;
private final GadgetContext context = mock(GadgetContext.class);
- private UrlGenerator realUrlGenerator;
+ private DefaultUrlGenerator realUrlGenerator;
@Override
public void setUp() throws Exception {
- realUrlGenerator = new UrlGenerator(IFR_PREFIX, JS_PREFIX, registry);
+ realUrlGenerator = new DefaultUrlGenerator(IFR_PREFIX, JS_PREFIX, registry);
expect(context.getContainer()).andReturn(CONTAINER).anyTimes();
expect(context.getUrl()).andReturn(URI.create(SPEC_URL)).anyTimes();
@@ -151,7 +147,7 @@
GadgetSpec spec = new GadgetSpec(URI.create(SPEC_URL), xml);
replay();
Gadget gadget = new Gadget(context, spec, Collections.<JsLibrary>emptyList(), containerConfig, null);
-
+
URI iframeUrl = URI.create(realUrlGenerator.getIframeUrl(gadget));
assertEquals(TYPE_URL_HREF_HOST, iframeUrl.getAuthority());
Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ServletTestFixture.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ServletTestFixture.java?rev=697154&r1=697153&r2=697154&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ServletTestFixture.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ServletTestFixture.java Fri Sep 19 10:09:59 2008
@@ -24,6 +24,7 @@
import org.apache.shindig.common.util.DateUtil;
import org.apache.shindig.gadgets.GadgetTestFixture;
import org.apache.shindig.gadgets.LockedDomainService;
+import org.apache.shindig.gadgets.DefaultUrlGenerator;
import org.apache.commons.lang.StringUtils;
@@ -42,7 +43,7 @@
public final HttpServletResponseRecorder recorder = new HttpServletResponseRecorder(response);
public final GadgetRenderingTask gadgetRenderer;
public final JsonRpcHandler jsonRpcHandler;
- public final UrlGenerator urlGenerator = mock(UrlGenerator.class);
+ public final DefaultUrlGenerator urlGenerator = mock(DefaultUrlGenerator.class);
public final LockedDomainService lockedDomainService = mock(LockedDomainService.class);
private final long testStartTime = timeSource.currentTimeMillis();