You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by jo...@apache.org on 2010/06/23 20:35:47 UTC

svn commit: r957296 - in /shindig/trunk/java/gadgets/src: main/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManager.java test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java

Author: johnh
Date: Wed Jun 23 18:35:47 2010
New Revision: 957296

URL: http://svn.apache.org/viewvc?rev=957296&view=rev
Log:
Forgot to add DefaultAccelUriManager in Gagan Singh's recently supplied patch.


Added:
    shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManager.java
    shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java

Added: shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManager.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManager.java?rev=957296&view=auto
==============================================================================
--- shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManager.java (added)
+++ shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManager.java Wed Jun 23 18:35:47 2010
@@ -0,0 +1,71 @@
+/*
+ * 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.uri;
+
+import com.google.common.collect.ImmutableList;
+import com.google.inject.Inject;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.shindig.common.uri.Uri;
+import org.apache.shindig.config.ContainerConfig;
+import org.apache.shindig.gadgets.Gadget;
+import org.apache.shindig.gadgets.GadgetException;
+import org.apache.shindig.gadgets.rewrite.DomWalker;
+
+/**
+ * Default UriManager for Accel servlet.
+ * TODO: Add support for multiple accel hosts.
+ */
+public class DefaultAccelUriManager implements AccelUriManager {
+  public static final String CONTAINER = "default";
+  final String accelHost;
+  final String accelPath;
+
+  ProxyUriManager proxyUriManager;
+
+  @Inject
+  public DefaultAccelUriManager(ContainerConfig config,
+                                ProxyUriManager proxyUriManager) {
+    this.proxyUriManager = proxyUriManager;
+    accelHost = config.getString(CONTAINER, PROXY_HOST_PARAM);
+    accelPath = config.getString(CONTAINER, PROXY_PATH_PARAM);
+  }
+
+  public Uri parseAndNormalize(Uri requestUri) throws GadgetException {
+    Gadget gadget = DomWalker.makeGadget(requestUri);
+    ProxyUriManager.ProxyUri proxied = looksLikeAccelUri(requestUri) ?
+        proxyUriManager.process(requestUri) : new ProxyUriManager.ProxyUri(
+        gadget, requestUri);
+    return proxyUriManager.make(ImmutableList.of(proxied), 0).get(0);
+  }
+
+  /**
+   * Is the given uri looks like a valid accel uri. If not, it should
+   * definitely be normalized.
+   * @param requestUri The uri to check.
+   * @return True in case the given uri was possibly generated by accel, false
+   *   otherwise.
+   */
+  protected boolean looksLikeAccelUri(Uri requestUri) {
+    return accelHost.equals(requestUri.getAuthority()) &&
+           accelPath.equals(requestUri.getPath()) &&
+           !StringUtils.isEmpty(requestUri.getQueryParameter(
+               UriCommon.Param.URL.getKey()));
+  }
+}

Added: shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java?rev=957296&view=auto
==============================================================================
--- shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java (added)
+++ shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/uri/DefaultAccelUriManagerTest.java Wed Jun 23 18:35:47 2010
@@ -0,0 +1,91 @@
+/*
+ * 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.uri;
+
+import com.google.common.collect.ImmutableMap;
+
+import org.apache.shindig.common.uri.Uri;
+import org.apache.shindig.config.AbstractContainerConfig;
+import org.apache.shindig.config.ContainerConfig;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.Map;
+
+/**
+ * Tests for DefaultAccelUriManager.
+ */
+public class DefaultAccelUriManagerTest {
+  private static class FakeContainerConfig extends AbstractContainerConfig {
+    protected final Map<String, Object> data = ImmutableMap.<String, Object>builder()
+        .put(AccelUriManager.PROXY_HOST_PARAM, "apache.org")
+        .put(AccelUriManager.PROXY_PATH_PARAM, "/gadgets/accel")
+        .build();
+
+    @Override
+    public Object getProperty(String container, String name) {
+      return data.get(name);
+    }
+  }
+
+  DefaultAccelUriManager uriManager;
+
+  @Before
+  public void setUp() throws Exception {
+    ContainerConfig config = new FakeContainerConfig();
+    uriManager = new DefaultAccelUriManager(config, new DefaultProxyUriManager(
+        config, null));
+  }
+
+  @Test
+  public void testParseAndNormalizeNonAccelUri() throws Exception {
+    Uri uri = Uri.parse("http://www.example.org/index.html");
+    assertEquals(Uri.parse("//apache.org/gadgets/accel?container=default"
+                 + "&gadget=http%3A%2F%2Fwww.example.org%2Findex.html"
+                 + "&debug=0&nocache=0&refresh=0"
+                 + "&url=http%3A%2F%2Fwww.example.org%2Findex.html"),
+                 uriManager.parseAndNormalize(uri));
+  }
+
+  @Test
+  public void testParseAndNormalizeAccelUri() throws Exception {
+    Uri uri = Uri.parse("http://apache.org/gadgets/accel?container=proxy"
+                        + "&gadget=http%3A%2F%2Fwww.1.com%2Fa.html"
+                        + "&url=http%3A%2F%2Fwww.example.org%2Findex.html");
+    assertEquals(Uri.parse("//apache.org/gadgets/accel?container=proxy"
+                 + "&gadget=http%3A%2F%2Fwww.1.com%2Fa.html"
+                 + "&debug=0&nocache=0&refresh=0"
+                 + "&url=http%3A%2F%2Fwww.example.org%2Findex.html"),
+                 uriManager.parseAndNormalize(uri));
+  }
+
+  @Test
+  public void testLooksLikeAccelUri() throws Exception {
+    Uri uri = Uri.parse("http://apache.org/gadgets/accel?container=proxy"
+                        + "&gadget=http%3A%2F%2Fwww.1.com%2Fa.html"
+                        + "&url=http%3A%2F%2Fwww.example.org%2Findex.html");
+    assertTrue(uriManager.looksLikeAccelUri(uri));
+
+    uri = Uri.parse("http://www.example.org/index.html");
+    assertFalse(uriManager.looksLikeAccelUri(uri));
+  }
+}