You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2017/06/07 11:34:33 UTC
[1/4] karaf git commit: Fix for OpenSSHGeneratorKeyFileProvider
writeSshKey method: JUnit test to assert the class can read what was
previously written
Repository: karaf
Updated Branches:
refs/heads/master f9473d1bb -> c82d326ab
Fix for OpenSSHGeneratorKeyFileProvider writeSshKey method: JUnit test to assert the class can read what was previously written
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/1ebec4f4
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/1ebec4f4
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/1ebec4f4
Branch: refs/heads/master
Commit: 1ebec4f4f59e3aee381b9f3ceccd3fe89e136cd3
Parents: 94d7b7d
Author: Lukasz Lech <l....@ringler.ch>
Authored: Thu Mar 30 10:29:05 2017 +0200
Committer: Lukasz Lech <l....@ringler.ch>
Committed: Thu Mar 30 10:29:05 2017 +0200
----------------------------------------------------------------------
.../ssh/OpenSSHGeneratorFileKeyProvider.java | 6 ++--
.../OpenSSHGeneratorKeyFileProviderTest.java | 32 ++++++++++++++++++--
2 files changed, 34 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/1ebec4f4/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorFileKeyProvider.java
----------------------------------------------------------------------
diff --git a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorFileKeyProvider.java b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorFileKeyProvider.java
index 0285053..4050644 100644
--- a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorFileKeyProvider.java
+++ b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorFileKeyProvider.java
@@ -19,6 +19,7 @@
package org.apache.karaf.shell.ssh;
+import org.apache.commons.ssl.PEMItem;
import org.apache.commons.ssl.PEMUtil;
import org.apache.commons.ssl.PKCS8Key;
import org.apache.sshd.server.keyprovider.AbstractGeneratorHostKeyProvider;
@@ -29,6 +30,7 @@ import java.io.OutputStream;
import java.nio.file.Paths;
import java.security.GeneralSecurityException;
import java.security.KeyPair;
+import java.security.interfaces.RSAPrivateCrtKey;
import java.util.ArrayList;
import java.util.Collection;
@@ -72,10 +74,10 @@ public class OpenSSHGeneratorFileKeyProvider extends AbstractGeneratorHostKeyPro
@Override
protected void doWriteKeyPair(String resourceKey, KeyPair kp, OutputStream os) throws IOException, GeneralSecurityException {
Collection<Object> items = new ArrayList<>();
- items.add(kp.getPrivate());
- items.add(kp.getPublic());
+ items.add(new PEMItem(kp.getPrivate().getEncoded(), "PRIVATE KEY"));
byte[] bytes = PEMUtil.encode(items);
os.write(bytes);
+ os.close();
}
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/1ebec4f4/shell/ssh/src/test/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorKeyFileProviderTest.java
----------------------------------------------------------------------
diff --git a/shell/ssh/src/test/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorKeyFileProviderTest.java b/shell/ssh/src/test/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorKeyFileProviderTest.java
index 2ba97cf..04066c4 100644
--- a/shell/ssh/src/test/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorKeyFileProviderTest.java
+++ b/shell/ssh/src/test/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorKeyFileProviderTest.java
@@ -18,9 +18,14 @@
*/
package org.apache.karaf.shell.ssh;
-import org.junit.Test;
-
+import java.io.File;
+import java.math.BigInteger;
import java.security.KeyPair;
+import java.security.interfaces.RSAPrivateCrtKey;
+import java.security.interfaces.RSAPublicKey;
+
+import org.junit.Assert;
+import org.junit.Test;
public class OpenSSHGeneratorKeyFileProviderTest {
@@ -30,5 +35,28 @@ public class OpenSSHGeneratorKeyFileProviderTest {
prov.setOverwriteAllowed(false);
KeyPair keys = prov.loadKeys().iterator().next();
// how would we tell if they read 'correctly'? Well, the base class will throw if the key isn't reasonable.
+ Assert.assertNotNull(keys);
+ Assert.assertTrue("Loaded key is not RSA Key", keys.getPublic() instanceof RSAPublicKey);
+ Assert.assertEquals(65537, ((RSAPublicKey) keys.getPublic()).getPublicExponent().intValue());
+ }
+
+ @Test
+ public void writeSshKey() throws Exception {
+ // create a temporary file
+ File temp = File.createTempFile(this.getClass().getCanonicalName(), ".pem");
+ temp.deleteOnExit();
+ OpenSSHGeneratorFileKeyProvider prov = new OpenSSHGeneratorFileKeyProvider(temp.getPath(), "RSA", 4096);
+ KeyPair keys = prov.loadKeys().iterator().next();
+ Assert.assertNotNull(keys);
+ Assert.assertTrue(temp.exists());
+ Assert.assertFalse(temp.length() == 0);
+ BigInteger privateExponent = ((RSAPrivateCrtKey) keys.getPrivate()).getPrivateExponent();
+ // read and check if correctly read
+ prov = new OpenSSHGeneratorFileKeyProvider(temp.getPath());
+ keys = prov.loadKeys().iterator().next();
+ Assert.assertNotNull(keys);
+ Assert.assertTrue("Loaded key is not RSA Key", keys.getPrivate() instanceof RSAPrivateCrtKey);
+ BigInteger privateExponent2 = ((RSAPrivateCrtKey) keys.getPrivate()).getPrivateExponent();
+ Assert.assertEquals(privateExponent, privateExponent2);
}
}
[3/4] karaf git commit: Fix for OpenSSHGeneratorKeyFileProvider
writeSshKey method: JUnit test to assert the class can read what was
previously written
Posted by gn...@apache.org.
Fix for OpenSSHGeneratorKeyFileProvider writeSshKey method: JUnit test to assert the class can read what was previously written
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/98ae0b6d
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/98ae0b6d
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/98ae0b6d
Branch: refs/heads/master
Commit: 98ae0b6db4feab04777bf1a777a82994bdde2339
Parents: f9473d1
Author: Lukasz Lech <l....@ringler.ch>
Authored: Thu Mar 30 10:29:05 2017 +0200
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Wed Jun 7 12:13:45 2017 +0200
----------------------------------------------------------------------
.../ssh/OpenSSHGeneratorFileKeyProvider.java | 6 ++--
.../OpenSSHGeneratorKeyFileProviderTest.java | 32 ++++++++++++++++++--
2 files changed, 34 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/98ae0b6d/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorFileKeyProvider.java
----------------------------------------------------------------------
diff --git a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorFileKeyProvider.java b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorFileKeyProvider.java
index 0285053..4050644 100644
--- a/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorFileKeyProvider.java
+++ b/shell/ssh/src/main/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorFileKeyProvider.java
@@ -19,6 +19,7 @@
package org.apache.karaf.shell.ssh;
+import org.apache.commons.ssl.PEMItem;
import org.apache.commons.ssl.PEMUtil;
import org.apache.commons.ssl.PKCS8Key;
import org.apache.sshd.server.keyprovider.AbstractGeneratorHostKeyProvider;
@@ -29,6 +30,7 @@ import java.io.OutputStream;
import java.nio.file.Paths;
import java.security.GeneralSecurityException;
import java.security.KeyPair;
+import java.security.interfaces.RSAPrivateCrtKey;
import java.util.ArrayList;
import java.util.Collection;
@@ -72,10 +74,10 @@ public class OpenSSHGeneratorFileKeyProvider extends AbstractGeneratorHostKeyPro
@Override
protected void doWriteKeyPair(String resourceKey, KeyPair kp, OutputStream os) throws IOException, GeneralSecurityException {
Collection<Object> items = new ArrayList<>();
- items.add(kp.getPrivate());
- items.add(kp.getPublic());
+ items.add(new PEMItem(kp.getPrivate().getEncoded(), "PRIVATE KEY"));
byte[] bytes = PEMUtil.encode(items);
os.write(bytes);
+ os.close();
}
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/98ae0b6d/shell/ssh/src/test/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorKeyFileProviderTest.java
----------------------------------------------------------------------
diff --git a/shell/ssh/src/test/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorKeyFileProviderTest.java b/shell/ssh/src/test/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorKeyFileProviderTest.java
index 2ba97cf..04066c4 100644
--- a/shell/ssh/src/test/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorKeyFileProviderTest.java
+++ b/shell/ssh/src/test/java/org/apache/karaf/shell/ssh/OpenSSHGeneratorKeyFileProviderTest.java
@@ -18,9 +18,14 @@
*/
package org.apache.karaf.shell.ssh;
-import org.junit.Test;
-
+import java.io.File;
+import java.math.BigInteger;
import java.security.KeyPair;
+import java.security.interfaces.RSAPrivateCrtKey;
+import java.security.interfaces.RSAPublicKey;
+
+import org.junit.Assert;
+import org.junit.Test;
public class OpenSSHGeneratorKeyFileProviderTest {
@@ -30,5 +35,28 @@ public class OpenSSHGeneratorKeyFileProviderTest {
prov.setOverwriteAllowed(false);
KeyPair keys = prov.loadKeys().iterator().next();
// how would we tell if they read 'correctly'? Well, the base class will throw if the key isn't reasonable.
+ Assert.assertNotNull(keys);
+ Assert.assertTrue("Loaded key is not RSA Key", keys.getPublic() instanceof RSAPublicKey);
+ Assert.assertEquals(65537, ((RSAPublicKey) keys.getPublic()).getPublicExponent().intValue());
+ }
+
+ @Test
+ public void writeSshKey() throws Exception {
+ // create a temporary file
+ File temp = File.createTempFile(this.getClass().getCanonicalName(), ".pem");
+ temp.deleteOnExit();
+ OpenSSHGeneratorFileKeyProvider prov = new OpenSSHGeneratorFileKeyProvider(temp.getPath(), "RSA", 4096);
+ KeyPair keys = prov.loadKeys().iterator().next();
+ Assert.assertNotNull(keys);
+ Assert.assertTrue(temp.exists());
+ Assert.assertFalse(temp.length() == 0);
+ BigInteger privateExponent = ((RSAPrivateCrtKey) keys.getPrivate()).getPrivateExponent();
+ // read and check if correctly read
+ prov = new OpenSSHGeneratorFileKeyProvider(temp.getPath());
+ keys = prov.loadKeys().iterator().next();
+ Assert.assertNotNull(keys);
+ Assert.assertTrue("Loaded key is not RSA Key", keys.getPrivate() instanceof RSAPrivateCrtKey);
+ BigInteger privateExponent2 = ((RSAPrivateCrtKey) keys.getPrivate()).getPrivateExponent();
+ Assert.assertEquals(privateExponent, privateExponent2);
}
}
[2/4] karaf git commit: Merge branch 'master' of
https://github.com/apache/karaf
Posted by gn...@apache.org.
Merge branch 'master' of https://github.com/apache/karaf
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/48e5f550
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/48e5f550
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/48e5f550
Branch: refs/heads/master
Commit: 48e5f55045f3a4a882af310d91d820bbbf7e65b8
Parents: 1ebec4f e90bf7e
Author: Lukasz Lech <l....@ringler.ch>
Authored: Fri Apr 28 13:30:15 2017 +0200
Committer: Lukasz Lech <l....@ringler.ch>
Committed: Fri Apr 28 13:30:15 2017 +0200
----------------------------------------------------------------------
archetypes/assembly/pom.xml | 2 +-
archetypes/blueprint/pom.xml | 2 +-
archetypes/bundle/pom.xml | 2 +-
archetypes/command/pom.xml | 2 +-
archetypes/feature/pom.xml | 2 +-
archetypes/kar/pom.xml | 2 +-
archetypes/pom.xml | 2 +-
assemblies/apache-karaf-minimal/pom.xml | 2 +-
assemblies/apache-karaf/pom.xml | 2 +-
assemblies/demos/pom.xml | 2 +-
assemblies/features/base/pom.xml | 2 +-
.../main/filtered-resources/resources/bin/inc | 2 +-
.../filtered-resources/resources/bin/karaf.bat | 4 +-
assemblies/features/enterprise-legacy/pom.xml | 2 +-
assemblies/features/enterprise/pom.xml | 2 +-
assemblies/features/framework/pom.xml | 2 +-
assemblies/features/pom.xml | 2 +-
assemblies/features/spring-legacy/pom.xml | 2 +-
assemblies/features/spring/pom.xml | 2 +-
assemblies/features/standard/pom.xml | 2 +-
.../standard/src/main/feature/feature.xml | 14 +-
assemblies/features/static/pom.xml | 2 +-
assemblies/pom.xml | 2 +-
bundle/blueprintstate/pom.xml | 2 +-
bundle/core/pom.xml | 2 +-
bundle/pom.xml | 2 +-
bundle/springstate/pom.xml | 2 +-
client/pom.xml | 14 +-
.../org/apache/karaf/client/ClientConfig.java | 120 +-
.../apache/karaf/client/ClientConfigTest.java | 2 +-
config/pom.xml | 2 +-
.../config/command/ConfigCommandSupport.java | 2 +-
.../command/ConfigPropertyCommandSupport.java | 9 +-
.../karaf/config/command/PropSetCommand.java | 2 +-
.../config/core/impl/ConfigRepositoryImpl.java | 19 +-
demos/branding/pom.xml | 4 +-
demos/command/pom.xml | 2 +-
demos/deployer/bundle/pom.xml | 4 +-
demos/deployer/kar/pom.xml | 4 +-
demos/deployer/pom.xml | 2 +-
demos/dump/pom.xml | 2 +-
demos/pom.xml | 2 +-
demos/profiles/dynamic/pom.xml | 2 +-
demos/profiles/pom.xml | 2 +-
demos/profiles/registry/pom.xml | 2 +-
demos/profiles/static/pom.xml | 2 +-
demos/web/pom.xml | 2 +-
deployer/blueprint/pom.xml | 2 +-
deployer/features/pom.xml | 2 +-
deployer/kar/pom.xml | 2 +-
deployer/pom.xml | 2 +-
deployer/spring/pom.xml | 2 +-
deployer/wrap/pom.xml | 2 +-
diagnostic/boot/pom.xml | 2 +-
diagnostic/core/pom.xml | 2 +-
diagnostic/pom.xml | 2 +-
event/pom.xml | 2 +-
exception/pom.xml | 2 +-
features/command/pom.xml | 2 +-
features/core/pom.xml | 2 +-
.../org/apache/karaf/features/ConfigInfo.java | 2 +
.../org/apache/karaf/features/Dependency.java | 2 +
.../karaf/features/FeaturesNamespaces.java | 6 +-
.../management/FeaturesServiceMBeanImpl.java | 9 +-
.../management/StandardEmitterMBean.java | 77 --
.../karaf/features/internal/model/Config.java | 10 +
.../features/internal/model/Dependency.java | 10 +
.../karaf/features/internal/model/JaxbUtil.java | 3 +
.../karaf/features/internal/osgi/Activator.java | 4 +-
.../internal/service/BootFeaturesInstaller.java | 6 +-
.../service/FeatureConfigInstaller.java | 28 +-
.../karaf/features/karaf-features-1.5.0.xsd | 337 ++++++
.../service/BootFeaturesInstallerTest.java | 8 +-
features/extension/pom.xml | 2 +-
features/pom.xml | 2 +-
http/pom.xml | 2 +-
instance/pom.xml | 3 +-
.../core/internal/InstanceServiceImpl.java | 1079 ++++++++----------
itests/pom.xml | 2 +-
.../apache/karaf/itests/ExternalConfigTest.java | 79 ++
jaas/blueprint/config/pom.xml | 2 +-
jaas/blueprint/jasypt/pom.xml | 2 +-
jaas/blueprint/pom.xml | 2 +-
jaas/boot/pom.xml | 2 +-
jaas/command/pom.xml | 2 +-
jaas/config/pom.xml | 2 +-
jaas/jasypt/pom.xml | 2 +-
jaas/modules/pom.xml | 2 +-
jaas/pom.xml | 2 +-
jdbc/pom.xml | 2 +-
jms/core/pom.xml | 2 +-
jms/pom.xml | 2 +-
jndi/pom.xml | 2 +-
jpa/hibernate/pom.xml | 2 +-
jpa/pom.xml | 2 +-
kar/pom.xml | 2 +-
.../java/org/apache/karaf/kar/internal/Kar.java | 6 +-
log/pom.xml | 2 +-
.../org/apache/karaf/log/command/LogTail.java | 6 +-
.../log/core/internal/LogServiceLog4j2Impl.java | 2 +-
.../log/core/internal/layout/PatternParser.java | 2 +
main/pom.xml | 2 +-
.../org/apache/karaf/main/InstanceHelper.java | 51 +-
management/pom.xml | 2 +-
management/server/pom.xml | 2 +-
manual/pom.xml | 2 +-
.../developer-guide/karaf-maven-plugin.adoc | 78 +-
obr/pom.xml | 2 +-
package/pom.xml | 2 +-
pom.xml | 14 +-
profile/pom.xml | 2 +-
.../karaf/profile/PlaceholderResolver.java | 4 +-
.../java/org/apache/karaf/profile/Profile.java | 4 +-
.../apache/karaf/profile/ProfileBuilder.java | 8 +-
.../assembly/AssemblyDeployCallback.java | 50 +-
.../apache/karaf/profile/assembly/Builder.java | 104 +-
.../karaf/profile/command/ProfileDisplay.java | 16 +-
.../karaf/profile/command/ProfileEdit.java | 26 +-
.../profile/impl/PlaceholderResolvers.java | 22 +-
.../karaf/profile/impl/ProfileBuilderImpl.java | 35 +-
.../apache/karaf/profile/impl/ProfileImpl.java | 32 +-
.../org/apache/karaf/profile/impl/Profiles.java | 185 +--
.../org/apache/karaf/profile/impl/Utils.java | 35 +-
.../karaf/profile/assembly/BuilderTest.java | 31 +
.../repo/foo/bar/1.0/bar-1.0-features.xml | 20 +
.../repo/foo/baz/1.0/baz-1.0-features.xml | 20 +
scheduler/pom.xml | 2 +-
scr/command/pom.xml | 2 +-
scr/examples/component-factory/pom.xml | 2 +-
scr/examples/managed-service/pom.xml | 2 +-
scr/examples/pom.xml | 2 +-
scr/examples/service/pom.xml | 2 +-
scr/management/pom.xml | 2 +-
scr/pom.xml | 2 +-
scr/state/pom.xml | 2 +-
service/core/pom.xml | 2 +-
service/guard/pom.xml | 2 +-
.../service/guard/impl/GuardingEventHook.java | 7 +-
.../guard/impl/GuardingEventHookTest.java | 14 +-
service/pom.xml | 2 +-
services/coordinator/pom.xml | 2 +-
services/eventadmin/pom.xml | 2 +-
services/pom.xml | 2 +-
services/staticcm/pom.xml | 2 +-
shell/commands/pom.xml | 2 +-
shell/console/pom.xml | 2 +-
shell/core/pom.xml | 2 +-
.../action/command/DefaultActionPreparator.java | 29 +-
.../action/osgi/AggregateServiceTracker.java | 51 +-
.../impl/action/osgi/CommandExtension.java | 18 +-
shell/pom.xml | 2 +-
shell/ssh/pom.xml | 2 +-
.../org/apache/karaf/shell/ssh/Activator.java | 28 +-
.../karaf/shell/ssh/ShellFactoryImpl.java | 4 +-
.../org/apache/karaf/shell/ssh/SshUtils.java | 10 +-
.../shell/ssh/UserAuthFactoriesFactory.java | 5 +-
.../apache/karaf/shell/ssh/SshUtilsTest.java | 6 +-
shell/table/pom.xml | 2 +-
subsystem/pom.xml | 2 +-
system/pom.xml | 2 +-
tooling/karaf-maven-plugin/pom.xml | 2 +-
.../src/it/test-aggregate-features/control.xml | 2 +-
.../src/it/test-basic-generation/control.xml | 2 +-
.../test-check-dependencies-failure/control.xml | 2 +-
.../src/it/test-check-dependencies/control.xml | 2 +-
.../it/test-feature-dependencies/control.xml | 2 +-
.../test-feature-use-base-version/control.xml | 2 +-
.../control.xml | 2 +-
.../control.xml | 2 +-
.../test-feature-use-version-range/control.xml | 2 +-
.../test-include-project-artifact/control.xml | 2 +-
.../src/it/test-input-file/control.xml | 2 +-
.../src/it/test-rename-main-feature/control.xml | 2 +-
.../it/test-repository-dependencies/control.xml | 2 +-
.../src/it/test-simplify-bundles/control.xml | 2 +-
.../src/it/test-type-classifier/control.xml | 2 +-
tooling/karaf-services-maven-plugin/pom.xml | 2 +-
tooling/pom.xml | 2 +-
tooling/utils/pom.xml | 2 +-
util/pom.xml | 2 +-
.../karaf/util/config/PropertiesLoader.java | 63 +-
.../apache/karaf/util/locks/FileLockUtils.java | 90 +-
.../karaf/util/tracker/BaseActivator.java | 24 +
web/pom.xml | 2 +-
webconsole/console/pom.xml | 2 +-
webconsole/features/pom.xml | 2 +-
webconsole/gogo/pom.xml | 2 +-
webconsole/http/pom.xml | 2 +-
webconsole/instance/pom.xml | 2 +-
webconsole/pom.xml | 2 +-
wrapper/pom.xml | 2 +-
191 files changed, 1692 insertions(+), 1525 deletions(-)
----------------------------------------------------------------------
[4/4] karaf git commit: Merge remote-tracking branch
'llech/openssh-keygen-fix', closing #315
Posted by gn...@apache.org.
Merge remote-tracking branch 'llech/openssh-keygen-fix', closing #315
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/c82d326a
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/c82d326a
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/c82d326a
Branch: refs/heads/master
Commit: c82d326abb442b2a78e0d0e01142bc304d82784a
Parents: 98ae0b6 48e5f55
Author: Guillaume Nodet <gn...@apache.org>
Authored: Wed Jun 7 12:14:08 2017 +0200
Committer: Guillaume Nodet <gn...@apache.org>
Committed: Wed Jun 7 12:14:08 2017 +0200
----------------------------------------------------------------------
----------------------------------------------------------------------