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();