aaah...evil seam...all the same, I'd go for 1.5.5, loads of fixes, plus uses "new" MINA.

Mert Çalışkan wrote:
Hey,

There was a bug in seam's LdapIdentityStore class (that holds the userExists
method) while doing the filtering..
Problem solved now.

Thanks all,

M.


2009/4/22 Alex Karasulu <[email protected]>

Hi Mert, Yiannis,

Yiannis is right on this one.  We fixed a lot of bugs in 1.5.5 and I think
it may impact this scenario.  Give it a try and let us know.  1.5.5 should
be out here in a week or so.  We apologize for the delays.


2009/4/22 Yiannis Mavroukakis <[email protected]>

I go via the "build your own" route to be honest, just get the entire
source tree via SVN and do a mvn -Dmaven.test.skip=true install

Y.


Mert Çalışkan wrote:

ok,
is there any nightly builds? or I should do it myself?

2009/4/22 Yiannis Mavroukakis <[email protected]>



Sorry I meant build off of the SVN branch, this is what I am using.


Mert Çalışkan wrote:



1.5.5?
latest downloads are only for 1.5.4, no?
http://directory.apache.org/apacheds/1.5/downloads.html

2009/4/22 Yiannis Mavroukakis <[email protected]>





Have you tried this with 1.5.5 ?


Mert Çalışkan wrote:





yes, when that method executes, my ApacheDS server (standalone
working
one)
throws that error.


2009/4/22 Yiannis Mavroukakis <[email protected]>







Are you getting the same ClassCastException as the root cause of
the
search?


Mert Çalışkan wrote:







Hey,

via jdni calls I guess, seam's ldap-identity-store is taking care
of...
lemme elaborate the case,

Actually before creating a user, the seam framework is doing a
search
with
userExists method.

 public boolean userExists(String name)
 {
  InitialLdapContext ctx = null;
  try
  {
     ctx = initialiseContext();

     String[] userAttr = {getUserNameAttribute()};

     SearchControls controls = new SearchControls();
     controls.setSearchScope(searchScope);
     controls.setReturningAttributes(userAttr);
     controls.setTimeLimit(getSearchTimeLimit());

     StringBuilder userFilter = new StringBuilder();

     Object[] filterArgs = new
Object[getUserObjectClasses().length];
     for (int i = 0; i < getUserObjectClasses().length; i++)
     {
        userFilter.append("(");
        userFilter.append(getObjectClassAttribute());
        userFilter.append("={");
        userFilter.append(i);
        userFilter.append("})");
        filterArgs[i] = getUserObjectClasses()[i];
     }

     NamingEnumeration answer = ctx.search(getUserContextDN(),
userFilter.toString(), filterArgs, controls);
     while (answer.hasMore())
     {
        SearchResult sr = (SearchResult) answer.next();
        Attributes attrs = sr.getAttributes();
        Attribute user = attrs.get(getUserNameAttribute());

        for (int i = 0; i < user.size(); i++)
        {
           Object value = user.get(i);
           if (name.equals(value))
           {
              answer.close();
              return true;
           }
        }
     }
     answer.close();
     return false;
  }
  catch (NamingException ex)
  {
     throw new IdentityManagementException("Error getting users",
ex);
  }
  finally
  {
     if (ctx != null)
     {
        try
        {
           ctx.close();
        }
        catch (NamingException ex) {}
     }
  }
 }

and this is throwing out,

 Caused by:
org.jboss.seam.security.management.IdentityManagementException:
Error getting users
 at





org.jboss.seam.security.management.LdapIdentityStore.userExists(LdapIdentityStore.java:1235)
 at





org.jboss.seam.security.management.IdentityManager.userExists(IdentityManager.java:172)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at





sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at





sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at


org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:335)
 ... 79 more
Caused by: javax.naming.CommunicationException: Request: 2
cancelled;
remaining name 'ou=people,o=mycompany'
 at com.sun.jndi.ldap.LdapRequest.getReplyBer(LdapRequest.java:60)
 at com.sun.jndi.ldap.Connection.readReply(Connection.java:411)

