You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by su...@apache.org on 2015/01/30 03:03:59 UTC
[21/24] knox git commit: Added Kevin's config injector
http://git-wip-us.apache.org/repos/asf/knox/blob/24156aaf/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/FuncTest.java
----------------------------------------------------------------------
diff --git a/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/FuncTest.java b/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/FuncTest.java
new file mode 100755
index 0000000..72bdedf
--- /dev/null
+++ b/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/FuncTest.java
@@ -0,0 +1,379 @@
+/**
+ * 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.config;
+
+import org.apache.hadoop.gateway.config.impl.MappedConfigurationBinding;
+import org.junit.Test;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.containsString;
+import static org.hamcrest.core.AllOf.allOf;
+import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.fail;
+
+import static org.apache.hadoop.gateway.config.ConfigurationInjectorBuilder.*;
+
+public class FuncTest {
+
+ public static class TestBean {
+ @Configure
+ String stringMember = "stringDefault";
+
+ @Configure
+ int intMember = 1;
+
+ @Configure
+ Integer integerMember = Integer.valueOf( 1 );
+
+ @Configure
+ public void setStringProp( String s ) {
+ stringPropField = s;
+ }
+ protected String stringPropField = "stringDefault";
+
+ @Configure
+ @Alias("altStringProp")
+ public void setNamedStringProp( String s ) {
+ stringPropFieldAlt = s;
+ }
+ protected String stringPropFieldAlt = "stringDefault";
+
+ @Configure
+ public void setNamedArgMethod( @Configure @Alias("altArgStringProp") String s ) {
+ stringPropFieldAltArg = s;
+ }
+ protected String stringPropFieldAltArg = "stringDefault";
+
+ @Configure
+ public void setMultiArgs(
+ @Configure @Alias("multiArg1") String s,
+ @Configure @Alias("multiArg2") Integer i,
+ @Configure @Alias("multiArg3") int n ) {
+ multiArgStringField = s;
+ multiArgIntegerField = i;
+ multiArgIntField = n;
+ }
+ String multiArgStringField = "default";
+ Integer multiArgIntegerField = 0;
+ int multiArgIntField = 0;
+
+ }
+
+ @Test
+ public void testMapOfStrings() {
+
+ Map<String,String> testConfig = new HashMap<String,String>();
+ testConfig.put( "stringMember", "stringValue" );
+ testConfig.put( "intMember", "2" );
+ testConfig.put( "integerMember", "2" );
+ testConfig.put( "stringProp", "stringValue" );
+ testConfig.put( "altStringProp", "stringValue" );
+ testConfig.put( "altArgStringProp", "stringValue" );
+ testConfig.put( "multiArg1", "stringValue" );
+ testConfig.put( "multiArg2", "42" );
+ testConfig.put( "multiArg3", "42" );
+
+ TestBean testBean = new TestBean();
+
+ configuration().target( testBean ).source( testConfig ).inject();
+
+ assertThat( testBean.stringMember, is( "stringValue" ) );
+ assertThat( testBean.intMember, is( 2 ) );
+ assertThat( testBean.integerMember, is( new Integer(2) ) );
+ assertThat( testBean.stringPropField, is( "stringValue" ) );
+ assertThat( testBean.stringPropFieldAlt, is( "stringValue" ) );
+ assertThat( testBean.stringPropFieldAltArg, is( "stringValue" ) );
+ assertThat( testBean.multiArgStringField, is( "stringValue" ) );
+ assertThat( testBean.multiArgIntegerField, is( 42 ) );
+ assertThat( testBean.multiArgIntField, is( 42 ) );
+ }
+
+ @Test
+ public void testProperties() {
+
+ Properties testConfig = new Properties();
+ testConfig.put( "stringMember", "stringValue" );
+ testConfig.put( "intMember", "2" );
+ testConfig.put( "integerMember", "2" );
+ testConfig.put( "stringProp", "stringValue" );
+ testConfig.put( "altStringProp", "stringValue" );
+ testConfig.put( "altArgStringProp", "stringValue" );
+ testConfig.put( "multiArg1", "stringValue" );
+ testConfig.put( "multiArg2", "42" );
+ testConfig.put( "multiArg3", "42" );
+
+ TestBean testBean = new TestBean();
+
+ configuration().target( testBean ).source( testConfig ).inject();
+
+ assertThat( testBean.stringMember, is( "stringValue" ) );
+ assertThat( testBean.intMember, is( 2 ) );
+ assertThat( testBean.integerMember, is( new Integer(2) ) );
+ assertThat( testBean.stringPropField, is( "stringValue" ) );
+ assertThat( testBean.stringPropFieldAlt, is( "stringValue" ) );
+ assertThat( testBean.stringPropFieldAltArg, is( "stringValue" ) );
+ assertThat( testBean.multiArgStringField, is( "stringValue" ) );
+ assertThat( testBean.multiArgIntegerField, is( 42 ) );
+ assertThat( testBean.multiArgIntField, is( 42 ) );
+ }
+
+ public static class TestAdapter implements ConfigurationAdapter {
+
+ private Map<String,String> config;
+
+ public TestAdapter( Map<String,String> config ) {
+ this.config = config;
+ }
+
+ @Override
+ public String getConfigurationValue( String name ) {
+ return config.get( name );
+ }
+
+ }
+
+ @Test
+ public void testExplicitProvider() {
+
+ Map<String,String> testConfig = new HashMap<String,String>();
+ testConfig.put( "stringMember", "stringValue" );
+ testConfig.put( "intMember", "2" );
+ testConfig.put( "integerMember", "2" );
+ testConfig.put( "stringProp", "stringValue" );
+ testConfig.put( "altStringProp", "stringValue" );
+ testConfig.put( "altArgStringProp", "stringValue" );
+ testConfig.put( "multiArg1", "stringValue" );
+ testConfig.put( "multiArg2", "42" );
+ testConfig.put( "multiArg3", "42" );
+
+ TestBean testBean = new TestBean();
+
+ configuration().target( testBean ).source( new TestAdapter( testConfig ) ).inject();
+
+ assertThat( testBean.stringMember, is( "stringValue" ) );
+ assertThat( testBean.intMember, is( 2 ) );
+ assertThat( testBean.integerMember, is( new Integer(2) ) );
+ assertThat( testBean.stringPropField, is( "stringValue" ) );
+ assertThat( testBean.stringPropFieldAlt, is( "stringValue" ) );
+ assertThat( testBean.stringPropFieldAltArg, is( "stringValue" ) );
+ assertThat( testBean.multiArgStringField, is( "stringValue" ) );
+ assertThat( testBean.multiArgIntegerField, is( 42 ) );
+ assertThat( testBean.multiArgIntField, is( 42 ) );
+ }
+
+ @Test
+ public void testMapOfObjects() {
+
+ Map<Object,Object> testConfig = new HashMap<Object,Object>();
+ testConfig.put( "stringMember", "stringValue" );
+ testConfig.put( "intMember", 42 );
+ testConfig.put( "integerMember", new Integer(42) );
+ testConfig.put( "stringProp", "stringValue" );
+ testConfig.put( "altStringProp", "stringValue" );
+ testConfig.put( "altArgStringProp", "stringValue" );
+ testConfig.put( "multiArg1", "stringValue" );
+ testConfig.put( "multiArg2", new Integer(42) );
+ testConfig.put( "multiArg3", "42" );
+
+ TestBean testBean = new TestBean();
+
+ configuration().target( testBean ).source( testConfig ).inject();
+
+ assertThat( testBean.stringMember, is( "stringValue" ) );
+ assertThat( testBean.intMember, is( 42 ) );
+ assertThat( testBean.integerMember, is( new Integer(42) ) );
+ assertThat( testBean.stringPropField, is( "stringValue" ) );
+ assertThat( testBean.stringPropFieldAlt, is( "stringValue" ) );
+ assertThat( testBean.stringPropFieldAltArg, is( "stringValue" ) );
+ assertThat( testBean.multiArgStringField, is( "stringValue" ) );
+ assertThat( testBean.multiArgIntegerField, is( 42 ) );
+ assertThat( testBean.multiArgIntField, is( 42 ) );
+ }
+
+ public class Target {
+ @Configure @Alias("user.name")
+ private String user;
+ }
+
+ public class Adapter implements ConfigurationAdapter {
+ @Override
+ public String getConfigurationValue( String name ) throws ConfigurationException {
+ return System.getProperty( name );
+ }
+ }
+
+ @Test
+ public void testFactoryConfigurationDirect() {
+ Target target = new Target();
+ configuration().target( target ).source( System.getProperties() ).inject();
+ assertThat( target.user, is( System.getProperty( "user.name" ) ) );
+ }
+
+ @Test
+ public void testFactoryConfigurationAdapter() {
+ Target target = new Target();
+ configuration().target( target ).source( new Adapter() ).inject();
+ assertThat( target.user, is( System.getProperty( "user.name" ) ) );
+ }
+
+ @Test
+ public void testMissingRequiredFieldConfiguration() {
+ class RequiredFieldTarget {
+ @Configure
+ private String required;
+ }
+ RequiredFieldTarget target = new RequiredFieldTarget();
+ try {
+ configuration().target( target ).source( System.getProperties() ).inject();
+ fail( "Expected an exception because the configuration values could not be populated." );
+ } catch ( ConfigurationException e ) {
+ assertThat( e.getMessage(), allOf(containsString("Failed"),containsString( "find" ),containsString( "required" )) );
+ }
+ }
+
+ @Test
+ public void testMissingOptionalFieldConfiguration() {
+ class OptionalFieldTarget {
+ @Configure
+ @Optional
+ private String optional = "default";
+ }
+ OptionalFieldTarget target = new OptionalFieldTarget();
+ configuration().target( target ).source( System.getProperties() ).inject();
+ assertThat( target.optional, is("default") );
+ }
+
+ @Test
+ public void testMissingRequiredConfigurationParameter() {
+ class Target {
+ private String field;
+ @Configure
+ public void setRequired(String value) {
+ field = value;
+ }
+ }
+ Target target = new Target();
+ try {
+ configuration().target( target ).source( System.getProperties() ).inject();
+ fail( "Expected an exception because the configuration values could not be populated." );
+ } catch ( ConfigurationException e ) {
+ assertThat( e.getMessage(), allOf(containsString("Failed"),containsString( "find" ),containsString( "required" )) );
+ }
+ }
+
+ @Test
+ public void testMissingRequiredConfigurationParameterWithDefault() {
+ class Target {
+ private String field;
+ @Configure
+ public void setRequired(@Default("default")String value) {
+ field = value;
+ }
+ }
+ Target target = new Target();
+ configuration().target( target ).source( System.getProperties() ).inject();
+ assertThat( target.field, is( "default" ) );
+ }
+
+ @Test
+ public void testTwoMissingRequiredConfigurationParameterWithDefault() {
+ class Target {
+ private String field1;
+ private String field2;
+ @Configure
+ public void setRequired(@Default("default1")String value1, @Default("default2")String value2) {
+ field1 = value1;
+ field2 = value2;
+ }
+ }
+ Target target = new Target();
+ configuration().target( target ).source( System.getProperties() ).inject();
+ assertThat( target.field1, is( "default1" ) );
+ assertThat( target.field2, is("default2") );
+ }
+
+ @Test
+ public void testFieldBinding() {
+ class Target {
+ @Configure
+ private String user;
+ }
+ class Binding extends MappedConfigurationBinding {
+ Binding() {
+ bind("user","user.name");
+ }
+ }
+ Target target = new Target();
+ Properties source = System.getProperties();
+ ConfigurationBinding binding = new Binding();
+ configuration().target( target ).source( source ).binding( binding ).inject();
+ assertThat( target.user, is(System.getProperty("user.name")));
+
+ }
+
+ @Test
+ public void testFieldBindingUsingBuilderBinding() {
+ class Target {
+ @Configure
+ private String user;
+ }
+ Target target = new Target();
+ Properties source = System.getProperties();
+ configuration().target( target ).source( source ).bind( "user", "user.name" ).inject();
+ assertThat( target.user, is(System.getProperty("user.name")));
+
+ }
+
+ @Test
+ public void testFieldBindingUsingBuilderBindingFactory() {
+ class Target {
+ @Configure
+ private String user;
+ }
+ Target target = new Target();
+ Properties source = System.getProperties();
+ ConfigurationBinding binding = configuration().bind( "user", "user.name" ).binding();
+ configuration().target( target ).source( source ).binding( binding ).inject();
+ assertThat( target.user, is( System.getProperty( "user.name" ) ) );
+
+ }
+
+ public static class UserBean {
+ public String getPrincipal() {
+ return "test-user";
+ }
+ }
+
+ @Test
+ public void testBeanAdapter() {
+ Target target = new Target();
+ UserBean bean = new UserBean();
+ configuration()
+ .target( target )
+ .source( bean )
+ .bind( "user.name", "principal" )
+ .inject();
+ assertThat( target.user, is( "test-user" ) );
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/knox/blob/24156aaf/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/MapFieldSampleTest.java
----------------------------------------------------------------------
diff --git a/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/MapFieldSampleTest.java b/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/MapFieldSampleTest.java
new file mode 100755
index 0000000..b9336b5
--- /dev/null
+++ b/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/MapFieldSampleTest.java
@@ -0,0 +1,45 @@
+/**
+ * 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.config;
+
+import org.junit.Test;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+public class MapFieldSampleTest {
+
+ public static class Target {
+ @Configure
+ private int retryLimit = 3;
+ }
+
+ static Map<String,String> config = new HashMap<String,String>();
+ static { config.put( "retryLimit", "5" ); }
+
+ @Test
+ public void sample() {
+ Target target = new Target();
+ ConfigurationInjectorBuilder.configuration().target( target ).source( config ).inject();
+ assertThat( target.retryLimit, is(5) );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/knox/blob/24156aaf/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/MapMethodSampleTest.java
----------------------------------------------------------------------
diff --git a/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/MapMethodSampleTest.java b/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/MapMethodSampleTest.java
new file mode 100755
index 0000000..96f46ec
--- /dev/null
+++ b/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/MapMethodSampleTest.java
@@ -0,0 +1,49 @@
+/**
+ * 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.config;
+
+import org.junit.Test;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+public class MapMethodSampleTest {
+
+ public static class Target {
+ private int limit = 3;
+
+ @Configure
+ public void setRetryLimit( int value ) {
+ limit = value;
+ }
+ }
+
+ static Map<String,String> config = new HashMap<String,String>();
+ static { config.put( "retryLimit", "5" ); }
+
+ @Test
+ public void sample() {
+ Target target = new Target();
+ ConfigurationInjectorBuilder.configuration().target( target ).source( config ).inject();
+ assertThat( target.limit, is( 5 ) );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/knox/blob/24156aaf/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/PropertiesFactorySampleTest.java
----------------------------------------------------------------------
diff --git a/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/PropertiesFactorySampleTest.java b/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/PropertiesFactorySampleTest.java
new file mode 100755
index 0000000..2adbe72
--- /dev/null
+++ b/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/PropertiesFactorySampleTest.java
@@ -0,0 +1,40 @@
+/**
+ * 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.config;
+
+import org.junit.Test;
+
+import static org.apache.hadoop.gateway.config.ConfigurationInjectorBuilder.*;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+public class PropertiesFactorySampleTest {
+
+ public static class Target {
+ @Configure @Alias("user.name")
+ private String user = "nobody";
+ }
+
+ @Test
+ public void sampleDirect() {
+ Target target = new Target();
+ configuration().target( target ).source( System.getProperties() ).inject();
+ assertThat( target.user, is( System.getProperty( "user.name" ) ) );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/knox/blob/24156aaf/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/PropertiesFieldSampleTest.java
----------------------------------------------------------------------
diff --git a/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/PropertiesFieldSampleTest.java b/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/PropertiesFieldSampleTest.java
new file mode 100755
index 0000000..db0af61
--- /dev/null
+++ b/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/PropertiesFieldSampleTest.java
@@ -0,0 +1,39 @@
+/**
+ * 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.config;
+
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+public class PropertiesFieldSampleTest {
+
+ public static class Target {
+ @Configure @Alias("user.name")
+ private String user = "nobody";
+ }
+
+ @Test
+ public void sample() {
+ Target target = new Target();
+ ConfigurationInjectorBuilder.configuration().target( target ).source( System.getProperties() ).inject();
+ assertThat( target.user, is( System.getProperty( "user.name" ) ) );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/knox/blob/24156aaf/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/PropertiesMethodSampleTest.java
----------------------------------------------------------------------
diff --git a/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/PropertiesMethodSampleTest.java b/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/PropertiesMethodSampleTest.java
new file mode 100755
index 0000000..4b72e3b
--- /dev/null
+++ b/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/PropertiesMethodSampleTest.java
@@ -0,0 +1,57 @@
+/**
+ * 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.config;
+
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+public class PropertiesMethodSampleTest {
+
+ public static class Target {
+
+ private String user = "nobody";
+ private String home = "nowhere";
+ private String temp = "nowhere";
+
+ @Configure
+ @Alias("user.name")
+ public void setUser( String value ) {
+ user = value;
+ }
+
+ @Configure
+ public void setDirs(
+ @Alias("user.dir") String home,
+ @Alias("java.io.tmpdir") String temp ) {
+ this.home = home;
+ this.temp = temp;
+ }
+ }
+
+ @Test
+ public void sample() {
+ Target target = new Target();
+ ConfigurationInjectorBuilder.configuration().target( target ).source( System.getProperties() ).inject();
+ assertThat( target.user, is( System.getProperty( "user.name" ) ) );
+ assertThat( target.home, is( System.getProperty( "user.dir" ) ) );
+ assertThat( target.temp, is( System.getProperty( "java.io.tmpdir" ) ) );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/knox/blob/24156aaf/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/UsageTest.java
----------------------------------------------------------------------
diff --git a/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/UsageTest.java b/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/UsageTest.java
new file mode 100755
index 0000000..2fe963a
--- /dev/null
+++ b/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/UsageTest.java
@@ -0,0 +1,43 @@
+/**
+ * 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.config;
+
+import org.junit.Test;
+import static org.apache.hadoop.gateway.config.ConfigurationInjectorBuilder.configuration;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.Is.is;
+
+public class UsageTest {
+
+ class Target {
+ @Configure
+ private String user;
+ }
+
+ @Test
+ public void usage() {
+ Target target = new Target();
+ configuration()
+ .target( target )
+ .source( System.getProperties() )
+ .bind( "user", "user.name" )
+ .inject();
+ assertThat( target.user, is(System.getProperty("user.name")));
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/knox/blob/24156aaf/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/impl/BeanConfigurationAdapterDescriptorTest.java
----------------------------------------------------------------------
diff --git a/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/impl/BeanConfigurationAdapterDescriptorTest.java b/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/impl/BeanConfigurationAdapterDescriptorTest.java
new file mode 100755
index 0000000..80913e2
--- /dev/null
+++ b/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/impl/BeanConfigurationAdapterDescriptorTest.java
@@ -0,0 +1,57 @@
+/**
+ * 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.config.impl;
+
+import org.apache.hadoop.gateway.config.ConfigurationAdapter;
+import org.apache.hadoop.gateway.config.spi.ConfigurationAdapterDescriptor;
+import org.junit.Test;
+
+import java.util.Iterator;
+import java.util.Map;
+import java.util.ServiceLoader;
+
+import static junit.framework.TestCase.fail;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.hasKey;
+
+public class BeanConfigurationAdapterDescriptorTest {
+
+ @Test
+ public void testServiceLoader() {
+ ServiceLoader<ConfigurationAdapterDescriptor> loader = ServiceLoader.load( ConfigurationAdapterDescriptor.class );
+ Iterator<ConfigurationAdapterDescriptor> i = loader.iterator();
+ while( i.hasNext() ) {
+ if( i.next() instanceof BeanConfigurationAdapterDescriptor ) {
+ return;
+ }
+ }
+ fail( "Failed to load BeanConfigurationAdapterDescriptor" );
+ }
+
+ @Test
+ public void testDescriptor() {
+ ConfigurationAdapterDescriptor descriptor = new BeanConfigurationAdapterDescriptor();
+ Map<Class<?>,Class<? extends ConfigurationAdapter>> map = descriptor.providedConfigurationAdapters();
+ assertThat( map, hasKey( (Class)Object.class ) );
+ Class<? extends ConfigurationAdapter> type = map.get( Object.class );
+ assertThat(
+ "Descriptor didn't return " + BeanConfigurationAdapter.class.getName(),
+ type == BeanConfigurationAdapter.class );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/knox/blob/24156aaf/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/impl/BeanConfigurationAdapterTest.java
----------------------------------------------------------------------
diff --git a/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/impl/BeanConfigurationAdapterTest.java b/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/impl/BeanConfigurationAdapterTest.java
new file mode 100755
index 0000000..123fb7e
--- /dev/null
+++ b/gateway-util-configinjector/src/test/java/org/apache/hadoop/gateway/config/impl/BeanConfigurationAdapterTest.java
@@ -0,0 +1,40 @@
+/**
+ * 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.config.impl;
+
+import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+public class BeanConfigurationAdapterTest {
+
+ public static class Bean {
+ public String getValue() {
+ return "beanValue";
+ };
+ }
+
+ @Test
+ public void test() {
+ Bean bean = new Bean();
+ BeanConfigurationAdapter adapter = new BeanConfigurationAdapter( bean );
+ assertThat( adapter.getConfigurationValue( "value" ), is( "beanValue" ) );
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/knox/blob/24156aaf/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 284e621..aee4cf2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -36,6 +36,7 @@
<modules>
<module>gateway-test-utils</module>
<module>gateway-util-common</module>
+ <module>gateway-util-configinjector</module>
<module>gateway-util-launcher</module>
<module>gateway-util-urltemplate</module>
<module>gateway-test-ldap</module>
@@ -352,6 +353,11 @@
</dependency>
<dependency>
<groupId>${gateway-group}</groupId>
+ <artifactId>gateway-util-configinjector</artifactId>
+ <version>${gateway-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${gateway-group}</groupId>
<artifactId>gateway-util-launcher</artifactId>
<version>${gateway-version}</version>
</dependency>