[ https://issues.apache.org/jira/browse/DIRSERVER-1606?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13258505#comment-13258505
]
lucas theisen edited comment on DIRSERVER-1606 at 4/20/12 7:30 PM:
-------------------------------------------------------------------
I was able to work around this by adding an aspect:
@Aspect
public class GetUniqueResourceReplacer {
private static final Logger log = LoggerFactory.getLogger( GetUniqueResourceReplacer.class
);
@SuppressWarnings( "unused" )
@Pointcut( "execution(* org.apache.directory.shared.ldap.schema.ldif.extractor.impl.DefaultSchemaLdifExtractor.getUniqueResource(String,String))
&&" +
"args(resourceName,resourceDescription)" )
private void getUniqueResourceReplacer( String resourceName, String resourceDescription
) {
log.warn( "wait, what the heck... this is a pointcut, not a method!" );
}
@Around( "org.mitre.asias.ldap.test.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.info( "found more than one copy of " + resourceName + " using first one" );
}
return result;
}
}
was (Author: ltheisen@mitre.org):
I was able to work around this by adding an aspect:
@Aspect
public class GetUniqueResourceReplacer {
private static final Logger log = LoggerFactory.getLogger( GetUniqueResourceReplacer.class
);
@SuppressWarnings( "unused" )
@Pointcut( "execution(* org.apache.directory.shared.ldap.schema.ldif.extractor.impl.DefaultSchemaLdifExtractor.getUniqueResource(String,String))
&&" +
"args(resourceName,resourceDescription)" )
private void getUniqueResourceReplacer( String resourceName, String resourceDescription
) {
log.warn( "wait, what the heck... this is a pointcut, not a method!" );
}
@Around( "org.mitre.asias.ldap.test.GetUniqueResourceReplacer.getUniqueResourceReplacer(resourceName,resourceDescription)"
)
public URL getFirstMatchingResource( String resourceName, String resourceDescription )
throws IOException {
log.warn( "Hey, you got here... AWESOME!" );
Enumeration<URL> resources = DefaultSchemaLdifExtractor.class.getClassLoader().getResources(
resourceName );
if ( !resources.hasMoreElements() ) {
throw new UniqueResourceException( resourceName, resourceDescription );
}
URL result = resources.nextElement();
if ( resources.hasMoreElements() ) {
log.info( "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: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
|