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));
+ }
+}