Ok, what I gonna do is simplest : as we have to go through our JNDI layer, even for an embedded server, I will do a BasicAttributes -> BasicAttributesImpl conversion there, as a safety net.
It should fix the issue. Emmanuel On 6/1/07, Alex Karasulu <[EMAIL PROTECTED]> wrote:
Sorry (unfortunately) no. We cannot do that. The old behavior was just plain wrong. Alex On 6/1/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > > > > Hi Alex > > Your suggestion makes good sense, a developer would get early visibility of any attempt to use the "wrong type" of BasicAttributes. > > However, I now have code that used to work with DS 1.0.0 that no longer works with DS 1.0.2, furthermore I have code that will work if used with a remote context (i.e. via LDAP communications) and won't if I run with an embedded directory context. > > It's the inconsistent behaviour of the same interface between versions and remote/local contexts that I have found confusing. > > Is there any way we can have the old behaviour back where it didn't see to matter what type of BasicAttributes() we used? :o) > > Kind Regards > > Simon Temple > > 01 June 2007 15:58 > To: "Apache Directory Developers List" <[email protected]>, [EMAIL PROTECTED] > cc: > From: "Alex Karasulu" <[EMAIL PROTECTED]> > Subject: Re: NPE Defect in Latest Directory - 1.0.2 > > > +1 on all of Emmanuel's points. Let me add one additional option. > > We could write some protective code to detect when the BasicAttributes is created without the > boolean argument for ignoring case. We should have some kind of RuntimeException for it. > Could be a ConfigurationException maybe? Don't know exactly but basically we need: > > BasicAttributes attrs = ... > if ( ! attrs.isCaseIgnored() ) > { > throw new "something that tells the user to correct this miss configuration of BasicAttributes"; > } > > WDYT? > > Alex > > > On 6/1/07, Emmanuel Lecharny <[EMAIL PROTECTED]> wrote: > > Hi Simon, > > > > you can raise a JIRA, because we should not allow NPE in the server. > > > > Now, regarding Attributes(), you should *always* pass true as an > > argument. This is a major drawback of JNDI as a generic API for > > directory, because it does not take into account the underlying > > directory it has to deal with. There is nothing we can do about it, > > except fixing NPEs, when it comes to use ADS embedded (meaning : > > without the network layer which automatically substitutes > > BasicAttributes to a more ldap compliant BasicAttributesImpl...) > > > > Emmanuel > > > > On 6/1/07, [EMAIL PROTECTED] > > < [EMAIL PROTECTED]> wrote: > > > > > > > > > We've found a problem with DS 1.0.2. This problem only exists when running > > > with DS embedded in the same VM. > > > Running the same code remotely (outside of DS VM) works fine. > > > > > > Example code: > > > > > > .... > > > Attributes attrs = new BasicAttributes(); > > > attrs.put("objectClass", "organizationalUnit"); > > > attrs.put("description", "Test OU"); > > > > > > DirContext subContext = context.createSubcontext("ou=Test", > > > attrs); > > > > > > > > > Exception from createSubcontext(): > > > > > > Caused by: java.lang.NullPointerException > > > at > > > org.apache.directory.shared.ldap.util.AttributeUtils.containsValueCaseIgnore(AttributeUtils.java:309) > > > at > > > org.apache.directory.server.core.schema.SchemaService.assertAllAttributesAllowed (SchemaService.java:1806) > > > at > > > org.apache.directory.server.core.schema.SchemaService.check(SchemaService.java:1624) > > > at > > > org.apache.directory.server.core.schema.SchemaService.add(SchemaService.java :1636) > > > at > > > org.apache.directory.server.core.interceptor.InterceptorChain$Entry$1.add(InterceptorChain.java:1181) > > > ... 130 more > > > > > > If you change the BasicAttributes() constructor call to: > > > > > > Attributes attrs = new BasicAttributes( true ); > > > > > > it works fine. > > > > > > This issue means we cannot use DS 1.0.2. Should I raise a JIRA entry yet or > > > should I hold off until you guys have had chance to check my findings? > > > > > > Many Thanks > > > > > > SimonT > > > > > > -- > > Regards, > > Cordialement, > > Emmanuel Lécharny > > www.iktek.com > > > >
-- Regards, Cordialement, Emmanuel Lécharny www.iktek.com
