Author: olamy
Date: Wed Jan 30 17:46:05 2013
New Revision: 1440551
URL: http://svn.apache.org/viewvc?rev=1440551&view=rev
Log:
cleanup interface and add default implementation
Added:
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/model/StringList.java
- copied, changed from r1440549,
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/model/LdapGroupMapping.java
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/DefaultLdapGroupMappingService.java
(with props)
Modified:
archiva/redback/redback-core/trunk/redback-common/redback-common-ldap/src/main/java/org/apache/archiva/redback/common/ldap/role/DefaultLdapRoleMapperConfiguration.java
archiva/redback/redback-core/trunk/redback-common/redback-common-ldap/src/main/java/org/apache/archiva/redback/common/ldap/role/LdapRoleMapperConfiguration.java
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/model/LdapGroupMapping.java
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/services/LdapGroupMappingService.java
Modified:
archiva/redback/redback-core/trunk/redback-common/redback-common-ldap/src/main/java/org/apache/archiva/redback/common/ldap/role/DefaultLdapRoleMapperConfiguration.java
URL:
http://svn.apache.org/viewvc/archiva/redback/redback-core/trunk/redback-common/redback-common-ldap/src/main/java/org/apache/archiva/redback/common/ldap/role/DefaultLdapRoleMapperConfiguration.java?rev=1440551&r1=1440550&r2=1440551&view=diff
==============================================================================
---
archiva/redback/redback-core/trunk/redback-common/redback-common-ldap/src/main/java/org/apache/archiva/redback/common/ldap/role/DefaultLdapRoleMapperConfiguration.java
(original)
+++
archiva/redback/redback-core/trunk/redback-common/redback-common-ldap/src/main/java/org/apache/archiva/redback/common/ldap/role/DefaultLdapRoleMapperConfiguration.java
Wed Jan 30 17:46:05 2013
@@ -38,7 +38,7 @@ import java.util.Map;
* @author Olivier Lamy
* @since 2.1
*/
-@Service("ldapRoleMapperConfiguration#default")
+@Service( "ldapRoleMapperConfiguration#default" )
public class DefaultLdapRoleMapperConfiguration
implements LdapRoleMapperConfiguration
{
@@ -46,10 +46,9 @@ public class DefaultLdapRoleMapperConfig
private Logger log = LoggerFactory.getLogger( getClass() );
@Inject
- @Named(value = "userConfiguration#default")
+ @Named( value = "userConfiguration#default" )
private UserConfiguration userConf;
-
public void addLdapMapping( String ldapGroup, List<String> roles )
throws MappingException
{
@@ -61,6 +60,12 @@ public class DefaultLdapRoleMapperConfig
log.warn( "removeLdapMapping not implemented" );
}
+ public void updateLdapMapping( String ldapGroup, List<String> roles )
+ throws MappingException
+ {
+ log.warn( "removeLdapMapping not implemented" );
+ }
+
public void setLdapGroupMappings( Map<String, Collection<String>> mappings
)
throws MappingException
{
Modified:
archiva/redback/redback-core/trunk/redback-common/redback-common-ldap/src/main/java/org/apache/archiva/redback/common/ldap/role/LdapRoleMapperConfiguration.java
URL:
http://svn.apache.org/viewvc/archiva/redback/redback-core/trunk/redback-common/redback-common-ldap/src/main/java/org/apache/archiva/redback/common/ldap/role/LdapRoleMapperConfiguration.java?rev=1440551&r1=1440550&r2=1440551&view=diff
==============================================================================
---
archiva/redback/redback-core/trunk/redback-common/redback-common-ldap/src/main/java/org/apache/archiva/redback/common/ldap/role/LdapRoleMapperConfiguration.java
(original)
+++
archiva/redback/redback-core/trunk/redback-common/redback-common-ldap/src/main/java/org/apache/archiva/redback/common/ldap/role/LdapRoleMapperConfiguration.java
Wed Jan 30 17:46:05 2013
@@ -40,6 +40,15 @@ public interface LdapRoleMapperConfigura
throws MappingException;
/**
+ * update an existing mapping
+ * @param ldapGroup
+ * @param roles
+ * @throws MappingException
+ */
+ void updateLdapMapping( String ldapGroup, List<String> roles )
+ throws MappingException;
+
+ /**
* remove a mapping
*
* @param group ldap group
Modified:
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/model/LdapGroupMapping.java
URL:
http://svn.apache.org/viewvc/archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/model/LdapGroupMapping.java?rev=1440551&r1=1440550&r2=1440551&view=diff
==============================================================================
---
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/model/LdapGroupMapping.java
(original)
+++
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/model/LdapGroupMapping.java
Wed Jan 30 17:46:05 2013
@@ -19,25 +19,28 @@ package org.apache.archiva.redback.rest.
*/
import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+import java.util.Collection;
import java.util.List;
/**
* @author Olivier Lamy
* @since 2.1
*/
-@XmlRootElement( name = "ldapGroupMapping" )
+@XmlRootElement(name = "ldapGroupMapping")
public class LdapGroupMapping
+ implements Serializable
{
private String group;
- private List<String> roleNames;
+ private Collection<String> roleNames;
public LdapGroupMapping()
{
// no op
}
- public LdapGroupMapping( String group, List<String> roleNames )
+ public LdapGroupMapping( String group, Collection<String> roleNames )
{
this.group = group;
this.roleNames = roleNames;
@@ -53,12 +56,12 @@ public class LdapGroupMapping
this.group = group;
}
- public List<String> getRoleNames()
+ public Collection<String> getRoleNames()
{
return roleNames;
}
- public void setRoleNames( List<String> roleNames )
+ public void setRoleNames( Collection<String> roleNames )
{
this.roleNames = roleNames;
}
Copied:
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/model/StringList.java
(from r1440549,
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/model/LdapGroupMapping.java)
URL:
http://svn.apache.org/viewvc/archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/model/StringList.java?p2=archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/model/StringList.java&p1=archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/model/LdapGroupMapping.java&r1=1440549&r2=1440551&rev=1440551&view=diff
==============================================================================
---
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/model/LdapGroupMapping.java
(original)
+++
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/model/StringList.java
Wed Jan 30 17:46:05 2013
@@ -19,58 +19,37 @@ package org.apache.archiva.redback.rest.
*/
import javax.xml.bind.annotation.XmlRootElement;
+import java.util.ArrayList;
import java.util.List;
/**
+ * jaxrs fail to return List<String> so use this contains for rest services
returning that
+ *
* @author Olivier Lamy
* @since 2.1
*/
-@XmlRootElement( name = "ldapGroupMapping" )
-public class LdapGroupMapping
+@XmlRootElement( name = "stringList" )
+public class StringList
{
- private String group;
+ private List<String> strings;
- private List<String> roleNames;
-
- public LdapGroupMapping()
+ public StringList()
{
// no op
}
- public LdapGroupMapping( String group, List<String> roleNames )
- {
- this.group = group;
- this.roleNames = roleNames;
- }
-
- public String getGroup()
- {
- return group;
- }
-
- public void setGroup( String group )
- {
- this.group = group;
- }
-
- public List<String> getRoleNames()
+ public StringList( List<String> strings )
{
- return roleNames;
+ this.strings = strings;
}
- public void setRoleNames( List<String> roleNames )
+ public List<String> getStrings()
{
- this.roleNames = roleNames;
+ return strings == null ? new ArrayList<String>( 0 ) : strings;
}
- @Override
- public String toString()
+ public void setStrings( List<String> strings )
{
- final StringBuilder sb = new StringBuilder();
- sb.append( "LdapGroupMapping" );
- sb.append( "{group='" ).append( group ).append( '\'' );
- sb.append( ", roleNames=" ).append( roleNames );
- sb.append( '}' );
- return sb.toString();
+ this.strings = strings;
}
}
Modified:
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/services/LdapGroupMappingService.java
URL:
http://svn.apache.org/viewvc/archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/services/LdapGroupMappingService.java?rev=1440551&r1=1440550&r2=1440551&view=diff
==============================================================================
---
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/services/LdapGroupMappingService.java
(original)
+++
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-api/src/main/java/org/apache/archiva/redback/rest/api/services/LdapGroupMappingService.java
Wed Jan 30 17:46:05 2013
@@ -21,6 +21,7 @@ package org.apache.archiva.redback.rest.
import org.apache.archiva.redback.authorization.RedbackAuthorization;
import
org.apache.archiva.redback.integration.security.role.RedbackRoleConstants;
import org.apache.archiva.redback.rest.api.model.LdapGroupMapping;
+import org.apache.archiva.redback.rest.api.model.StringList;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
@@ -44,7 +45,7 @@ public interface LdapGroupMappingService
@GET
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
@RedbackAuthorization( permissions =
RedbackRoleConstants.USER_ADMINISTRATOR_ROLE )
- String getLdapGroups()
+ StringList getLdapGroups()
throws RedbackServiceException;
Added:
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/DefaultLdapGroupMappingService.java
URL:
http://svn.apache.org/viewvc/archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/DefaultLdapGroupMappingService.java?rev=1440551&view=auto
==============================================================================
---
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/DefaultLdapGroupMappingService.java
(added)
+++
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/DefaultLdapGroupMappingService.java
Wed Jan 30 17:46:05 2013
@@ -0,0 +1,186 @@
+package org.apache.archiva.redback.rest.services;
+/*
+ * 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.
+ */
+
+import org.apache.archiva.redback.common.ldap.MappingException;
+import org.apache.archiva.redback.common.ldap.connection.LdapConnection;
+import org.apache.archiva.redback.common.ldap.connection.LdapConnectionFactory;
+import org.apache.archiva.redback.common.ldap.connection.LdapException;
+import org.apache.archiva.redback.common.ldap.role.LdapRoleMapper;
+import org.apache.archiva.redback.common.ldap.role.LdapRoleMapperConfiguration;
+import org.apache.archiva.redback.rest.api.model.LdapGroupMapping;
+import org.apache.archiva.redback.rest.api.model.StringList;
+import org.apache.archiva.redback.rest.api.services.LdapGroupMappingService;
+import org.apache.archiva.redback.rest.api.services.RedbackServiceException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.naming.NamingException;
+import javax.naming.directory.DirContext;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author Olivier Lamy
+ * @since 2.1
+ */
+public class DefaultLdapGroupMappingService
+ implements LdapGroupMappingService
+{
+ private Logger log = LoggerFactory.getLogger( getClass() );
+
+ @Inject
+ private LdapRoleMapper ldapRoleMapper;
+
+ @Inject
+ @Named( value = "ldapRoleMapperConfiguration#default" )
+ private LdapRoleMapperConfiguration ldapRoleMapperConfiguration;
+
+ @Inject
+ private LdapConnectionFactory ldapConnectionFactory;
+
+ public StringList getLdapGroups()
+ throws RedbackServiceException
+ {
+ LdapConnection ldapConnection = null;
+
+ DirContext context = null;
+
+ try
+ {
+ ldapConnection = ldapConnectionFactory.getConnection();
+ return new StringList( ldapRoleMapper.getAllGroups( context ) );
+ }
+ catch ( LdapException e )
+ {
+ log.error( e.getMessage(), e );
+ throw new RedbackServiceException( e.getMessage() );
+ }
+ catch ( MappingException e )
+ {
+ log.error( e.getMessage(), e );
+ throw new RedbackServiceException( e.getMessage() );
+ }
+ finally
+ {
+ closeContext( context );
+ closeLdapConnection( ldapConnection );
+ }
+ }
+
+ public List<LdapGroupMapping> getLdapGroupMappings()
+ throws RedbackServiceException
+ {
+ try
+ {
+ Map<String, Collection<String>> map =
ldapRoleMapperConfiguration.getLdapGroupMappings();
+ List<LdapGroupMapping> ldapGroupMappings = new
ArrayList<LdapGroupMapping>( map.size() );
+ for ( Map.Entry<String, Collection<String>> entry : map.entrySet()
)
+ {
+ LdapGroupMapping ldapGroupMapping = new LdapGroupMapping(
entry.getKey(), entry.getValue() );
+ ldapGroupMappings.add( ldapGroupMapping );
+ }
+
+ return ldapGroupMappings;
+ }
+ catch ( MappingException e )
+ {
+ log.error( e.getMessage(), e );
+ throw new RedbackServiceException( e.getMessage() );
+ }
+ }
+
+ public Boolean addLdapGroupMapping( LdapGroupMapping ldapGroupMapping )
+ throws RedbackServiceException
+ {
+ try
+ {
+ ldapRoleMapperConfiguration.addLdapMapping(
ldapGroupMapping.getGroup(),
+ new ArrayList(
ldapGroupMapping.getRoleNames() ) );
+ }
+ catch ( MappingException e )
+ {
+ log.error( e.getMessage(), e );
+ throw new RedbackServiceException( e.getMessage() );
+ }
+ return Boolean.TRUE;
+ }
+
+ public Boolean removeLdapGroupMapping( String group )
+ throws RedbackServiceException
+ {
+ try
+ {
+ ldapRoleMapperConfiguration.removeLdapMapping( group );
+ }
+ catch ( MappingException e )
+ {
+ log.error( e.getMessage(), e );
+ throw new RedbackServiceException( e.getMessage() );
+ }
+ return Boolean.TRUE;
+ }
+
+ public Boolean updateLdapGroupMapping( LdapGroupMapping ldapGroupMapping )
+ throws RedbackServiceException
+ {
+ try
+ {
+ ldapRoleMapperConfiguration.updateLdapMapping(
ldapGroupMapping.getGroup(),
+ new ArrayList(
ldapGroupMapping.getRoleNames() ) );
+ }
+ catch ( MappingException e )
+ {
+ log.error( e.getMessage(), e );
+ throw new RedbackServiceException( e.getMessage() );
+ }
+ return Boolean.TRUE;
+ }
+
+ //------------------
+ // utils
+ //------------------
+
+ protected void closeLdapConnection( LdapConnection ldapConnection )
+ {
+ if ( ldapConnection != null )
+ {
+ ldapConnection.close();
+ }
+ }
+
+ protected void closeContext( DirContext context )
+ {
+ if ( context != null )
+ {
+ try
+ {
+ context.close();
+ }
+ catch ( NamingException e )
+ {
+ log.warn( "skip issue closing context: {}", e.getMessage() );
+ }
+ }
+ }
+}
Propchange:
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/DefaultLdapGroupMappingService.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
archiva/redback/redback-core/trunk/redback-integrations/redback-rest/redback-rest-services/src/main/java/org/apache/archiva/redback/rest/services/DefaultLdapGroupMappingService.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision