I am having a hard time propagating my exceptions all way to the LDAP browser.

 

In my custom partition code, when someone tries to update a read only attribute, I generate an Exception with my error message using this code:

If (isReadOnly(attributeName)) {

AttributeModificationException ex = new AttributeModificationException("Attribute " + attributeName + " is read only");

                        ex.setUnexecutedModifications(modificationItems);

                        throw ex;

}

 

But in the browser I get this more generic exception:

javax.naming.NamingException: [LDAP: error code 54 - failed to modify entry cn=Betty Goldman,ou=Executive Staff,bsiViewName=Direct Report View]; remaining name 'cn=Betty Goldman,ou=Executive Staff,bsiViewName=Direct Report View'

            at com.sun.jndi.ldap.LdapCtx.mapErrorCode(Unknown Source)

            at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)

            at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)

            at com.sun.jndi.ldap.LdapCtx.c_modifyAttributes(Unknown Source)

            at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_modifyAttributes(Unknown Source)

            at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(Unknown Source)

            at javax.naming.directory.InitialDirContext.modifyAttributes(Unknown Source)

            at com.ca.commons.jndi.JNDIOps.modifyAttributes(JNDIOps.java:618)

            at com.ca.directory.jxplorer.broker.CBGraphicsOps.modifyAttributes(CBGraphicsOps.java:111)

            at com.ca.commons.naming.DXOps.updateEntry(DXOps.java:558)

            at com.ca.commons.naming.DXOps.modifyEntry(DXOps.java:296)

            at com.ca.directory.jxplorer.broker.JNDIBroker.unthreadedModify(JNDIBroker.java:1046)

            at com.ca.directory.jxplorer.broker.Broker.doModifyQuery(Broker.java:425)

            at com.ca.directory.jxplorer.broker.Broker.processRequest(Broker.java:206)

            at com.ca.directory.jxplorer.broker.JNDIBroker.processRequest(JNDIBroker.java:360)

            at com.ca.directory.jxplorer.broker.Broker.processQueue(Broker.java:158)

            at com.ca.directory.jxplorer.broker.JNDIBroker.processQueue(JNDIBroker.java:877)

            at com.ca.directory.jxplorer.broker.Broker.run(Broker.java:124)

            at java.lang.Thread.run(Unknown Source)

 

In fact it seems that I always get error code 54 with exception, also in other cases.

 

Any idea why ?

Who might be changing the exception along the way ?

 

I stepped through the Apache code and I could not find anything.

 

Thanks

 

 

 

Reply via email to