You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by "Steve Jones (JIRA)" <ji...@apache.org> on 2009/10/14 06:03:31 UTC
[jira] Commented: (DIRSERVER-1300) Only adding from LDIF is
possible with injectEntries() in IntegrationUtils
[ https://issues.apache.org/jira/browse/DIRSERVER-1300?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12765386#action_12765386 ]
Steve Jones commented on DIRSERVER-1300:
----------------------------------------
I think the same issue is present in AbstractState.injectLdifs (which is used by the @ApplyLdifFiles annotation).
> Only adding from LDIF is possible with injectEntries() in IntegrationUtils
> --------------------------------------------------------------------------
>
> Key: DIRSERVER-1300
> URL: https://issues.apache.org/jira/browse/DIRSERVER-1300
> Project: Directory ApacheDS
> Issue Type: Bug
> Components: core-integ
> Affects Versions: 1.5.4
> Reporter: Aleksander Adamowski
> Fix For: 1.5.5
>
> Attachments: apacheds-core-integ_inject_ldif-changetype_modify_support.patch
>
>
> The method org.apache.directory.server.core.integ.IntegrationUtils.injectEntries(DirectoryService, String) only supports adding entries - it assumes that there are no changetype: something-other-than-add entries in the LDIF. This greatly complicates modifying the intergration testing server's schema.
> So the following LDIF cannot be currently processed by injectEntries:
> version: 1
> dn: cn=schema
> changetype: modify
> add: attributeTypes
> attributeTypes: ( 1.3.6.1.4.1.12345.1.1 NAME 'customAttr1'
> DESC 'custom attribute 1'
> EQUALITY caseIgnoreMatch
> SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
> SINGLE-VALUE )
> attributeTypes: ( 1.3.6.1.4.1.12345.1.2 NAME 'customAttr2'
> DESC 'custom attribute 2'
> EQUALITY caseIgnoreMatch
> SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
> SINGLE-VALUE )
> -
> add: objectClasses
> objectClasses: ( .3.6.1.4.1.12345.2.1
> NAME 'customClass1'
> SUP top
> STRUCTURAL
> MUST ( cn $ customAttr1 )
> MAY ( customAttr2 ) )
> I've tracked down the problem and found out it's quite simple to add support for the remaining change types:
> Index: src/main/java/org/apache/directory/server/core/integ/IntegrationUtils.java
> ===================================================================
> --- src/main/java/org/apache/directory/server/core/integ/IntegrationUtils.java (revision 731909)
> +++ src/main/java/org/apache/directory/server/core/integ/IntegrationUtils.java (working copy)
> @@ -99,8 +99,19 @@
>
> for ( LdifEntry entry : entries )
> {
> - service.getAdminSession().add(
> - new DefaultServerEntry( service.getRegistries(), entry.getEntry() ) );
> + if ( entry.isChangeAdd() )
> + {
> + service.getAdminSession().add( new DefaultServerEntry( service.getRegistries(), entry.getEntry() ) );
> +
> + }
> + else if ( entry.isChangeModify() )
> + {
> + service.getAdminSession().modify( entry.getDn(), entry.getModificationItems() );
> + }
> + else
> + {
> + throw new NamingException( "Unsupported changetype found in LDIF: " + entry.getChangeType() );
> + }
> }
> }
>
> I'll attach the patch in a minute.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.