You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by mo...@apache.org on 2017/09/01 13:17:37 UTC
[39/64] [partial] knox git commit: KNOX-998 - Refactoring save 1
http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-identity-assertion-switchcase/src/test/java/org/apache/hadoop/gateway/identityasserter/switchcase/SwitchCaseIdentityAssertionFilterTest.java
----------------------------------------------------------------------
diff --git a/gateway-provider-identity-assertion-switchcase/src/test/java/org/apache/hadoop/gateway/identityasserter/switchcase/SwitchCaseIdentityAssertionFilterTest.java b/gateway-provider-identity-assertion-switchcase/src/test/java/org/apache/hadoop/gateway/identityasserter/switchcase/SwitchCaseIdentityAssertionFilterTest.java
deleted file mode 100644
index 8637f62..0000000
--- a/gateway-provider-identity-assertion-switchcase/src/test/java/org/apache/hadoop/gateway/identityasserter/switchcase/SwitchCaseIdentityAssertionFilterTest.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/**
- * 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.hadoop.gateway.identityasserter.switchcase;
-
-import java.security.Principal;
-import javax.security.auth.Subject;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletContext;
-
-import org.apache.hadoop.gateway.security.GroupPrincipal;
-import org.apache.hadoop.gateway.security.PrimaryPrincipal;
-import org.easymock.EasyMock;
-import org.junit.Test;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.arrayContainingInAnyOrder;
-
-public class SwitchCaseIdentityAssertionFilterTest {
-
- @Test
- public void testDefaultConfig() throws Exception {
- FilterConfig config = EasyMock.createNiceMock( FilterConfig.class );
- EasyMock.expect(config.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
- ServletContext context = EasyMock.createNiceMock(ServletContext.class);
- EasyMock.expect(config.getServletContext() ).andReturn( context ).anyTimes();
- EasyMock.expect(context.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
- EasyMock.replay( config );
- EasyMock.replay( context );
-
- SwitchCaseIdentityAssertionFilter filter = new SwitchCaseIdentityAssertionFilter();
-
- Subject subject = new Subject();
- subject.getPrincipals().add( new PrimaryPrincipal( "Member@us.apache.org" ) );
- subject.getPrincipals().add( new GroupPrincipal( "users" ) );
- subject.getPrincipals().add( new GroupPrincipal( "Admin" ) );
-
- filter.init(config);
- String actual = filter.mapUserPrincipal(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName());
- String[] groups = filter.mapGroupPrincipals(actual, subject);
- assertThat( actual, is( "member@us.apache.org" ) );
- assertThat( groups, is( arrayContainingInAnyOrder( "admin", "users" ) ) );
-
- }
-
- @Test
- public void testUpperPrincipalAndGroups() throws Exception {
- FilterConfig config = EasyMock.createNiceMock( FilterConfig.class );
- EasyMock.expect( config.getInitParameter( "principal.case" ) ).andReturn( "Upper" ).anyTimes();
- EasyMock.expect( config.getInitParameter( "group.principal.case" ) ).andReturn( "Upper" ).anyTimes();
- EasyMock.expect(config.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
- ServletContext context = EasyMock.createNiceMock(ServletContext.class);
- EasyMock.expect(config.getServletContext() ).andReturn( context ).anyTimes();
- EasyMock.expect(context.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
- EasyMock.replay( config );
- EasyMock.replay( context );
-
- SwitchCaseIdentityAssertionFilter filter = new SwitchCaseIdentityAssertionFilter();
-
- Subject subject = new Subject();
- subject.getPrincipals().add( new PrimaryPrincipal( "Member@us.apache.org" ) );
- subject.getPrincipals().add( new GroupPrincipal( "users" ) );
- subject.getPrincipals().add( new GroupPrincipal( "Admin" ) );
-
- filter.init(config);
- String actual = filter.mapUserPrincipal(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName());
- String[] groups = filter.mapGroupPrincipals(actual, subject);
- assertThat( actual, is( "MEMBER@US.APACHE.ORG" ) );
- assertThat( groups, is( arrayContainingInAnyOrder( "ADMIN", "USERS" ) ) );
-
- }
-
- @Test
- public void testLowerPrincipalAndGroups() throws Exception {
- FilterConfig config = EasyMock.createNiceMock( FilterConfig.class );
- EasyMock.expect( config.getInitParameter( "principal.case" ) ).andReturn( "lower" ).anyTimes();
- EasyMock.expect( config.getInitParameter( "group.principal.case" ) ).andReturn( "LOWER" ).anyTimes();
- ServletContext context = EasyMock.createNiceMock(ServletContext.class);
- EasyMock.expect(config.getServletContext() ).andReturn( context ).anyTimes();
- EasyMock.expect(context.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
- EasyMock.replay( config );
- EasyMock.replay( context );
-
- SwitchCaseIdentityAssertionFilter filter = new SwitchCaseIdentityAssertionFilter();
-
- Subject subject = new Subject();
- subject.getPrincipals().add(new PrimaryPrincipal( "Member@us.apache.org" ) );
- subject.getPrincipals().add(new GroupPrincipal( "users" ) );
- subject.getPrincipals().add( new GroupPrincipal( "Admin" ) );
-
- filter.init(config);
- String actual = filter.mapUserPrincipal(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName());
- String[] groups = filter.mapGroupPrincipals(actual, subject);
- assertThat( actual, is( "member@us.apache.org" ) );
- assertThat( groups, is( arrayContainingInAnyOrder( "admin", "users" ) ) );
-
- }
-
- @Test
- public void testNonePrincipalAndGroups() throws Exception {
- FilterConfig config = EasyMock.createNiceMock( FilterConfig.class );
- EasyMock.expect( config.getInitParameter( "principal.case" ) ).andReturn( "none" ).anyTimes();
- EasyMock.expect( config.getInitParameter( "group.principal.case" ) ).andReturn( "NONE" ).anyTimes();
- ServletContext context = EasyMock.createNiceMock(ServletContext.class);
- EasyMock.expect(config.getServletContext() ).andReturn( context ).anyTimes();
- EasyMock.expect(context.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
- EasyMock.replay( config );
- EasyMock.replay( context );
-
- SwitchCaseIdentityAssertionFilter filter = new SwitchCaseIdentityAssertionFilter();
-
- Subject subject = new Subject();
- subject.getPrincipals().add(new PrimaryPrincipal( "Member@us.apache.org" ) );
-
- filter.init(config);
- String actual = filter.mapUserPrincipal(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName());
- String[] groups = filter.mapGroupPrincipals(actual, subject);
- assertThat( actual, is( "Member@us.apache.org" ) );
- assertThat( groups, is( nullValue() ) );
-
- }
-
- @Test
- public void testDefaultGroupsConfFromUsers() throws Exception {
- FilterConfig config = EasyMock.createNiceMock( FilterConfig.class );
- EasyMock.expect( config.getInitParameter( "principal.case" ) ).andReturn( "UPPER" ).anyTimes();
- EasyMock.expect( config.getInitParameter( "group.principal.case" ) ).andReturn( null ).anyTimes();
- ServletContext context = EasyMock.createNiceMock(ServletContext.class);
- EasyMock.expect(config.getServletContext() ).andReturn( context ).anyTimes();
- EasyMock.expect(context.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
- EasyMock.replay( config );
- EasyMock.replay( context );
-
- SwitchCaseIdentityAssertionFilter filter = new SwitchCaseIdentityAssertionFilter();
-
- Subject subject = new Subject();
- subject.getPrincipals().add(new PrimaryPrincipal( "Member@us.apache.org" ) );
- subject.getPrincipals().add(new GroupPrincipal( "users" ) );
- subject.getPrincipals().add( new GroupPrincipal( "Admin" ) );
-
- filter.init(config);
- String actual = filter.mapUserPrincipal(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName());
- String[] groups = filter.mapGroupPrincipals(actual, subject);
- assertThat( actual, is( "MEMBER@US.APACHE.ORG" ) );
- assertThat( groups, is( arrayContainingInAnyOrder( "ADMIN", "USERS" ) ) );
-
- }
-
- @Test
- public void testDefaultGroupsConfOverride() throws Exception {
- FilterConfig config = EasyMock.createNiceMock( FilterConfig.class );
- EasyMock.expect( config.getInitParameter( "principal.case" ) ).andReturn( "UPPER" ).anyTimes();
- EasyMock.expect( config.getInitParameter( "group.principal.case" ) ).andReturn( "none" ).anyTimes();
- ServletContext context = EasyMock.createNiceMock(ServletContext.class);
- EasyMock.expect(config.getServletContext() ).andReturn( context ).anyTimes();
- EasyMock.expect(context.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
- EasyMock.replay( config );
- EasyMock.replay( context );
-
- SwitchCaseIdentityAssertionFilter filter = new SwitchCaseIdentityAssertionFilter();
-
- Subject subject = new Subject();
- subject.getPrincipals().add(new PrimaryPrincipal( "Member@us.apache.org" ) );
- subject.getPrincipals().add(new GroupPrincipal( "users" ) );
- subject.getPrincipals().add( new GroupPrincipal( "Admin" ) );
-
- filter.init(config);
- String actual = filter.mapUserPrincipal(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName());
- String[] groups = filter.mapGroupPrincipals(actual, subject);
- assertThat( actual, is( "MEMBER@US.APACHE.ORG" ) );
- assertThat( groups, is( nullValue() ) );
-
- }
-
- @Test
- public void testNone() throws Exception {
- FilterConfig config = EasyMock.createNiceMock( FilterConfig.class );
- EasyMock.expect( config.getInitParameter( "principal.case" ) ).andReturn( "none" ).anyTimes();
- EasyMock.expect( config.getInitParameter( "group.principal.case" ) ).andReturn( "none" ).anyTimes();
- ServletContext context = EasyMock.createNiceMock(ServletContext.class);
- EasyMock.expect(config.getServletContext() ).andReturn( context ).anyTimes();
- EasyMock.expect(context.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
- EasyMock.replay( config );
- EasyMock.replay( context );
-
- SwitchCaseIdentityAssertionFilter filter = new SwitchCaseIdentityAssertionFilter();
-
- Subject subject = new Subject();
- subject.getPrincipals().add(new PrimaryPrincipal( "Member@us.apache.org" ) );
- subject.getPrincipals().add(new GroupPrincipal( "users" ) );
- subject.getPrincipals().add( new GroupPrincipal( "Admin" ) );
-
- filter.init(config);
- String actual = filter.mapUserPrincipal(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName());
- String[] groups = filter.mapGroupPrincipals(actual, subject);
- assertThat( actual, is( "Member@us.apache.org" ) );
- assertThat( groups, is( nullValue() ) );
-
- }
-
- @Test
- public void testNoGroups() throws Exception {
- FilterConfig config = EasyMock.createNiceMock( FilterConfig.class );
- EasyMock.expect( config.getInitParameter( "principal.case" ) ).andReturn( "upper" ).anyTimes();
- EasyMock.expect( config.getInitParameter( "group.principal.case" ) ).andReturn( "upper" ).anyTimes();
- EasyMock.expect(config.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
- ServletContext context = EasyMock.createNiceMock(ServletContext.class);
- EasyMock.expect(config.getServletContext() ).andReturn( context ).anyTimes();
- EasyMock.expect(context.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
- EasyMock.replay( config );
- EasyMock.replay( context );
-
- SwitchCaseIdentityAssertionFilter filter = new SwitchCaseIdentityAssertionFilter();
-
- Subject subject = new Subject();
- subject.getPrincipals().add(new PrimaryPrincipal( "Member@us.apache.org" ) );
-
- filter.init(config);
- String actual = filter.mapUserPrincipal(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName());
- String[] groups = filter.mapGroupPrincipals(actual, subject);
- assertThat( actual, is( "MEMBER@US.APACHE.ORG" ) );
- assertThat( groups, is( nullValue() ) );
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-identity-assertion-switchcase/src/test/java/org/apache/knox/gateway/identityasserter/switchcase/SwitchCaseIdentityAsserterDeploymentContributorTest.java
----------------------------------------------------------------------
diff --git a/gateway-provider-identity-assertion-switchcase/src/test/java/org/apache/knox/gateway/identityasserter/switchcase/SwitchCaseIdentityAsserterDeploymentContributorTest.java b/gateway-provider-identity-assertion-switchcase/src/test/java/org/apache/knox/gateway/identityasserter/switchcase/SwitchCaseIdentityAsserterDeploymentContributorTest.java
new file mode 100644
index 0000000..14a0600
--- /dev/null
+++ b/gateway-provider-identity-assertion-switchcase/src/test/java/org/apache/knox/gateway/identityasserter/switchcase/SwitchCaseIdentityAsserterDeploymentContributorTest.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.knox.gateway.identityasserter.switchcase;
+
+import java.util.Iterator;
+import java.util.ServiceLoader;
+
+import org.apache.knox.gateway.deploy.ProviderDeploymentContributor;
+import org.junit.Test;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.fail;
+
+public class SwitchCaseIdentityAsserterDeploymentContributorTest {
+
+ @Test
+ public void testServiceLoader() throws Exception {
+ ServiceLoader<ProviderDeploymentContributor> loader = ServiceLoader.load( ProviderDeploymentContributor.class );
+ Iterator<ProviderDeploymentContributor> iterator = loader.iterator();
+ assertThat( "Service iterator empty.", iterator.hasNext() );
+ while( iterator.hasNext() ) {
+ Object object = iterator.next();
+ if( object instanceof SwitchCaseIdentityAsserterDeploymentContributor ) {
+ return;
+ }
+ }
+ fail( "Failed to find " + SwitchCaseIdentityAsserterDeploymentContributor.class.getName() + " via service loader." );
+ }
+}
http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-identity-assertion-switchcase/src/test/java/org/apache/knox/gateway/identityasserter/switchcase/SwitchCaseIdentityAssertionFilterTest.java
----------------------------------------------------------------------
diff --git a/gateway-provider-identity-assertion-switchcase/src/test/java/org/apache/knox/gateway/identityasserter/switchcase/SwitchCaseIdentityAssertionFilterTest.java b/gateway-provider-identity-assertion-switchcase/src/test/java/org/apache/knox/gateway/identityasserter/switchcase/SwitchCaseIdentityAssertionFilterTest.java
new file mode 100644
index 0000000..d1a9462
--- /dev/null
+++ b/gateway-provider-identity-assertion-switchcase/src/test/java/org/apache/knox/gateway/identityasserter/switchcase/SwitchCaseIdentityAssertionFilterTest.java
@@ -0,0 +1,242 @@
+/**
+ * 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.knox.gateway.identityasserter.switchcase;
+
+import java.security.Principal;
+import javax.security.auth.Subject;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletContext;
+
+import org.apache.knox.gateway.security.GroupPrincipal;
+import org.apache.knox.gateway.security.PrimaryPrincipal;
+import org.easymock.EasyMock;
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.arrayContainingInAnyOrder;
+
+public class SwitchCaseIdentityAssertionFilterTest {
+
+ @Test
+ public void testDefaultConfig() throws Exception {
+ FilterConfig config = EasyMock.createNiceMock( FilterConfig.class );
+ EasyMock.expect(config.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
+ ServletContext context = EasyMock.createNiceMock(ServletContext.class);
+ EasyMock.expect(config.getServletContext() ).andReturn( context ).anyTimes();
+ EasyMock.expect(context.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
+ EasyMock.replay( config );
+ EasyMock.replay( context );
+
+ SwitchCaseIdentityAssertionFilter filter = new SwitchCaseIdentityAssertionFilter();
+
+ Subject subject = new Subject();
+ subject.getPrincipals().add( new PrimaryPrincipal( "Member@us.apache.org" ) );
+ subject.getPrincipals().add( new GroupPrincipal( "users" ) );
+ subject.getPrincipals().add( new GroupPrincipal( "Admin" ) );
+
+ filter.init(config);
+ String actual = filter.mapUserPrincipal(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName());
+ String[] groups = filter.mapGroupPrincipals(actual, subject);
+ assertThat( actual, is( "member@us.apache.org" ) );
+ assertThat( groups, is( arrayContainingInAnyOrder( "admin", "users" ) ) );
+
+ }
+
+ @Test
+ public void testUpperPrincipalAndGroups() throws Exception {
+ FilterConfig config = EasyMock.createNiceMock( FilterConfig.class );
+ EasyMock.expect( config.getInitParameter( "principal.case" ) ).andReturn( "Upper" ).anyTimes();
+ EasyMock.expect( config.getInitParameter( "group.principal.case" ) ).andReturn( "Upper" ).anyTimes();
+ EasyMock.expect(config.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
+ ServletContext context = EasyMock.createNiceMock(ServletContext.class);
+ EasyMock.expect(config.getServletContext() ).andReturn( context ).anyTimes();
+ EasyMock.expect(context.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
+ EasyMock.replay( config );
+ EasyMock.replay( context );
+
+ SwitchCaseIdentityAssertionFilter filter = new SwitchCaseIdentityAssertionFilter();
+
+ Subject subject = new Subject();
+ subject.getPrincipals().add( new PrimaryPrincipal( "Member@us.apache.org" ) );
+ subject.getPrincipals().add( new GroupPrincipal( "users" ) );
+ subject.getPrincipals().add( new GroupPrincipal( "Admin" ) );
+
+ filter.init(config);
+ String actual = filter.mapUserPrincipal(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName());
+ String[] groups = filter.mapGroupPrincipals(actual, subject);
+ assertThat( actual, is( "MEMBER@US.APACHE.ORG" ) );
+ assertThat( groups, is( arrayContainingInAnyOrder( "ADMIN", "USERS" ) ) );
+
+ }
+
+ @Test
+ public void testLowerPrincipalAndGroups() throws Exception {
+ FilterConfig config = EasyMock.createNiceMock( FilterConfig.class );
+ EasyMock.expect( config.getInitParameter( "principal.case" ) ).andReturn( "lower" ).anyTimes();
+ EasyMock.expect( config.getInitParameter( "group.principal.case" ) ).andReturn( "LOWER" ).anyTimes();
+ ServletContext context = EasyMock.createNiceMock(ServletContext.class);
+ EasyMock.expect(config.getServletContext() ).andReturn( context ).anyTimes();
+ EasyMock.expect(context.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
+ EasyMock.replay( config );
+ EasyMock.replay( context );
+
+ SwitchCaseIdentityAssertionFilter filter = new SwitchCaseIdentityAssertionFilter();
+
+ Subject subject = new Subject();
+ subject.getPrincipals().add(new PrimaryPrincipal( "Member@us.apache.org" ) );
+ subject.getPrincipals().add(new GroupPrincipal( "users" ) );
+ subject.getPrincipals().add( new GroupPrincipal( "Admin" ) );
+
+ filter.init(config);
+ String actual = filter.mapUserPrincipal(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName());
+ String[] groups = filter.mapGroupPrincipals(actual, subject);
+ assertThat( actual, is( "member@us.apache.org" ) );
+ assertThat( groups, is( arrayContainingInAnyOrder( "admin", "users" ) ) );
+
+ }
+
+ @Test
+ public void testNonePrincipalAndGroups() throws Exception {
+ FilterConfig config = EasyMock.createNiceMock( FilterConfig.class );
+ EasyMock.expect( config.getInitParameter( "principal.case" ) ).andReturn( "none" ).anyTimes();
+ EasyMock.expect( config.getInitParameter( "group.principal.case" ) ).andReturn( "NONE" ).anyTimes();
+ ServletContext context = EasyMock.createNiceMock(ServletContext.class);
+ EasyMock.expect(config.getServletContext() ).andReturn( context ).anyTimes();
+ EasyMock.expect(context.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
+ EasyMock.replay( config );
+ EasyMock.replay( context );
+
+ SwitchCaseIdentityAssertionFilter filter = new SwitchCaseIdentityAssertionFilter();
+
+ Subject subject = new Subject();
+ subject.getPrincipals().add(new PrimaryPrincipal( "Member@us.apache.org" ) );
+
+ filter.init(config);
+ String actual = filter.mapUserPrincipal(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName());
+ String[] groups = filter.mapGroupPrincipals(actual, subject);
+ assertThat( actual, is( "Member@us.apache.org" ) );
+ assertThat( groups, is( nullValue() ) );
+
+ }
+
+ @Test
+ public void testDefaultGroupsConfFromUsers() throws Exception {
+ FilterConfig config = EasyMock.createNiceMock( FilterConfig.class );
+ EasyMock.expect( config.getInitParameter( "principal.case" ) ).andReturn( "UPPER" ).anyTimes();
+ EasyMock.expect( config.getInitParameter( "group.principal.case" ) ).andReturn( null ).anyTimes();
+ ServletContext context = EasyMock.createNiceMock(ServletContext.class);
+ EasyMock.expect(config.getServletContext() ).andReturn( context ).anyTimes();
+ EasyMock.expect(context.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
+ EasyMock.replay( config );
+ EasyMock.replay( context );
+
+ SwitchCaseIdentityAssertionFilter filter = new SwitchCaseIdentityAssertionFilter();
+
+ Subject subject = new Subject();
+ subject.getPrincipals().add(new PrimaryPrincipal( "Member@us.apache.org" ) );
+ subject.getPrincipals().add(new GroupPrincipal( "users" ) );
+ subject.getPrincipals().add( new GroupPrincipal( "Admin" ) );
+
+ filter.init(config);
+ String actual = filter.mapUserPrincipal(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName());
+ String[] groups = filter.mapGroupPrincipals(actual, subject);
+ assertThat( actual, is( "MEMBER@US.APACHE.ORG" ) );
+ assertThat( groups, is( arrayContainingInAnyOrder( "ADMIN", "USERS" ) ) );
+
+ }
+
+ @Test
+ public void testDefaultGroupsConfOverride() throws Exception {
+ FilterConfig config = EasyMock.createNiceMock( FilterConfig.class );
+ EasyMock.expect( config.getInitParameter( "principal.case" ) ).andReturn( "UPPER" ).anyTimes();
+ EasyMock.expect( config.getInitParameter( "group.principal.case" ) ).andReturn( "none" ).anyTimes();
+ ServletContext context = EasyMock.createNiceMock(ServletContext.class);
+ EasyMock.expect(config.getServletContext() ).andReturn( context ).anyTimes();
+ EasyMock.expect(context.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
+ EasyMock.replay( config );
+ EasyMock.replay( context );
+
+ SwitchCaseIdentityAssertionFilter filter = new SwitchCaseIdentityAssertionFilter();
+
+ Subject subject = new Subject();
+ subject.getPrincipals().add(new PrimaryPrincipal( "Member@us.apache.org" ) );
+ subject.getPrincipals().add(new GroupPrincipal( "users" ) );
+ subject.getPrincipals().add( new GroupPrincipal( "Admin" ) );
+
+ filter.init(config);
+ String actual = filter.mapUserPrincipal(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName());
+ String[] groups = filter.mapGroupPrincipals(actual, subject);
+ assertThat( actual, is( "MEMBER@US.APACHE.ORG" ) );
+ assertThat( groups, is( nullValue() ) );
+
+ }
+
+ @Test
+ public void testNone() throws Exception {
+ FilterConfig config = EasyMock.createNiceMock( FilterConfig.class );
+ EasyMock.expect( config.getInitParameter( "principal.case" ) ).andReturn( "none" ).anyTimes();
+ EasyMock.expect( config.getInitParameter( "group.principal.case" ) ).andReturn( "none" ).anyTimes();
+ ServletContext context = EasyMock.createNiceMock(ServletContext.class);
+ EasyMock.expect(config.getServletContext() ).andReturn( context ).anyTimes();
+ EasyMock.expect(context.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
+ EasyMock.replay( config );
+ EasyMock.replay( context );
+
+ SwitchCaseIdentityAssertionFilter filter = new SwitchCaseIdentityAssertionFilter();
+
+ Subject subject = new Subject();
+ subject.getPrincipals().add(new PrimaryPrincipal( "Member@us.apache.org" ) );
+ subject.getPrincipals().add(new GroupPrincipal( "users" ) );
+ subject.getPrincipals().add( new GroupPrincipal( "Admin" ) );
+
+ filter.init(config);
+ String actual = filter.mapUserPrincipal(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName());
+ String[] groups = filter.mapGroupPrincipals(actual, subject);
+ assertThat( actual, is( "Member@us.apache.org" ) );
+ assertThat( groups, is( nullValue() ) );
+
+ }
+
+ @Test
+ public void testNoGroups() throws Exception {
+ FilterConfig config = EasyMock.createNiceMock( FilterConfig.class );
+ EasyMock.expect( config.getInitParameter( "principal.case" ) ).andReturn( "upper" ).anyTimes();
+ EasyMock.expect( config.getInitParameter( "group.principal.case" ) ).andReturn( "upper" ).anyTimes();
+ EasyMock.expect(config.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
+ ServletContext context = EasyMock.createNiceMock(ServletContext.class);
+ EasyMock.expect(config.getServletContext() ).andReturn( context ).anyTimes();
+ EasyMock.expect(context.getInitParameter("principal.mapping") ).andReturn( "" ).anyTimes();
+ EasyMock.replay( config );
+ EasyMock.replay( context );
+
+ SwitchCaseIdentityAssertionFilter filter = new SwitchCaseIdentityAssertionFilter();
+
+ Subject subject = new Subject();
+ subject.getPrincipals().add(new PrimaryPrincipal( "Member@us.apache.org" ) );
+
+ filter.init(config);
+ String actual = filter.mapUserPrincipal(((Principal) subject.getPrincipals(PrimaryPrincipal.class).toArray()[0]).getName());
+ String[] groups = filter.mapGroupPrincipals(actual, subject);
+ assertThat( actual, is( "MEMBER@US.APACHE.ORG" ) );
+ assertThat( groups, is( nullValue() ) );
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-jersey/src/main/java/org/apache/hadoop/gateway/jersey/JerseyDispatchDeploymentContributor.java
----------------------------------------------------------------------
diff --git a/gateway-provider-jersey/src/main/java/org/apache/hadoop/gateway/jersey/JerseyDispatchDeploymentContributor.java b/gateway-provider-jersey/src/main/java/org/apache/hadoop/gateway/jersey/JerseyDispatchDeploymentContributor.java
deleted file mode 100644
index 1f40fd7..0000000
--- a/gateway-provider-jersey/src/main/java/org/apache/hadoop/gateway/jersey/JerseyDispatchDeploymentContributor.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * 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.hadoop.gateway.jersey;
-
-import org.apache.hadoop.gateway.deploy.DeploymentContext;
-import org.apache.hadoop.gateway.deploy.ProviderDeploymentContributorBase;
-import org.apache.hadoop.gateway.descriptor.FilterDescriptor;
-import org.apache.hadoop.gateway.descriptor.FilterParamDescriptor;
-import org.apache.hadoop.gateway.descriptor.ResourceDescriptor;
-import org.apache.hadoop.gateway.topology.Provider;
-import org.apache.hadoop.gateway.topology.Service;
-import org.glassfish.jersey.servlet.ServletContainer;
-
-import java.util.List;
-
-public class JerseyDispatchDeploymentContributor extends ProviderDeploymentContributorBase {
-
- private static final String FILTER_CLASS_NAME = ServletContainer.class.getName();
-
- @Override
- public String getRole() {
- return "pivot";
- }
-
- @Override
- public String getName() {
- return "jersey";
- }
-
- @Override
- public void contributeFilter( DeploymentContext context, Provider provider, Service service, ResourceDescriptor resource, List<FilterParamDescriptor> params ) {
- FilterDescriptor filter = resource.addFilter().name( getName() ).role( getRole() ).impl( FILTER_CLASS_NAME );
- if( params != null ) {
- for( FilterParamDescriptor param : params ) {
- filter.param().name( param.name() ).value( param.value() );
- }
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-jersey/src/main/java/org/apache/hadoop/gateway/jersey/JerseyServiceDeploymentContributorBase.java
----------------------------------------------------------------------
diff --git a/gateway-provider-jersey/src/main/java/org/apache/hadoop/gateway/jersey/JerseyServiceDeploymentContributorBase.java b/gateway-provider-jersey/src/main/java/org/apache/hadoop/gateway/jersey/JerseyServiceDeploymentContributorBase.java
deleted file mode 100644
index 99c5d4b..0000000
--- a/gateway-provider-jersey/src/main/java/org/apache/hadoop/gateway/jersey/JerseyServiceDeploymentContributorBase.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * 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.hadoop.gateway.jersey;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.hadoop.gateway.deploy.DeploymentContext;
-import org.apache.hadoop.gateway.deploy.ServiceDeploymentContributorBase;
-import org.apache.hadoop.gateway.descriptor.FilterParamDescriptor;
-import org.apache.hadoop.gateway.descriptor.ResourceDescriptor;
-import org.apache.hadoop.gateway.topology.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-public abstract class JerseyServiceDeploymentContributorBase extends ServiceDeploymentContributorBase {
-
- private static final String PACKAGES_PARAM = "jersey.config.server.provider.packages";
-// private static final String TRACE_LOGGING_PARAM = "jersey.config.server.tracing";
-
- protected abstract String[] getPackages();
-
- protected abstract String[] getPatterns();
-
- public void contributeService( DeploymentContext context, Service service ) throws Exception {
- String packages = StringUtils.join( getPackages(), ";" );
- for( String pattern : getPatterns() ) {
- ResourceDescriptor resource = context.getGatewayDescriptor().addResource();
- resource.role( service.getRole() );
- resource.pattern( pattern );
- addWebAppSecFilters( context, service, resource );
- addXForwardedFilter( context, service, resource );
- addAuthenticationFilter( context, service, resource );
- addIdentityAssertionFilter( context, service, resource );
- addAuthorizationFilter( context, service, resource );
- // addRewriteFilter( context, service, resource, null );
- List<FilterParamDescriptor> params = new ArrayList<FilterParamDescriptor>();
- FilterParamDescriptor param = resource.createFilterParam();
- param.name( PACKAGES_PARAM );
- param.value( packages );
- params.add( param );
-// FilterParamDescriptor trace = resource.createFilterParam();
-// param.name( TRACE_LOGGING_PARAM );
-// param.value( "ALL" );
-// params.add( trace );
- for ( Map.Entry<String,String> serviceParam : service.getParams().entrySet() ) {
- context.getWebAppDescriptor().createContextParam().paramName(serviceParam.getKey()).paramValue(serviceParam.getValue());
- }
- context.contributeFilter( service, resource, "pivot", "jersey", params );
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-jersey/src/main/java/org/apache/knox/gateway/jersey/JerseyDispatchDeploymentContributor.java
----------------------------------------------------------------------
diff --git a/gateway-provider-jersey/src/main/java/org/apache/knox/gateway/jersey/JerseyDispatchDeploymentContributor.java b/gateway-provider-jersey/src/main/java/org/apache/knox/gateway/jersey/JerseyDispatchDeploymentContributor.java
new file mode 100644
index 0000000..19debc9
--- /dev/null
+++ b/gateway-provider-jersey/src/main/java/org/apache/knox/gateway/jersey/JerseyDispatchDeploymentContributor.java
@@ -0,0 +1,56 @@
+/**
+ * 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.knox.gateway.jersey;
+
+import org.apache.knox.gateway.deploy.DeploymentContext;
+import org.apache.knox.gateway.deploy.ProviderDeploymentContributorBase;
+import org.apache.knox.gateway.descriptor.FilterDescriptor;
+import org.apache.knox.gateway.descriptor.FilterParamDescriptor;
+import org.apache.knox.gateway.descriptor.ResourceDescriptor;
+import org.apache.knox.gateway.topology.Provider;
+import org.apache.knox.gateway.topology.Service;
+import org.glassfish.jersey.servlet.ServletContainer;
+
+import java.util.List;
+
+public class JerseyDispatchDeploymentContributor extends
+ ProviderDeploymentContributorBase {
+
+ private static final String FILTER_CLASS_NAME = ServletContainer.class.getName();
+
+ @Override
+ public String getRole() {
+ return "pivot";
+ }
+
+ @Override
+ public String getName() {
+ return "jersey";
+ }
+
+ @Override
+ public void contributeFilter( DeploymentContext context, Provider provider, Service service, ResourceDescriptor resource, List<FilterParamDescriptor> params ) {
+ FilterDescriptor filter = resource.addFilter().name( getName() ).role( getRole() ).impl( FILTER_CLASS_NAME );
+ if( params != null ) {
+ for( FilterParamDescriptor param : params ) {
+ filter.param().name( param.name() ).value( param.value() );
+ }
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-jersey/src/main/java/org/apache/knox/gateway/jersey/JerseyServiceDeploymentContributorBase.java
----------------------------------------------------------------------
diff --git a/gateway-provider-jersey/src/main/java/org/apache/knox/gateway/jersey/JerseyServiceDeploymentContributorBase.java b/gateway-provider-jersey/src/main/java/org/apache/knox/gateway/jersey/JerseyServiceDeploymentContributorBase.java
new file mode 100644
index 0000000..95a372a
--- /dev/null
+++ b/gateway-provider-jersey/src/main/java/org/apache/knox/gateway/jersey/JerseyServiceDeploymentContributorBase.java
@@ -0,0 +1,67 @@
+/**
+ * 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.knox.gateway.jersey;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.knox.gateway.deploy.DeploymentContext;
+import org.apache.knox.gateway.deploy.ServiceDeploymentContributorBase;
+import org.apache.knox.gateway.descriptor.FilterParamDescriptor;
+import org.apache.knox.gateway.descriptor.ResourceDescriptor;
+import org.apache.knox.gateway.topology.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public abstract class JerseyServiceDeploymentContributorBase extends ServiceDeploymentContributorBase {
+
+ private static final String PACKAGES_PARAM = "jersey.config.server.provider.packages";
+// private static final String TRACE_LOGGING_PARAM = "jersey.config.server.tracing";
+
+ protected abstract String[] getPackages();
+
+ protected abstract String[] getPatterns();
+
+ public void contributeService( DeploymentContext context, Service service ) throws Exception {
+ String packages = StringUtils.join( getPackages(), ";" );
+ for( String pattern : getPatterns() ) {
+ ResourceDescriptor resource = context.getGatewayDescriptor().addResource();
+ resource.role( service.getRole() );
+ resource.pattern( pattern );
+ addWebAppSecFilters( context, service, resource );
+ addXForwardedFilter( context, service, resource );
+ addAuthenticationFilter( context, service, resource );
+ addIdentityAssertionFilter( context, service, resource );
+ addAuthorizationFilter( context, service, resource );
+ // addRewriteFilter( context, service, resource, null );
+ List<FilterParamDescriptor> params = new ArrayList<FilterParamDescriptor>();
+ FilterParamDescriptor param = resource.createFilterParam();
+ param.name( PACKAGES_PARAM );
+ param.value( packages );
+ params.add( param );
+// FilterParamDescriptor trace = resource.createFilterParam();
+// param.name( TRACE_LOGGING_PARAM );
+// param.value( "ALL" );
+// params.add( trace );
+ for ( Map.Entry<String,String> serviceParam : service.getParams().entrySet() ) {
+ context.getWebAppDescriptor().createContextParam().paramName(serviceParam.getKey()).paramValue(serviceParam.getValue());
+ }
+ context.contributeFilter( service, resource, "pivot", "jersey", params );
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-jersey/src/main/resources/META-INF/services/org.apache.hadoop.gateway.deploy.ProviderDeploymentContributor
----------------------------------------------------------------------
diff --git a/gateway-provider-jersey/src/main/resources/META-INF/services/org.apache.hadoop.gateway.deploy.ProviderDeploymentContributor b/gateway-provider-jersey/src/main/resources/META-INF/services/org.apache.hadoop.gateway.deploy.ProviderDeploymentContributor
deleted file mode 100644
index 70af7b4..0000000
--- a/gateway-provider-jersey/src/main/resources/META-INF/services/org.apache.hadoop.gateway.deploy.ProviderDeploymentContributor
+++ /dev/null
@@ -1,19 +0,0 @@
-##########################################################################
-# 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.
-##########################################################################
-
-org.apache.hadoop.gateway.jersey.JerseyDispatchDeploymentContributor
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-jersey/src/main/resources/META-INF/services/org.apache.knox.gateway.deploy.ProviderDeploymentContributor
----------------------------------------------------------------------
diff --git a/gateway-provider-jersey/src/main/resources/META-INF/services/org.apache.knox.gateway.deploy.ProviderDeploymentContributor b/gateway-provider-jersey/src/main/resources/META-INF/services/org.apache.knox.gateway.deploy.ProviderDeploymentContributor
new file mode 100644
index 0000000..27a190a
--- /dev/null
+++ b/gateway-provider-jersey/src/main/resources/META-INF/services/org.apache.knox.gateway.deploy.ProviderDeploymentContributor
@@ -0,0 +1,19 @@
+##########################################################################
+# 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.
+##########################################################################
+
+org.apache.knox.gateway.jersey.JerseyDispatchDeploymentContributor
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-jersey/src/test/java/org/apache/hadoop/gateway/jersey/JerseyDeploymentContributorTest.java
----------------------------------------------------------------------
diff --git a/gateway-provider-jersey/src/test/java/org/apache/hadoop/gateway/jersey/JerseyDeploymentContributorTest.java b/gateway-provider-jersey/src/test/java/org/apache/hadoop/gateway/jersey/JerseyDeploymentContributorTest.java
deleted file mode 100644
index 0721ddc..0000000
--- a/gateway-provider-jersey/src/test/java/org/apache/hadoop/gateway/jersey/JerseyDeploymentContributorTest.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/**
- * 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.hadoop.gateway.jersey;
-
-import org.apache.hadoop.gateway.config.GatewayConfig;
-import org.apache.hadoop.gateway.deploy.DeploymentContext;
-import org.apache.hadoop.gateway.deploy.ProviderDeploymentContributor;
-import org.apache.hadoop.gateway.descriptor.FilterDescriptor;
-import org.apache.hadoop.gateway.descriptor.FilterParamDescriptor;
-import org.apache.hadoop.gateway.descriptor.GatewayDescriptor;
-import org.apache.hadoop.gateway.descriptor.GatewayDescriptorFactory;
-import org.apache.hadoop.gateway.descriptor.ResourceDescriptor;
-import org.apache.hadoop.gateway.topology.Provider;
-import org.apache.hadoop.gateway.topology.Service;
-import org.apache.hadoop.gateway.topology.Topology;
-import org.easymock.EasyMock;
-import org.jboss.shrinkwrap.api.ShrinkWrap;
-import org.jboss.shrinkwrap.api.spec.WebArchive;
-import org.jboss.shrinkwrap.descriptor.api.webapp30.WebAppDescriptor;
-import org.junit.Test;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.ServiceLoader;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.fail;
-
-public class JerseyDeploymentContributorTest {
-
- @Test
- public void testServiceLoader() throws Exception {
- ServiceLoader loader = ServiceLoader.load( ProviderDeploymentContributor.class );
- Iterator iterator = loader.iterator();
- assertThat( "Service iterator empty.", iterator.hasNext() );
- while( iterator.hasNext() ) {
- Object object = iterator.next();
- if( object instanceof JerseyDispatchDeploymentContributor ) {
- return;
- }
- }
- fail( "Failed to find " + JerseyDispatchDeploymentContributor.class.getName() + " via service loader." );
- }
-
- @Test
- public void testDeploymentContributors() throws Exception {
- JerseyDispatchDeploymentContributor providerContributor = new JerseyDispatchDeploymentContributor();
- assertThat( providerContributor.getRole(), is( "pivot" ) );
- assertThat( providerContributor.getName(), is( "jersey" ) );
-
- MockJerseyService serviceContributor = new MockJerseyService();
-
- WebArchive webArchive = ShrinkWrap.create( WebArchive.class, "test-archive" );
-
- Topology topology = new Topology();
- topology.setName( "test-topology" );
- Provider provider = new Provider();
- provider.setRole( "pivot" );
- provider.setName( "jersey" );
- provider.setEnabled( true );
- topology.addProvider( provider );
-
- GatewayDescriptor descriptor = GatewayDescriptorFactory.create();
-
- DeploymentContext context = EasyMock.createNiceMock( DeploymentContext.class );
- EasyMock.expect( context.getWebArchive() ).andReturn( webArchive ).anyTimes();
- EasyMock.expect( context.getTopology() ).andReturn( topology ).anyTimes();
- EasyMock.expect( context.getGatewayDescriptor() ).andReturn( descriptor ).anyTimes();
- context.contributeFilter(
- EasyMock.<Service> isA( Service.class ),
- EasyMock.<ResourceDescriptor> isA( ResourceDescriptor.class ),
- EasyMock.<String> isA( String.class ),
- EasyMock.<String> isA( String.class ),
- EasyMock.<List> isA( List.class ) );
- EasyMock.expectLastCall().andDelegateTo(
- new MockDeploymentContext( context, providerContributor, provider ) ).anyTimes();
-
- EasyMock.replay( context );
-
- // Just make sure they don't blow up.
- providerContributor.initializeContribution( context );
- serviceContributor.initializeContribution( context );
-
- Service service = new Service();
- service.setRole( "test-service-role" );
- service.setName( "test-service-name" );
- service.addUrl( "http://test-service-host:777/test-service-path" );
-
- // This should end up calling providerContributor.contributeFilter
- serviceContributor.contributeService( context, service );
- ResourceDescriptor resource = context.getGatewayDescriptor().resources().get( 0 );
-
- // Just make sure they don't blow up.
- serviceContributor.finalizeContribution( context );
- providerContributor.finalizeContribution( context );
-
- /*
- GatewayDescriptorFactory.store( descriptor, "xml", new PrintWriter( System.out ) );
- <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
- <gateway>
- <resource>
- <role>test-service-role</role>
- <pattern>test-service/?**</pattern>
- <filter>
- <role>dispatch</role>
- <name>jersey</name>
- <class>org.glassfish.jersey.servlet.ServletContainer</class>
- <param>
- <name>jersey.config.server.provider.packages</name>
- <value>test-package-1;test-package-2</value>
- </param>
- </filter>
- </resource>
- <resource>
- <role>test-service-role</role>
- <pattern>test-service/**?**</pattern>
- <filter>
- <role>dispatch</role>
- <name>jersey</name>
- <class>org.glassfish.jersey.servlet.ServletContainer</class>
- <param>
- <name>jersey.config.server.provider.packages</name>
- <value>test-package-1;test-package-2</value>
- </param>
- </filter>
- </resource>
- </gateway>
- */
- List<ResourceDescriptor> resources = context.getGatewayDescriptor().resources();
- assertThat( resources.size(), is( 2 ) );
-
- resource = resources.get( 0 );
- assertThat( resource.role(), is( "test-service-role" ) );
- assertThat( resource.pattern(), is( "test-service/?**" ) );
- List<FilterDescriptor> filters = resource.filters();
- assertThat( filters.size(), is( 1 ) );
- FilterDescriptor filter = filters.get( 0 );
- assertThat( filter.role(), is( "pivot") );
- assertThat( filter.name(), is( "jersey" ) );
- assertThat( filter.impl(), is( "org.glassfish.jersey.servlet.ServletContainer" ) );
- List<FilterParamDescriptor> params = filter.params();
- assertThat( params.size(), is( 1 ) );
- FilterParamDescriptor param = params.get( 0 );
- assertThat( param.name(), is( "jersey.config.server.provider.packages" ) );
- assertThat( param.value(), is( "test-package-1;test-package-2" ) );
-
- resource = resources.get( 1 );
- assertThat( resource.role(), is( "test-service-role" ) );
- assertThat( resource.pattern(), is( "test-service/**?**" ) );
- filters = resource.filters();
- assertThat( filters.size(), is( 1 ) );
- filter = filters.get( 0 );
- assertThat( filter.role(), is( "pivot") );
- assertThat( filter.name(), is( "jersey" ) );
- assertThat( filter.impl(), is( "org.glassfish.jersey.servlet.ServletContainer" ) );
- params = filter.params();
- assertThat( params.size(), is( 1 ) );
- param = params.get( 0 );
- assertThat( param.name(), is( "jersey.config.server.provider.packages" ) );
- assertThat( param.value(), is( "test-package-1;test-package-2" ) );
- }
-
- private static class MockJerseyService extends JerseyServiceDeploymentContributorBase {
-
- @Override
- protected String[] getPatterns() {
- return new String[]{ "test-service/?**", "test-service/**?**" };
- }
-
- @Override
- protected String[] getPackages() {
- return new String[]{ "test-package-1", "test-package-2" };
- }
-
- @Override
- public String getRole() {
- return "test-service-role";
- }
-
- @Override
- public String getName() {
- return "test-service-name";
- }
-
- }
-
- private static class MockDeploymentContext implements DeploymentContext {
-
- DeploymentContext context;
- ProviderDeploymentContributor providerContributor;
- Provider provider;
-
- public MockDeploymentContext(
- DeploymentContext context,
- ProviderDeploymentContributor providerContributor,
- Provider provider ) {
- this.context = context;
- this.providerContributor = providerContributor;
- this.provider = provider;
- }
-
- @Override
- public GatewayConfig getGatewayConfig() {
- return null;
- }
-
- @Override
- public Topology getTopology() {
- return null;
- }
-
- @Override
- public WebArchive getWebArchive() {
- return null;
- }
-
- @Override
- public WebAppDescriptor getWebAppDescriptor() {
- return null;
- }
-
- @Override
- public GatewayDescriptor getGatewayDescriptor() {
- return null;
- }
-
- @Override
- public void contributeFilter( Service service, ResourceDescriptor resource, String role, String name, List<FilterParamDescriptor> params ) {
- providerContributor.contributeFilter( context, provider, service, resource, params );
- }
-
- @Override
- public void addDescriptor( String name, Object descriptor ) {
- }
-
- @Override
- public <T> T getDescriptor( String name ) {
- return null;
- }
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-jersey/src/test/java/org/apache/knox/gateway/jersey/JerseyDeploymentContributorTest.java
----------------------------------------------------------------------
diff --git a/gateway-provider-jersey/src/test/java/org/apache/knox/gateway/jersey/JerseyDeploymentContributorTest.java b/gateway-provider-jersey/src/test/java/org/apache/knox/gateway/jersey/JerseyDeploymentContributorTest.java
new file mode 100644
index 0000000..3f48e36
--- /dev/null
+++ b/gateway-provider-jersey/src/test/java/org/apache/knox/gateway/jersey/JerseyDeploymentContributorTest.java
@@ -0,0 +1,259 @@
+/**
+ * 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.knox.gateway.jersey;
+
+import org.apache.knox.gateway.config.GatewayConfig;
+import org.apache.knox.gateway.deploy.DeploymentContext;
+import org.apache.knox.gateway.deploy.ProviderDeploymentContributor;
+import org.apache.knox.gateway.descriptor.FilterDescriptor;
+import org.apache.knox.gateway.descriptor.FilterParamDescriptor;
+import org.apache.knox.gateway.descriptor.GatewayDescriptor;
+import org.apache.knox.gateway.descriptor.GatewayDescriptorFactory;
+import org.apache.knox.gateway.descriptor.ResourceDescriptor;
+import org.apache.knox.gateway.topology.Provider;
+import org.apache.knox.gateway.topology.Service;
+import org.apache.knox.gateway.topology.Topology;
+import org.easymock.EasyMock;
+import org.jboss.shrinkwrap.api.ShrinkWrap;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.shrinkwrap.descriptor.api.webapp30.WebAppDescriptor;
+import org.junit.Test;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.ServiceLoader;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.fail;
+
+public class JerseyDeploymentContributorTest {
+
+ @Test
+ public void testServiceLoader() throws Exception {
+ ServiceLoader loader = ServiceLoader.load( ProviderDeploymentContributor.class );
+ Iterator iterator = loader.iterator();
+ assertThat( "Service iterator empty.", iterator.hasNext() );
+ while( iterator.hasNext() ) {
+ Object object = iterator.next();
+ if( object instanceof JerseyDispatchDeploymentContributor ) {
+ return;
+ }
+ }
+ fail( "Failed to find " + JerseyDispatchDeploymentContributor.class.getName() + " via service loader." );
+ }
+
+ @Test
+ public void testDeploymentContributors() throws Exception {
+ JerseyDispatchDeploymentContributor providerContributor = new JerseyDispatchDeploymentContributor();
+ assertThat( providerContributor.getRole(), is( "pivot" ) );
+ assertThat( providerContributor.getName(), is( "jersey" ) );
+
+ MockJerseyService serviceContributor = new MockJerseyService();
+
+ WebArchive webArchive = ShrinkWrap.create( WebArchive.class, "test-archive" );
+
+ Topology topology = new Topology();
+ topology.setName( "test-topology" );
+ Provider provider = new Provider();
+ provider.setRole( "pivot" );
+ provider.setName( "jersey" );
+ provider.setEnabled( true );
+ topology.addProvider( provider );
+
+ GatewayDescriptor descriptor = GatewayDescriptorFactory.create();
+
+ DeploymentContext context = EasyMock.createNiceMock( DeploymentContext.class );
+ EasyMock.expect( context.getWebArchive() ).andReturn( webArchive ).anyTimes();
+ EasyMock.expect( context.getTopology() ).andReturn( topology ).anyTimes();
+ EasyMock.expect( context.getGatewayDescriptor() ).andReturn( descriptor ).anyTimes();
+ context.contributeFilter(
+ EasyMock.<Service> isA( Service.class ),
+ EasyMock.<ResourceDescriptor> isA( ResourceDescriptor.class ),
+ EasyMock.<String> isA( String.class ),
+ EasyMock.<String> isA( String.class ),
+ EasyMock.<List> isA( List.class ) );
+ EasyMock.expectLastCall().andDelegateTo(
+ new MockDeploymentContext( context, providerContributor, provider ) ).anyTimes();
+
+ EasyMock.replay( context );
+
+ // Just make sure they don't blow up.
+ providerContributor.initializeContribution( context );
+ serviceContributor.initializeContribution( context );
+
+ Service service = new Service();
+ service.setRole( "test-service-role" );
+ service.setName( "test-service-name" );
+ service.addUrl( "http://test-service-host:777/test-service-path" );
+
+ // This should end up calling providerContributor.contributeFilter
+ serviceContributor.contributeService( context, service );
+ ResourceDescriptor resource = context.getGatewayDescriptor().resources().get( 0 );
+
+ // Just make sure they don't blow up.
+ serviceContributor.finalizeContribution( context );
+ providerContributor.finalizeContribution( context );
+
+ /*
+ GatewayDescriptorFactory.store( descriptor, "xml", new PrintWriter( System.out ) );
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+ <gateway>
+ <resource>
+ <role>test-service-role</role>
+ <pattern>test-service/?**</pattern>
+ <filter>
+ <role>dispatch</role>
+ <name>jersey</name>
+ <class>org.glassfish.jersey.servlet.ServletContainer</class>
+ <param>
+ <name>jersey.config.server.provider.packages</name>
+ <value>test-package-1;test-package-2</value>
+ </param>
+ </filter>
+ </resource>
+ <resource>
+ <role>test-service-role</role>
+ <pattern>test-service/**?**</pattern>
+ <filter>
+ <role>dispatch</role>
+ <name>jersey</name>
+ <class>org.glassfish.jersey.servlet.ServletContainer</class>
+ <param>
+ <name>jersey.config.server.provider.packages</name>
+ <value>test-package-1;test-package-2</value>
+ </param>
+ </filter>
+ </resource>
+ </gateway>
+ */
+ List<ResourceDescriptor> resources = context.getGatewayDescriptor().resources();
+ assertThat( resources.size(), is( 2 ) );
+
+ resource = resources.get( 0 );
+ assertThat( resource.role(), is( "test-service-role" ) );
+ assertThat( resource.pattern(), is( "test-service/?**" ) );
+ List<FilterDescriptor> filters = resource.filters();
+ assertThat( filters.size(), is( 1 ) );
+ FilterDescriptor filter = filters.get( 0 );
+ assertThat( filter.role(), is( "pivot") );
+ assertThat( filter.name(), is( "jersey" ) );
+ assertThat( filter.impl(), is( "org.glassfish.jersey.servlet.ServletContainer" ) );
+ List<FilterParamDescriptor> params = filter.params();
+ assertThat( params.size(), is( 1 ) );
+ FilterParamDescriptor param = params.get( 0 );
+ assertThat( param.name(), is( "jersey.config.server.provider.packages" ) );
+ assertThat( param.value(), is( "test-package-1;test-package-2" ) );
+
+ resource = resources.get( 1 );
+ assertThat( resource.role(), is( "test-service-role" ) );
+ assertThat( resource.pattern(), is( "test-service/**?**" ) );
+ filters = resource.filters();
+ assertThat( filters.size(), is( 1 ) );
+ filter = filters.get( 0 );
+ assertThat( filter.role(), is( "pivot") );
+ assertThat( filter.name(), is( "jersey" ) );
+ assertThat( filter.impl(), is( "org.glassfish.jersey.servlet.ServletContainer" ) );
+ params = filter.params();
+ assertThat( params.size(), is( 1 ) );
+ param = params.get( 0 );
+ assertThat( param.name(), is( "jersey.config.server.provider.packages" ) );
+ assertThat( param.value(), is( "test-package-1;test-package-2" ) );
+ }
+
+ private static class MockJerseyService extends JerseyServiceDeploymentContributorBase {
+
+ @Override
+ protected String[] getPatterns() {
+ return new String[]{ "test-service/?**", "test-service/**?**" };
+ }
+
+ @Override
+ protected String[] getPackages() {
+ return new String[]{ "test-package-1", "test-package-2" };
+ }
+
+ @Override
+ public String getRole() {
+ return "test-service-role";
+ }
+
+ @Override
+ public String getName() {
+ return "test-service-name";
+ }
+
+ }
+
+ private static class MockDeploymentContext implements DeploymentContext {
+
+ DeploymentContext context;
+ ProviderDeploymentContributor providerContributor;
+ Provider provider;
+
+ public MockDeploymentContext(
+ DeploymentContext context,
+ ProviderDeploymentContributor providerContributor,
+ Provider provider ) {
+ this.context = context;
+ this.providerContributor = providerContributor;
+ this.provider = provider;
+ }
+
+ @Override
+ public GatewayConfig getGatewayConfig() {
+ return null;
+ }
+
+ @Override
+ public Topology getTopology() {
+ return null;
+ }
+
+ @Override
+ public WebArchive getWebArchive() {
+ return null;
+ }
+
+ @Override
+ public WebAppDescriptor getWebAppDescriptor() {
+ return null;
+ }
+
+ @Override
+ public GatewayDescriptor getGatewayDescriptor() {
+ return null;
+ }
+
+ @Override
+ public void contributeFilter( Service service, ResourceDescriptor resource, String role, String name, List<FilterParamDescriptor> params ) {
+ providerContributor.contributeFilter( context, provider, service, resource, params );
+ }
+
+ @Override
+ public void addDescriptor( String name, Object descriptor ) {
+ }
+
+ @Override
+ public <T> T getDescriptor( String name ) {
+ return null;
+ }
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/hadoop/gateway/hostmap/api/HostmapFunctionDescriptor.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/hadoop/gateway/hostmap/api/HostmapFunctionDescriptor.java b/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/hadoop/gateway/hostmap/api/HostmapFunctionDescriptor.java
deleted file mode 100644
index 01d41b9..0000000
--- a/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/hadoop/gateway/hostmap/api/HostmapFunctionDescriptor.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/**
- * 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.hadoop.gateway.hostmap.api;
-
-import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteFunctionDescriptor;
-
-public class HostmapFunctionDescriptor implements UrlRewriteFunctionDescriptor<HostmapFunctionDescriptor> {
-
- public static final String FUNCTION_NAME = "hostmap";
-
- private String configLocation;
-
- @Override
- public String name() {
- return FUNCTION_NAME;
- }
-
- public HostmapFunctionDescriptor config( String configLocation ) {
- this.configLocation = configLocation;
- return this;
- }
-
- public String config() {
- return configLocation;
- }
-
- public String getConfig() {
- return config();
- }
-
- public void setConfig( String configLocation ) {
- config( configLocation );
- }
-
-}
http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/hadoop/gateway/hostmap/impl/HostmapDeploymentContributor.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/hadoop/gateway/hostmap/impl/HostmapDeploymentContributor.java b/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/hadoop/gateway/hostmap/impl/HostmapDeploymentContributor.java
deleted file mode 100644
index fdd0b03..0000000
--- a/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/hadoop/gateway/hostmap/impl/HostmapDeploymentContributor.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * 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.hadoop.gateway.hostmap.impl;
-
-import org.apache.hadoop.gateway.deploy.DeploymentContext;
-import org.apache.hadoop.gateway.deploy.ProviderDeploymentContributor;
-import org.apache.hadoop.gateway.deploy.ProviderDeploymentContributorBase;
-import org.apache.hadoop.gateway.descriptor.FilterParamDescriptor;
-import org.apache.hadoop.gateway.descriptor.ResourceDescriptor;
-import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteRulesDescriptor;
-import org.apache.hadoop.gateway.hostmap.api.HostmapFunctionDescriptor;
-import org.apache.hadoop.gateway.topology.Provider;
-import org.apache.hadoop.gateway.topology.Service;
-import org.jboss.shrinkwrap.api.asset.Asset;
-import org.jboss.shrinkwrap.api.asset.StringAsset;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.util.List;
-import java.util.Map;
-
-public class HostmapDeploymentContributor
- extends ProviderDeploymentContributorBase
- implements ProviderDeploymentContributor {
-
- public static final String PROVIDER_ROLE_NAME = HostmapFunctionDescriptor.FUNCTION_NAME;
- public static final String PROVIDER_IMPL_NAME = "static";
- private static final String REWRITE_ROLE_NAME = "rewrite";
-
- @Override
- public String getRole() {
- return PROVIDER_ROLE_NAME;
- }
-
- @Override
- public String getName() {
- return PROVIDER_IMPL_NAME;
- }
-
- // Write the provider init params to the hostmap.txt file.
- // Add the function to the rewrite descriptor providing the location of the hostmap.txt file.
- @Override
- public void contributeProvider( DeploymentContext context, Provider provider ) {
- if( provider.isEnabled() ) {
- UrlRewriteRulesDescriptor rules = context.getDescriptor( REWRITE_ROLE_NAME );
- if( rules != null ) {
- HostmapFunctionDescriptor func = rules.addFunction( HostmapFunctionDescriptor.FUNCTION_NAME );
- if( func != null ) {
- Asset asset = createAsset( provider );
- context.getWebArchive().addAsWebInfResource(
- asset, HostmapFunctionProcessor.DESCRIPTOR_DEFAULT_FILE_NAME );
- func.config( HostmapFunctionProcessor.DESCRIPTOR_DEFAULT_LOCATION );
- }
- }
- }
- }
-
- private Asset createAsset( Provider provider ) {
- StringWriter buffer = new StringWriter();
- PrintWriter writer = new PrintWriter( buffer );
- for( Map.Entry<String, String> entry : provider.getParams().entrySet() ) {
- String externalHosts = entry.getKey();
- String internalHosts = entry.getValue();
- writer.print( externalHosts );
- writer.print( "=" );
- writer.println( internalHosts );
- }
- writer.close();
- String string = buffer.toString();
- Asset asset = new StringAsset( string );
- return asset;
- }
-
- @Override
- public void contributeFilter(
- DeploymentContext context,
- Provider provider,
- Service service,
- ResourceDescriptor resource,
- List<FilterParamDescriptor> params ) {
- // NoOp.
- }
-
-}
http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/hadoop/gateway/hostmap/impl/HostmapFunctionProcessor.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/hadoop/gateway/hostmap/impl/HostmapFunctionProcessor.java b/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/hadoop/gateway/hostmap/impl/HostmapFunctionProcessor.java
deleted file mode 100644
index ca55c16..0000000
--- a/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/hadoop/gateway/hostmap/impl/HostmapFunctionProcessor.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * 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.hadoop.gateway.hostmap.impl;
-
-import org.apache.hadoop.gateway.filter.rewrite.api.UrlRewriteEnvironment;
-import org.apache.hadoop.gateway.filter.rewrite.spi.UrlRewriteContext;
-import org.apache.hadoop.gateway.filter.rewrite.spi.UrlRewriteFunctionProcessor;
-import org.apache.hadoop.gateway.hostmap.api.HostmapFunctionDescriptor;
-import org.apache.hadoop.gateway.services.GatewayServices;
-import org.apache.hadoop.gateway.services.hostmap.FileBasedHostMapper;
-import org.apache.hadoop.gateway.services.hostmap.HostMapper;
-import org.apache.hadoop.gateway.services.hostmap.HostMapperService;
-
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-public class HostmapFunctionProcessor
- implements UrlRewriteFunctionProcessor<HostmapFunctionDescriptor> {
-
- public static final String DESCRIPTOR_DEFAULT_FILE_NAME = "hostmap.txt";
- public static final String DESCRIPTOR_DEFAULT_LOCATION = "/WEB-INF/" + DESCRIPTOR_DEFAULT_FILE_NAME;
-
- private HostMapperService hostMapperService;
- private HostMapper hostMapper = null;
- private String clusterName;
-
- @Override
- public String name() {
- return HostmapFunctionDescriptor.FUNCTION_NAME;
- }
-
- @Override
- public void initialize( UrlRewriteEnvironment environment, HostmapFunctionDescriptor descriptor ) throws Exception {
- URL url = environment.getResource( DESCRIPTOR_DEFAULT_LOCATION );
- hostMapper = new FileBasedHostMapper( url );
- clusterName = environment.getAttribute( GatewayServices.GATEWAY_CLUSTER_ATTRIBUTE );
- GatewayServices services = environment.getAttribute( GatewayServices.GATEWAY_SERVICES_ATTRIBUTE );
- if( clusterName != null && services != null ) {
- hostMapperService = services.getService( GatewayServices.HOST_MAPPING_SERVICE );
- if( hostMapperService != null ) {
- hostMapperService.registerHostMapperForCluster( clusterName, hostMapper );
- }
- }
- }
-
- @Override
- public void destroy() throws Exception {
- if( hostMapperService != null && clusterName != null ) {
- hostMapperService.removeHostMapperForCluster( clusterName );
- }
- }
-
- @Override
- public List<String> resolve( UrlRewriteContext context, List<String> parameters ) throws Exception {
- List<String> result = null;
- if( parameters != null ) {
- result = new ArrayList<String>( parameters.size() );
- for( String parameter : parameters ) {
- switch( context.getDirection() ) {
- case IN:
- parameter = hostMapper.resolveInboundHostName( parameter );
- break;
- case OUT:
- parameter = hostMapper.resolveOutboundHostName( parameter );
- break;
- }
- result.add( parameter );
- }
-// System.out.println( "HOSTMAP: " + parameter + "->" + value );
- }
- return result;
- }
-
-}
-
http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/knox/gateway/hostmap/api/HostmapFunctionDescriptor.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/knox/gateway/hostmap/api/HostmapFunctionDescriptor.java b/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/knox/gateway/hostmap/api/HostmapFunctionDescriptor.java
new file mode 100644
index 0000000..1071bc6
--- /dev/null
+++ b/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/knox/gateway/hostmap/api/HostmapFunctionDescriptor.java
@@ -0,0 +1,51 @@
+/**
+ * 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.knox.gateway.hostmap.api;
+
+import org.apache.knox.gateway.filter.rewrite.api.UrlRewriteFunctionDescriptor;
+
+public class HostmapFunctionDescriptor implements
+ UrlRewriteFunctionDescriptor<HostmapFunctionDescriptor> {
+
+ public static final String FUNCTION_NAME = "hostmap";
+
+ private String configLocation;
+
+ @Override
+ public String name() {
+ return FUNCTION_NAME;
+ }
+
+ public HostmapFunctionDescriptor config( String configLocation ) {
+ this.configLocation = configLocation;
+ return this;
+ }
+
+ public String config() {
+ return configLocation;
+ }
+
+ public String getConfig() {
+ return config();
+ }
+
+ public void setConfig( String configLocation ) {
+ config( configLocation );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/knox/gateway/hostmap/impl/HostmapDeploymentContributor.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/knox/gateway/hostmap/impl/HostmapDeploymentContributor.java b/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/knox/gateway/hostmap/impl/HostmapDeploymentContributor.java
new file mode 100644
index 0000000..d39090e
--- /dev/null
+++ b/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/knox/gateway/hostmap/impl/HostmapDeploymentContributor.java
@@ -0,0 +1,99 @@
+/**
+ * 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.knox.gateway.hostmap.impl;
+
+import org.apache.knox.gateway.deploy.DeploymentContext;
+import org.apache.knox.gateway.deploy.ProviderDeploymentContributor;
+import org.apache.knox.gateway.deploy.ProviderDeploymentContributorBase;
+import org.apache.knox.gateway.descriptor.FilterParamDescriptor;
+import org.apache.knox.gateway.descriptor.ResourceDescriptor;
+import org.apache.knox.gateway.filter.rewrite.api.UrlRewriteRulesDescriptor;
+import org.apache.knox.gateway.hostmap.api.HostmapFunctionDescriptor;
+import org.apache.knox.gateway.topology.Provider;
+import org.apache.knox.gateway.topology.Service;
+import org.jboss.shrinkwrap.api.asset.Asset;
+import org.jboss.shrinkwrap.api.asset.StringAsset;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.List;
+import java.util.Map;
+
+public class HostmapDeploymentContributor
+ extends ProviderDeploymentContributorBase
+ implements ProviderDeploymentContributor {
+
+ public static final String PROVIDER_ROLE_NAME = HostmapFunctionDescriptor.FUNCTION_NAME;
+ public static final String PROVIDER_IMPL_NAME = "static";
+ private static final String REWRITE_ROLE_NAME = "rewrite";
+
+ @Override
+ public String getRole() {
+ return PROVIDER_ROLE_NAME;
+ }
+
+ @Override
+ public String getName() {
+ return PROVIDER_IMPL_NAME;
+ }
+
+ // Write the provider init params to the hostmap.txt file.
+ // Add the function to the rewrite descriptor providing the location of the hostmap.txt file.
+ @Override
+ public void contributeProvider( DeploymentContext context, Provider provider ) {
+ if( provider.isEnabled() ) {
+ UrlRewriteRulesDescriptor rules = context.getDescriptor( REWRITE_ROLE_NAME );
+ if( rules != null ) {
+ HostmapFunctionDescriptor func = rules.addFunction( HostmapFunctionDescriptor.FUNCTION_NAME );
+ if( func != null ) {
+ Asset asset = createAsset( provider );
+ context.getWebArchive().addAsWebInfResource(
+ asset, HostmapFunctionProcessor.DESCRIPTOR_DEFAULT_FILE_NAME );
+ func.config( HostmapFunctionProcessor.DESCRIPTOR_DEFAULT_LOCATION );
+ }
+ }
+ }
+ }
+
+ private Asset createAsset( Provider provider ) {
+ StringWriter buffer = new StringWriter();
+ PrintWriter writer = new PrintWriter( buffer );
+ for( Map.Entry<String, String> entry : provider.getParams().entrySet() ) {
+ String externalHosts = entry.getKey();
+ String internalHosts = entry.getValue();
+ writer.print( externalHosts );
+ writer.print( "=" );
+ writer.println( internalHosts );
+ }
+ writer.close();
+ String string = buffer.toString();
+ Asset asset = new StringAsset( string );
+ return asset;
+ }
+
+ @Override
+ public void contributeFilter(
+ DeploymentContext context,
+ Provider provider,
+ Service service,
+ ResourceDescriptor resource,
+ List<FilterParamDescriptor> params ) {
+ // NoOp.
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/knox/blob/af9b0c3d/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/knox/gateway/hostmap/impl/HostmapFunctionProcessor.java
----------------------------------------------------------------------
diff --git a/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/knox/gateway/hostmap/impl/HostmapFunctionProcessor.java b/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/knox/gateway/hostmap/impl/HostmapFunctionProcessor.java
new file mode 100644
index 0000000..5b16b47
--- /dev/null
+++ b/gateway-provider-rewrite-func-hostmap-static/src/main/java/org/apache/knox/gateway/hostmap/impl/HostmapFunctionProcessor.java
@@ -0,0 +1,92 @@
+/**
+ * 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.knox.gateway.hostmap.impl;
+
+import org.apache.knox.gateway.filter.rewrite.api.UrlRewriteEnvironment;
+import org.apache.knox.gateway.filter.rewrite.spi.UrlRewriteContext;
+import org.apache.knox.gateway.filter.rewrite.spi.UrlRewriteFunctionProcessor;
+import org.apache.knox.gateway.hostmap.api.HostmapFunctionDescriptor;
+import org.apache.knox.gateway.services.GatewayServices;
+import org.apache.knox.gateway.services.hostmap.FileBasedHostMapper;
+import org.apache.knox.gateway.services.hostmap.HostMapper;
+import org.apache.knox.gateway.services.hostmap.HostMapperService;
+import org.apache.knox.gateway.filter.rewrite.api.UrlRewriter;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+public class HostmapFunctionProcessor
+ implements UrlRewriteFunctionProcessor<HostmapFunctionDescriptor> {
+
+ public static final String DESCRIPTOR_DEFAULT_FILE_NAME = "hostmap.txt";
+ public static final String DESCRIPTOR_DEFAULT_LOCATION = "/WEB-INF/" + DESCRIPTOR_DEFAULT_FILE_NAME;
+
+ private HostMapperService hostMapperService;
+ private HostMapper hostMapper = null;
+ private String clusterName;
+
+ @Override
+ public String name() {
+ return HostmapFunctionDescriptor.FUNCTION_NAME;
+ }
+
+ @Override
+ public void initialize( UrlRewriteEnvironment environment, HostmapFunctionDescriptor descriptor ) throws Exception {
+ URL url = environment.getResource( DESCRIPTOR_DEFAULT_LOCATION );
+ hostMapper = new FileBasedHostMapper( url );
+ clusterName = environment.getAttribute( GatewayServices.GATEWAY_CLUSTER_ATTRIBUTE );
+ GatewayServices services = environment.getAttribute( GatewayServices.GATEWAY_SERVICES_ATTRIBUTE );
+ if( clusterName != null && services != null ) {
+ hostMapperService = services.getService( GatewayServices.HOST_MAPPING_SERVICE );
+ if( hostMapperService != null ) {
+ hostMapperService.registerHostMapperForCluster( clusterName, hostMapper );
+ }
+ }
+ }
+
+ @Override
+ public void destroy() throws Exception {
+ if( hostMapperService != null && clusterName != null ) {
+ hostMapperService.removeHostMapperForCluster( clusterName );
+ }
+ }
+
+ @Override
+ public List<String> resolve( UrlRewriteContext context, List<String> parameters ) throws Exception {
+ List<String> result = null;
+ if( parameters != null ) {
+ result = new ArrayList<String>( parameters.size() );
+ for( String parameter : parameters ) {
+ switch( context.getDirection() ) {
+ case UrlRewriter.Direction.IN:
+ parameter = hostMapper.resolveInboundHostName( parameter );
+ break;
+ case UrlRewriter.Direction.OUT:
+ parameter = hostMapper.resolveOutboundHostName( parameter );
+ break;
+ }
+ result.add( parameter );
+ }
+// System.out.println( "HOSTMAP: " + parameter + "->" + value );
+ }
+ return result;
+ }
+
+}
+