You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2017/05/11 13:01:31 UTC
cxf git commit: [CXF-7367] Adding a test
Repository: cxf
Updated Branches:
refs/heads/master 85c390abd -> 686fabd80
[CXF-7367] Adding a test
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/686fabd8
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/686fabd8
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/686fabd8
Branch: refs/heads/master
Commit: 686fabd808398ee7a16aa3c6aaf4f50388327fa5
Parents: 85c390a
Author: Sergey Beryozkin <sb...@gmail.com>
Authored: Thu May 11 14:01:02 2017 +0100
Committer: Sergey Beryozkin <sb...@gmail.com>
Committed: Thu May 11 14:01:02 2017 +0100
----------------------------------------------------------------------
.../systest/jaxrs/ApplicationController.java | 46 ++++++++++++
.../jaxrs/ApplicationInfoJaxrsFilter.java | 44 +++++++++++
.../cxf/systest/jaxrs/JAXRSFiltersTest.java | 78 ++++++++++++++++++++
3 files changed, 168 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/686fabd8/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/ApplicationController.java
----------------------------------------------------------------------
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/ApplicationController.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/ApplicationController.java
new file mode 100644
index 0000000..3ac0bb2
--- /dev/null
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/ApplicationController.java
@@ -0,0 +1,46 @@
+/**
+ * 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.cxf.systest.jaxrs;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.HeaderParam;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.container.ResourceContext;
+import javax.ws.rs.core.Context;
+
+@Path("app")
+public class ApplicationController {
+
+ @Context
+ private ResourceContext resourceContext;
+
+ @Path("nav")
+ public ApplicationControllerSub getNavigationDrawer() {
+ return resourceContext.initResource(new ApplicationControllerSub());
+ }
+
+ public static class ApplicationControllerSub {
+ @GET
+ @Produces("text/plain")
+ public String getApplicationInfo(@HeaderParam("ApplicationInfo") String appInfo) {
+ return appInfo == null ? "DefaultAppInfo" : appInfo;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/cxf/blob/686fabd8/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/ApplicationInfoJaxrsFilter.java
----------------------------------------------------------------------
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/ApplicationInfoJaxrsFilter.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/ApplicationInfoJaxrsFilter.java
new file mode 100644
index 0000000..9ca6690
--- /dev/null
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/ApplicationInfoJaxrsFilter.java
@@ -0,0 +1,44 @@
+/**
+ * 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.cxf.systest.jaxrs;
+
+import java.io.IOException;
+import java.util.List;
+
+import javax.annotation.Priority;
+import javax.ws.rs.Priorities;
+import javax.ws.rs.container.ContainerRequestContext;
+import javax.ws.rs.container.ContainerRequestFilter;
+import javax.ws.rs.ext.Provider;
+
+@Provider
+@Priority(Priorities.AUTHENTICATION + 1)
+public class ApplicationInfoJaxrsFilter implements ContainerRequestFilter {
+
+ @Override
+ public void filter(ContainerRequestContext context) throws IOException {
+ List<Object> matched = context.getUriInfo().getMatchedResources();
+ if (matched.size() == 2
+ && ApplicationController.ApplicationControllerSub.class == matched.get(0)
+ && ApplicationController.class == matched.get(1)) {
+ context.getHeaders().putSingle("ApplicationInfo", "FilteredApplicationInfo");
+ }
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cxf/blob/686fabd8/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSFiltersTest.java
----------------------------------------------------------------------
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSFiltersTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSFiltersTest.java
new file mode 100644
index 0000000..07a75af
--- /dev/null
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSFiltersTest.java
@@ -0,0 +1,78 @@
+/**
+ * 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.cxf.systest.jaxrs;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
+import org.apache.cxf.jaxrs.client.WebClient;
+import org.apache.cxf.jaxrs.lifecycle.SingletonResourceProvider;
+import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
+import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
+import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class JAXRSFiltersTest extends AbstractBusClientServerTestBase {
+
+ @BeforeClass
+ public static void startServers() throws Exception {
+ AbstractResourceInfo.clearAllMaps();
+ assertTrue("server did not launch correctly",
+ launchServer(AppServer.class, true));
+ createStaticBus();
+ }
+
+ public static class AppServer extends AbstractBusTestServerBase {
+ public static final String PORT = allocatePort(BookServer.class);
+
+ org.apache.cxf.endpoint.Server server;
+
+ public AppServer() {
+ }
+
+ protected void run() {
+ JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
+ sf.setResourceClasses(ApplicationController.class);
+ List<Object> providers = new ArrayList<Object>();
+ providers.add(new ApplicationInfoJaxrsFilter());
+ sf.setProviders(providers);
+ sf.setResourceProvider(ApplicationController.class,
+ new SingletonResourceProvider(new ApplicationController()));
+ sf.setAddress("http://localhost:" + PORT + "/info");
+ server = sf.create();
+ }
+
+ public void tearDown() throws Exception {
+ server.stop();
+ server.destroy();
+ server = null;
+ }
+ }
+
+ @Test
+ public void testPostMatchingFilterOnSubresource() throws Exception {
+ WebClient wc = WebClient.create("http://localhost:" + AppServer.PORT + "/info/app/nav");
+ wc.accept("text/plain");
+ assertEquals("FilteredApplicationInfo", wc.get(String.class));
+ }
+}