M


On Wed, Apr 22, 2009 at 3:55 PM, Yiannis Mavroukakis <
[email protected]> wrote:









How are you creating this new person? Via JNDI calls or through
the
DS
API?

Y.


Mert Çalışkan wrote:









Hi,

I'm integrating the seam framework's user management module with
ApacheDS
ldap. For creating a new user (person objectClass) in the DS I
got
the
error
below,
So apacheDS is forcing the client to close the conn since it
gets
a
classcast. I'm on 1.5.4 version. How to debug & solve this? Any
clues?

Thanks,

M

Trace:

[15:39:46] WARN
[org.apache.directory.server.ldap.LdapProtocolHandler]
-
[/
127.0.0.1:2453] Unexpected exception forcing
session to close: sending disconnect notice to client.
*org.apache.mina.filter.codec.ProtocolDecoderException:
java.lang.ClassCastException:
org.apache.directory.shared.ldap.co
dec.search.AttributeValueAssertionFilter cannot be cast to
org.apache.directory.shared.ldap.codec.search.ConnectorFilter*
(Hexdump: 30 81 82 02 01 02 63 60 04 17 6F 75 3D 70 65 6F 70 6C
65
2C
6F
3D
6F 6E 74 6F 6D 65 74 72 69 63 73 0A 01 02 0
A 01 03 02 01 00 02 01 0B 01 01 00 A3 15 04 0B 6F 62 6A 65 63 74
43
6C
61
73
73 04 06 70 65 72 73 6F 6E A3 18 04 0B 6F 6
2 6A 65 63 74 43 6C 61 73 73 04 09 75 69 64 4F 62 6A 65 63 74 30
05
04
03
75
69 64 A0 1B 30 19 04 17 32 2E 31 36 2E 38 3
4 30 2E 31 2E 31 31 33 37 33 30 2E 33 2E 34 2E 32)
  at






org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:165)
  at






org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(AbstractIoFilterChain.java:299)
  at






org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilterChain.java:53)
  at






org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceived(AbstractIoFilterChain.java:6
48)
  at






org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java:220)
  at






org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(ExecutorFilter.java:264)
  at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
Source)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown
Source)
  at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassCastException:






org.apache.directory.shared.ldap.codec.search.AttributeValueAssertionFilter
can
not be cast to
org.apache.directory.shared.ldap.codec.search.ConnectorFilter
  at






org.apache.directory.shared.ldap.codec.search.SearchRequest.addCurrentFilter(SearchRequest.java:356)
  at






org.apache.directory.shared.ldap.codec.actions.InitEqualityMatchFilterAction.action(InitEqualityMatchFilterAc
tion.java:70)
  at






org.apache.directory.shared.asn1.ber.grammar.AbstractGrammar.executeAction(AbstractGrammar.java:153)
  at






org.apache.directory.shared.asn1.ber.Asn1Decoder.treatTLVDoneState(Asn1Decoder.java:620)
  at






org.apache.directory.shared.asn1.ber.Asn1Decoder.decode(Asn1Decoder.java:796)
  at






org.apache.directory.shared.ldap.codec.TwixDecoder.decode(TwixDecoder.java:110)
  at






org.apache.directory.shared.ldap.message.MessageDecoder.decode(MessageDecoder.java:150)
  at






org.apache.directory.shared.asn1.codec.Asn1CodecDecoder.decode(Asn1CodecDecoder.java:53)
  at






org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:158)
  ... 8 more
[15:39:46] WARN
[org.apache.directory.server.ldap.LdapProtocolHandler]
-
Null LdapSession given to cleanUpSession.
[15:39:46] WARN
[org.apache.directory.server.ldap.LdapProtocolHandler]
-
Null LdapSession given to cleanUpSession.











--
Alex Karasulu
My Blog :: http://www.jroller.com/akarasulu/
Apache Directory Server :: http://directory.apache.org
Apache MINA :: http://mina.apache.org


Reply via email to