javax.enterprise
cdi-api
diff --git a/integration-faces-tests/src/test/java/org/ocpsoft/rewrite/faces/outbound/OutboundResourceTest.java b/integration-faces-tests/src/test/java/org/ocpsoft/rewrite/faces/outbound/OutboundResourceTest.java
new file mode 100644
index 000000000..8832fdda7
--- /dev/null
+++ b/integration-faces-tests/src/test/java/org/ocpsoft/rewrite/faces/outbound/OutboundResourceTest.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2011 Lincoln Baxter, III
+ *
+ * Licensed 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.ocpsoft.rewrite.faces.outbound;
+
+import static org.junit.Assert.assertEquals;
+
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+import org.junit.runner.RunWith;
+import org.ocpsoft.rewrite.category.IgnoreForGlassfish4;
+import org.ocpsoft.rewrite.faces.annotation.RewriteFacesAnnotationsTest;
+import org.ocpsoft.rewrite.test.RewriteTest;
+import org.ocpsoft.rewrite.test.RewriteTestBase;
+
+import com.gargoylesoftware.htmlunit.html.DomElement;
+import com.gargoylesoftware.htmlunit.html.DomNodeList;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import org.ocpsoft.rewrite.config.ConfigurationProvider;
+
+/**
+ * This test doesn't work on Glassfish 4.0 at all. For some reason Glassfish _always_ appends the JSESSIONID, even if
+ * the href just contains JavaScript. This leads to links like this:
+ *
+ *
+ * href = "javascript:void(0);jsessionid=fde6b122b14c03b5ad7dcf4c51b5"
+ *
+ *
+ * This can be reproduced even in a simple sample application without Rewrite.
+ */
+@RunWith(Arquillian.class)
+@Category(IgnoreForGlassfish4.class)
+public class OutboundResourceTest extends RewriteTestBase
+{
+
+ @Deployment(testable = false)
+ public static WebArchive getDeployment()
+ {
+ return RewriteTest.getDeployment()
+ .addAsLibrary(RewriteFacesAnnotationsTest.getRewriteFacesArchive())
+ .addPackages(true, "org.ocpsoft.rewrite.servlet")
+ .addClass(OutboundResourceTestProvider.class)
+ .addAsWebInfResource("faces-config.xml")
+ .addAsWebResource("outbound-resource.css", "resources/test/css/style.css")
+ .addAsWebResource("outbound-resource.xhtml", "outbound.xhtml")
+ .addAsServiceProvider(ConfigurationProvider.class, OutboundResourceTestProvider.class);
+ }
+
+ @Test
+ public void testResourceUrlRewritten() throws Exception
+ {
+ HtmlPage page = getWebClient("/outbound").getPage();
+ DomNodeList stylesheets = page.getElementsByTagName("link");
+ assertEquals(1, stylesheets.size());
+ assertEquals("/css/style.css", stylesheets.get(0).getAttribute("href"));
+ }
+
+}
diff --git a/integration-faces-tests/src/test/java/org/ocpsoft/rewrite/faces/outbound/OutboundResourceTestProvider.java b/integration-faces-tests/src/test/java/org/ocpsoft/rewrite/faces/outbound/OutboundResourceTestProvider.java
new file mode 100644
index 000000000..76f552a0e
--- /dev/null
+++ b/integration-faces-tests/src/test/java/org/ocpsoft/rewrite/faces/outbound/OutboundResourceTestProvider.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2011 Lincoln Baxter, III
+ *
+ * Licensed 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.ocpsoft.rewrite.faces.outbound;
+
+import javax.servlet.ServletContext;
+
+import org.ocpsoft.rewrite.config.Configuration;
+import org.ocpsoft.rewrite.config.ConfigurationBuilder;
+import org.ocpsoft.rewrite.config.Direction;
+import org.ocpsoft.rewrite.servlet.config.DispatchType;
+import org.ocpsoft.rewrite.servlet.config.HttpConfigurationProvider;
+import org.ocpsoft.rewrite.servlet.config.SendStatus;
+import org.ocpsoft.rewrite.servlet.config.rule.Join;
+
+/**
+ * @author Lincoln Baxter, III
+ *
+ */
+public class OutboundResourceTestProvider extends HttpConfigurationProvider
+{
+ @Override
+ public int priority()
+ {
+ /*
+ * Priority of overall configuration is lower than default.
+ */
+ return 10;
+ }
+
+ @Override
+ public Configuration getConfiguration(final ServletContext context)
+ {
+ return ConfigurationBuilder.begin()
+ .addRule(Join.path("/outbound").to("/faces/outbound.xhtml"))
+ .addRule(Join.path("/css/{file}").to("/faces/javax.faces.resource/css/{file}?ln=test"))
+ .addRule()
+ .when(Direction.isInbound().and(DispatchType.isRequest()))
+ .perform(SendStatus.error(403));
+ }
+}
diff --git a/integration-faces-tests/src/test/resources/outbound-resource.css b/integration-faces-tests/src/test/resources/outbound-resource.css
new file mode 100644
index 000000000..e69de29bb
diff --git a/integration-faces-tests/src/test/resources/outbound-resource.xhtml b/integration-faces-tests/src/test/resources/outbound-resource.xhtml
new file mode 100644
index 000000000..4d409ece9
--- /dev/null
+++ b/integration-faces-tests/src/test/resources/outbound-resource.xhtml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+