You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by ss...@apache.org on 2012/05/15 03:46:38 UTC

svn commit: r1338499 - in /shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend: AllJsFilter.java EndToEndServer.java EndToEndTest.java

Author: ssievers
Date: Tue May 15 01:46:37 2012
New Revision: 1338499

URL: http://svn.apache.org/viewvc?rev=1338499&view=rev
Log:
SHINDIG-1771 | Closure compile all feature JavaScript as part of JUnit execution to ensure no JavaScript errors at build time

Added:
    shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/AllJsFilter.java
Modified:
    shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndServer.java
    shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndTest.java

Added: shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/AllJsFilter.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/AllJsFilter.java?rev=1338499&view=auto
==============================================================================
--- shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/AllJsFilter.java (added)
+++ shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/AllJsFilter.java Tue May 15 01:46:37 2012
@@ -0,0 +1,76 @@
+/*
+ * 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.server.endtoend;
+
+import java.io.IOException;
+import java.util.Set;
+
+import javax.servlet.FilterChain;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.shindig.common.servlet.InjectedFilter;
+import org.apache.shindig.gadgets.GadgetException;
+import org.apache.shindig.gadgets.features.FeatureRegistry;
+import org.apache.shindig.gadgets.features.FeatureRegistryProvider;
+
+import com.google.common.base.Joiner;
+import com.google.inject.Inject;
+
+public class AllJsFilter extends InjectedFilter {
+
+  private String allFeatures;
+
+  @Inject
+  public void setFeatureRegistryProvider(FeatureRegistryProvider provider) {
+    try {
+      FeatureRegistry registry = provider.get(null);
+      Set<String> allFeatureNames = registry.getAllFeatureNames();
+      allFeatures = Joiner.on(':').join(allFeatureNames);
+    } catch (GadgetException e) {
+      e.printStackTrace();
+    }
+  }
+
+  @Override
+  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
+          throws IOException, ServletException {
+    if (!(request instanceof HttpServletRequest && response instanceof HttpServletResponse)) {
+      throw new ServletException("Only HTTP!");
+    }
+
+    HttpServletRequest req = (HttpServletRequest) request;
+    HttpServletResponse resp = (HttpServletResponse) response;
+
+    String requestURI = req.getRequestURI();
+    if (!requestURI.contains("all-features-please.js")) {
+      chain.doFilter(request, response);
+    } else {
+      String newURI = requestURI.replace("all-features-please.js", allFeatures + ".js") + "?" + req.getQueryString();
+      resp.sendRedirect(newURI);
+    }
+  }
+
+  public void destroy() {
+  }
+}
+

Modified: shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndServer.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndServer.java?rev=1338499&r1=1338498&r2=1338499&view=diff
==============================================================================
--- shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndServer.java (original)
+++ shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndServer.java Tue May 15 01:46:37 2012
@@ -170,6 +170,8 @@ public class EndToEndServer {
     ServletHolder jsHolder = new ServletHolder(new JsServlet());
     context.addServlet(jsHolder, JS_BASE);
 
+    context.addFilter(AllJsFilter.class, JS_BASE, 0);
+
     // Attach MakeRequestServlet
     ServletHolder makeRequestHolder = new ServletHolder(new MakeRequestServlet());
     context.addServlet(makeRequestHolder, MAKE_REQUEST_BASE);

Modified: shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndTest.java?rev=1338499&r1=1338498&r2=1338499&view=diff
==============================================================================
--- shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndTest.java (original)
+++ shindig/trunk/java/server/src/test/java/org/apache/shindig/server/endtoend/EndToEndTest.java Tue May 15 01:46:37 2012
@@ -332,6 +332,22 @@ public class EndToEndTest {
     assertEquals("Hello world", paragraph.getTextContent().trim());
   }
 
+
+  @Test
+  public void testJavaScriptCompile() throws Exception {
+    // AllJsFilter will redirect to a url with all features being requested
+    webClient.setRedirectEnabled(true);
+
+    String containerJsUrl = EndToEndServer.SERVER_URL + "/gadgets/js/all-features-please.js?container=default&c=1";
+    String gadgetJsUrl = EndToEndServer.SERVER_URL + "/gadgets/js/all-features-please.js?container=default&c=0";
+
+    Page containerJsPage = webClient.getPage(containerJsUrl);
+    assertEquals(containerJsPage.getWebResponse().getStatusCode(), 200);
+
+    Page gadgetJsPage = webClient.getPage(gadgetJsUrl);
+    assertEquals(gadgetJsPage.getWebResponse().getStatusCode(), 200);
+  }
+
   @BeforeClass
   public static void setUpOnce() throws Exception {
     server = new EndToEndServer();