[
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