[ 
https://issues.apache.org/jira/browse/DIRSERVER-1606?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13714071#comment-13714071
 ] 

lucas theisen commented on DIRSERVER-1606:
------------------------------------------

Updated aspect for 2.0.0-M14

package org.mitre.apacheds;


import java.io.IOException;
import java.net.URL;
import java.util.Enumeration;


import org.apache.directory.shared.ldap.schemaextractor.UniqueResourceException;
import 
org.apache.directory.shared.ldap.schemaextractor.impl.DefaultSchemaLdifExtractor;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * An aspect workaround for <a
 * href="https://issues.apache.org/jira/browse/DIRSERVER-1606";
 * >DIRSERVER-1606</a>
 * 
 * @author LTHEISEN
 */
@Aspect
public class GetUniqueResourceReplacer {
    private static final Logger log = LoggerFactory.getLogger( 
GetUniqueResourceReplacer.class );

    @Pointcut( "execution(* 
org.apache.directory.api.ldap.schemaextractor.impl.DefaultSchemaLdifExtractor.getUniqueResource(String,String))
 &&" +
            "args(resourceName,resourceDescription)" )
    private void getUniqueResourceReplacer( String resourceName, String 
resourceDescription ) {}

    @Around( 
"org.mitre.apacheds.GetUniqueResourceReplacer.getUniqueResourceReplacer(resourceName,resourceDescription)"
 )
    public URL getFirstMatchingResource( String resourceName, String 
resourceDescription ) throws IOException {
        Enumeration<URL> resources = 
DefaultSchemaLdifExtractor.class.getClassLoader().getResources( resourceName );
        if ( !resources.hasMoreElements() ) {
            throw new UniqueResourceException( resourceName, 
resourceDescription );
        }
        URL result = resources.nextElement();
        if ( resources.hasMoreElements() ) {
            log.debug( "found more than one copy of " + resourceName + " using 
first one" );
        }
        return result;
    }
}

                
> DefaultSchemaLdifExtractor chokes when using apacheds-all Maven artifact
> ------------------------------------------------------------------------
>
>                 Key: DIRSERVER-1606
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-1606
>             Project: Directory ApacheDS
>          Issue Type: Bug
>    Affects Versions: 1.5.7
>            Reporter: Holger Pretzsch
>             Fix For: 2.0.0-RC1
>
>
> When using the apacheds-all Maven artifact, the DefaultSchemaLdifExtractor 
> does not work. Apparently, because of the Maven dependency setup, the default 
> schema is on the classpath in two (probably identical?) versions.
> org.apache.directory.shared.ldap.schema.ldif.extractor.UniqueResourceException:
>  Problem locating LDIF file in schema repository
> Multiple copies of resource named 
> 'schema/ou=schema/cn=apachedns/ou=syntaxes.ldif' located on classpath at urls
>     
> jar:file:/C:/Users/holger/.gradle/cache/org.apache.directory.server/apacheds-all/jars/apacheds-all-1.5.7.jar!/schema/ou%3dschema/cn%3dapachedns/ou%3dsyntaxes.ldif
>     
> jar:file:/C:/Users/holger/.gradle/cache/org.apache.directory.shared/shared-ldap-schema/jars/shared-ldap-schema-0.9.19.jar!/schema/ou%3dschema/cn%3dapachedns/ou%3dsyntaxes.ldif
>       at 
> org.apache.directory.shared.ldap.schema.ldif.extractor.impl.DefaultSchemaLdifExtractor.getUniqueResource(DefaultSchemaLdifExtractor.java:371)
>       at 
> org.apache.directory.shared.ldap.schema.ldif.extractor.impl.DefaultSchemaLdifExtractor.getUniqueResourceAsStream(DefaultSchemaLdifExtractor.java:347)
>       at 
> org.apache.directory.shared.ldap.schema.ldif.extractor.impl.DefaultSchemaLdifExtractor.extractFromJar(DefaultSchemaLdifExtractor.java:386)
>       at 
> org.apache.directory.shared.ldap.schema.ldif.extractor.impl.DefaultSchemaLdifExtractor.extractOrCopy(DefaultSchemaLdifExtractor.java:151)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to