This is an automated email from the ASF dual-hosted git repository.

martin_s pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/archiva.git

commit d50e02314093db0ba788a6c79d852e3025d5b939
Author: Martin Stockhammer <[email protected]>
AuthorDate: Sun Jan 3 17:29:03 2021 +0100

    Adding ldap properties
---
 .../archiva/configuration/util/ConfigMapper.java     |  6 +++++-
 .../DefaultRedbackRuntimeConfigurationAdmin.java     | 20 +++++++++++---------
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git 
a/archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/util/ConfigMapper.java
 
b/archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/util/ConfigMapper.java
index 14b9613..f55dbbc 100644
--- 
a/archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/util/ConfigMapper.java
+++ 
b/archiva-modules/archiva-base/archiva-configuration/src/main/java/org/apache/archiva/configuration/util/ConfigMapper.java
@@ -1,4 +1,5 @@
-package org.apache.archiva.configuration.util;/*
+package org.apache.archiva.configuration.util;
+/*
  * 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
@@ -76,6 +77,9 @@ public class ConfigMapper<T, K>
         return prefixStringFunctionMap.keySet( ).stream( ).anyMatch( prefix -> 
attributeName.startsWith( prefix ) );
     }
 
+    public boolean isMapping(String attributeName) {
+        return isStringMapping( attributeName ) || isIntMapping( attributeName 
) || isBooleanMapping( attributeName );
+    }
 
     public void addIntMapping( String attributeName, Function<T, Integer> 
mapping) {
         this.intFunctionMap.put( attributeName, mapping );
diff --git 
a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/runtime/DefaultRedbackRuntimeConfigurationAdmin.java
 
b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/runtime/DefaultRedbackRuntimeConfigurationAdmin.java
index cb4b391..56e3ba1 100644
--- 
a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/runtime/DefaultRedbackRuntimeConfigurationAdmin.java
+++ 
b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/runtime/DefaultRedbackRuntimeConfigurationAdmin.java
@@ -422,16 +422,18 @@ public class DefaultRedbackRuntimeConfigurationAdmin
     private void cleanupProperties( RedbackRuntimeConfiguration 
redbackRuntimeConfiguration )
     {
         Map<String, String> properties = 
redbackRuntimeConfiguration.getConfigurationProperties();
+        LdapConfiguration ldapConf = 
redbackRuntimeConfiguration.getLdapConfiguration( );
         LDAP_MAPPER.getAllAttributes( ).stream( ).forEach( att -> 
properties.remove( att ) );
-
-        // cleanup groups <-> role mapping
-        /**for ( Map.Entry<String, String> entry : new HashMap<String, 
String>( properties ).entrySet() )
-         {
-         if ( entry.getKey().startsWith( 
UserConfigurationKeys.LDAP_GROUPS_ROLE_START_KEY ) )
-         {
-         properties.remove( entry.getKey() );
-         }
-         }*/
+        List<String> prefixRemove = new ArrayList<>( );
+        for ( String key : properties.keySet()) {
+            boolean prefixMapping = LDAP_MAPPER.isPrefixMapping( key );
+            if (prefixMapping) {
+                prefixRemove.add( key );
+            } else if ( key.startsWith( "ldap" ) && !LDAP_MAPPER.isMapping( 
key ) ) {
+                ldapConf.getExtraProperties( ).put( key, properties.get( key ) 
);
+            }
+        }
+        prefixRemove.stream( ).forEach( att -> properties.remove( att ) );
     }
 
     private org.apache.archiva.configuration.RedbackRuntimeConfiguration build(

Reply via email to