From 4a1c3242b18388b48294e2036fc5bace0fb37dee Mon Sep 17 00:00:00 2001 From: "miodrag%netscape.com" Date: Sat, 6 May 2000 19:36:18 +0000 Subject: [PATCH] Updates for LDAPJDK 4.1 git-svn-id: svn://10.0.0.236/trunk@68549 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/directory/java-sdk/ldap.mk | 14 +- mozilla/directory/java-sdk/ldapjdk/lib/README | 8 + .../directory/java-sdk/ldapjdk/lib/jnet.jar | Bin 0 -> 3011 bytes .../directory/java-sdk/ldapjdk/lib/jsse.jar | Bin 0 -> 424299 bytes .../ldapjdk/netscape/ldap/LDAPAttribute.java | 3 +- .../netscape/ldap/LDAPAttributeSchema.java | 8 +- .../netscape/ldap/LDAPAttributeSet.java | 7 +- .../ldapjdk/netscape/ldap/LDAPCache.java | 63 ++- .../netscape/ldap/LDAPCompareAttrNames.java | 106 ++++- .../netscape/ldap/LDAPConnSetupMgr.java | 217 +++++++--- .../ldapjdk/netscape/ldap/LDAPConnThread.java | 40 +- .../ldapjdk/netscape/ldap/LDAPConnection.java | 218 ++++++---- .../netscape/ldap/LDAPConstraints.java | 3 +- .../ldapjdk/netscape/ldap/LDAPControl.java | 3 +- .../ldap/LDAPDITContentRuleSchema.java | 395 ++++++++++++++++++ .../ldap/LDAPDITStructureRuleSchema.java | 276 ++++++++++++ .../ldapjdk/netscape/ldap/LDAPDN.java | 12 +- .../ldapjdk/netscape/ldap/LDAPEntry.java | 7 +- .../ldapjdk/netscape/ldap/LDAPException.java | 5 +- .../netscape/ldap/LDAPExtendedOperation.java | 4 +- .../netscape/ldap/LDAPExtendedResponse.java | 5 +- .../ldap/LDAPInterruptedException.java | 4 +- .../netscape/ldap/LDAPMatchingRuleSchema.java | 3 + .../ldap/LDAPMatchingRuleUseSchema.java | 212 ++++++++++ .../ldapjdk/netscape/ldap/LDAPMessage.java | 4 +- .../netscape/ldap/LDAPMessageQueue.java | 4 +- .../netscape/ldap/LDAPModification.java | 4 +- .../netscape/ldap/LDAPModificationSet.java | 3 +- .../netscape/ldap/LDAPNameFormSchema.java | 295 +++++++++++++ .../netscape/ldap/LDAPObjectClassSchema.java | 53 ++- .../ldapjdk/netscape/ldap/LDAPRebindAuth.java | 3 +- .../netscape/ldap/LDAPReferralException.java | 1 + .../netscape/ldap/LDAPResourceBundle.java | 3 +- .../ldapjdk/netscape/ldap/LDAPResponse.java | 2 + .../netscape/ldap/LDAPResponseControl.java | 5 +- .../netscape/ldap/LDAPResponseListener.java | 2 + .../netscape/ldap/LDAPSSLSocketFactory.java | 5 +- .../ldap/LDAPSSLSocketWrapFactory.java | 5 +- .../ldapjdk/netscape/ldap/LDAPSchema.java | 308 +++++++++++++- .../netscape/ldap/LDAPSchemaElement.java | 28 +- .../netscape/ldap/LDAPSearchConstraints.java | 2 +- .../netscape/ldap/LDAPSearchListener.java | 1 + .../netscape/ldap/LDAPSearchResult.java | 2 + .../ldap/LDAPSearchResultReference.java | 2 + .../netscape/ldap/LDAPSearchResults.java | 100 +++-- .../ldapjdk/netscape/ldap/LDAPSortKey.java | 3 +- .../netscape/ldap/LDAPSyntaxSchema.java | 177 ++++++++ .../ldap/LDAPSyntaxSchemaElement.java | 3 + .../netscape/ldap/LDAPTraceWriter.java | 59 +++ .../ldapjdk/netscape/ldap/LDAPUrl.java | 252 ++++++----- .../netscape/ldap/client/JDAPFilter.java | 12 +- .../netscape/ldap/client/JDAPFilterOpers.java | 8 +- .../ldap/factory/JSSESocketFactory.java | 94 +++++ .../netscape/ldap/util/DSMLWriter.java | 3 + .../netscape/ldap/util/LDIFWriter.java | 12 + .../ldapjdk/netscape/ldap/util/RDN.java | 5 +- mozilla/directory/java-sdk/relnotes.htm | 289 ++++++++++--- .../directory/java-sdk/tools/LDAPSearch.java | 16 +- 58 files changed, 2918 insertions(+), 460 deletions(-) create mode 100644 mozilla/directory/java-sdk/ldapjdk/lib/README create mode 100644 mozilla/directory/java-sdk/ldapjdk/lib/jnet.jar create mode 100644 mozilla/directory/java-sdk/ldapjdk/lib/jsse.jar create mode 100644 mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPDITContentRuleSchema.java create mode 100644 mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPDITStructureRuleSchema.java create mode 100644 mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPMatchingRuleUseSchema.java create mode 100644 mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPNameFormSchema.java create mode 100644 mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSyntaxSchema.java create mode 100644 mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPTraceWriter.java create mode 100644 mozilla/directory/java-sdk/ldapjdk/netscape/ldap/factory/JSSESocketFactory.java diff --git a/mozilla/directory/java-sdk/ldap.mk b/mozilla/directory/java-sdk/ldap.mk index 1ebbe259f90..16795c7a407 100644 --- a/mozilla/directory/java-sdk/ldap.mk +++ b/mozilla/directory/java-sdk/ldap.mk @@ -33,6 +33,7 @@ # classes # LDAPCLASSES # MAIN +# FACTORY # CLIENT # OPERS # UTIL @@ -90,7 +91,8 @@ else endif endif JAASLIB=$(BASEDIR)/ldapjdk/lib/jaas.jar -JAVACLASSPATH:=$(BASEDIR)/ldapjdk$(SEP)$(JAASLIB)$(SEP)$(BASEDIR)/ldapbeans$(SEP)$(JDK)/lib/classes.zip$(SEP)$(CLASSPATH) +JSSELIB=$(BASEDIR)/ldapjdk/lib/jnet.jar$(SEP)$(BASEDIR)/ldapjdk/lib/jsse.jar +JAVACLASSPATH:=$(BASEDIR)/ldapjdk$(SEP)$(JAASLIB)$(SEP)$(JSSELIB)$(SEP)$(BASEDIR)/ldapbeans$(SEP)$(JDK)/lib/classes.zip$(SEP)$(CLASSPATH) SRCDIR=netscape/ldap BEANDIR=$(BASEDIR)/ldapbeans/netscape/ldap/beans @@ -137,7 +139,8 @@ BERDOCCLASSES=netscape.ldap.ber.stream SASLDOCCLASSES=com.netscape.sasl com.netscape.sasl.mechanisms DOCCLASSES=netscape.ldap netscape.ldap.beans netscape.ldap.controls \ - netscape.ldap.util $(SASLDOCCLASSES) $(TOOLSDIR)/*.java $(BERDOCCLASSES) + netscape.ldap.util netscape.ldap.factory \ + $(SASLDOCCLASSES) $(TOOLSDIR)/*.java $(BERDOCCLASSES) all: classes @@ -157,7 +160,7 @@ tests: $(CLASSDIR) package: basepackage filterpackage beanpackage docpackage basepackage: $(CLASSPACKAGEDIR) - cd $(DISTDIR)/classes; rm -f ../packages/$(BASEPACKAGENAME); $(JAR) cvf ../packages/$(BASEPACKAGENAME) netscape/ldap/*.class netscape/ldap/client/*.class netscape/ldap/client/opers/*.class netscape/ldap/ber/stream/*.class netscape/ldap/controls/*.class netscape/ldap/util/*.class netscape/ldap/errors/*.props com/netscape/sasl/*.class com/netscape/sasl/mechanisms/*.class *.class + cd $(DISTDIR)/classes; rm -f ../packages/$(BASEPACKAGENAME); $(JAR) cvf ../packages/$(BASEPACKAGENAME) netscape/ldap/*.class netscape/ldap/client/*.class netscape/ldap/client/opers/*.class netscape/ldap/ber/stream/*.class netscape/ldap/controls/*.class netscape/ldap/factory/*.class netscape/ldap/util/*.class netscape/ldap/errors/*.props com/netscape/sasl/*.class com/netscape/sasl/mechanisms/*.class *.class beanpackage: $(CLASSPACKAGEDIR) cd $(DISTDIR)/classes; rm -f ../packages/$(BEANPACKAGENAME); $(JAR) cvf ../packages/$(BEANPACKAGENAME) netscape/ldap/beans @@ -168,6 +171,9 @@ docpackage: $(DOCDIR) $(CLASSPACKAGEDIR) MAIN: basics cd ldapjdk/$(SRCDIR); $(JAVAC) -d "$(CLASS_DEST)" *.java +FACTORY: basics + cd ldapjdk/$(SRCDIR)/factory; $(JAVAC) -d "$(CLASS_DEST)" *.java + CLIENT: basics cd ldapjdk/$(SRCDIR)/client; $(JAVAC) -d "$(CLASS_DEST)" *.java @@ -192,7 +198,7 @@ ERRORS: basics $(ERRORSDIR) CONTROLS: basics cd ldapjdk/$(SRCDIR)/controls; $(JAVAC) -d "$(CLASS_DEST)" *.java -LDAPCLASSES: BER OPERS CLIENT MAIN UTIL CONTROLS ERRORS SASL SASLMECHANISM TOOLS +LDAPCLASSES: BER OPERS CLIENT MAIN FACTORY UTIL CONTROLS ERRORS SASL SASLMECHANISM TOOLS BEANS: OTHERBEANS diff --git a/mozilla/directory/java-sdk/ldapjdk/lib/README b/mozilla/directory/java-sdk/ldapjdk/lib/README new file mode 100644 index 00000000000..5a6de960094 --- /dev/null +++ b/mozilla/directory/java-sdk/ldapjdk/lib/README @@ -0,0 +1,8 @@ +Jar files in this directory are used only for compilation and are +not to be distributed. + +jaas.jar + required for SASL code compilation + +jnet.jar and jsse.jar + required for JSSESocketFactory.java compilation diff --git a/mozilla/directory/java-sdk/ldapjdk/lib/jnet.jar b/mozilla/directory/java-sdk/ldapjdk/lib/jnet.jar new file mode 100644 index 0000000000000000000000000000000000000000..dee9fdac48e7f656182bf9bacbf4b0e10ec9ed6c GIT binary patch literal 3011 zcma)82{hDe8&@-<$Y`t$ZKlB(8paZ`jcqWPY$Ih*lg7R^b`51st~5k5C1eR@9SNaa z2HCPFh4i_Wkf@|2-8*y7_gz!>-gCa^J^ypw|M@@9^FHtY_bfka3jk1*XD551ubUxw zxP*@f$b-ic3{bdZCQ9GCcz6Ij))qT1FASGk68!6Z)$c{`2 zAye%9UA@UcCM4G&e@eKbs}CtKFf#R&MayZ?_MA{H`cPFhW>#$@G&dUe+ys(=rq!ck z6z8b18NSLzqlhQSUr41W^88YmnD z0(r~lC6>@`^W%2nWSNO4VMy36LluEk+w~Zj!(jIn?|grP?>qa<@uk4pd4|S#iL&us zvjb%Xzq_VkGn~$gn#yKPS5Ab4*Ag>(y@n(fpkuW@-P*TxQ*NodTU+tUHhnz&0-kC(RZ8W9>>lO%|Dc_Ahyueo&Cb7<4w+fgFzV-z8C(S6#9LsEr7g@ho_RAM_b?x{{)`&KZ5sn*fMN!RxSFX-+5_X zpmUQ3tun>U?e{ItI32n?0Pvb(rl%4Dyt-b0s2JXL*~BV)6(cbzns3`2ci?e&ezt}+;j1^XKxK3A?nm9DfUy83{o93b>B!PI7*-jm>D0_t&lO>ej{Wxy_Vs} zqBhFhxTQ`6kL^6+`8<}w@~)|z;WhH;Mh5Uk&b3d`2SbeGVKx4{qO2cv1b*)5p?i*> z+C6pzHD6cT-9=YBTD0IueSSPSafV{|LF+2%*I#P(!_R+NvTT3ct=ih8{UlHNmN#>b zFs+0&eCn^$qK;85A-@O^Nk~0t$O7WxJmAmrX~!X}3dKo7orF+k!iuh#z_mD1#k#&` zyq+Twi%-SUj&1Tq58dgMtkyo*l)zUZ*iY;q5~O<06_>>12m89o5sZpXegA5zH!NS@ zT@krf4O{k3r%dOZo=}SNhaidtrM~lV5H8V^9;LAn9s_VA{BwE2e?a(O>oT6;Z6#s@ z(cNQS>+EoQ1{MR7$JSyU^{LUy$~tN7j+W+@U+R36$jrAl$B1#KS{>qy6Q$G4@-Ab# zG((9V@ktGx>L< z%x|md=a~(2(O7nKQd9*ghSbT0t?f{xqlgh_uA-ORKIpP;-zamhOOo!O-FVcjjenJ( zYB3eelnc9~^7}I5+{cK9rvl<#;%%y{4_a&*n&~Nv9S#D~po$KO)jQ6a7t&MajzjAy zDcv8REd?tcFZ-nO5RS6F`Yluifa>uSGycTyVn0fKVe^6&uj}APnI9cylno-F?OuDD zOk%vG9i?3pU&avAG&Z2sV5{jeUu;S1%%RE3d*qXLuLe()35Q2e4O8fyT#QIxXmk#GC%%hJKrAV9N(Lxg~Ten znyicaGhy+D_pE*?kI`TmNRb%dc8}O{^=LoX1F6$yhPnp8;qSDloN8!Ra&OA8@@ijD zZZ?&s(rY7!g5I(1mw4Htu9bgRBxwKiu>q#~d(gxabgvik4fvZ_PI-m^TBk*~Dj6By zt3D~*;3nZ$1G%EcyXY&9bC7V~Ewp~Q(K4V%hSx&oo=>a_GF)k8=^;m+|ra*96 z%W#Gk2L5duR*+S2uocu0wIF(;K#|^Y4L&JcxRTOXh^f1D;m^VHP_BUK$?i)PK<>=_ zxi{_qF?0W+DG{8lL<~fA?ab-rCHm{aOtESYZ%LJB4)R5p{V-x9mKJ49|5`H4@_ z_NGLxlnryQ9kl(0uc5PNJg`sqbMM6X=BJHC4K)(*8Y--uL}0dJdu0HFbPC}qHBp(AGN+0oTnx~*V%x+`d}GWRi-gz79f7=? zpK97L=0r`IgpuT>6`%0H_=a7x=BeXL;F}{GIcui9+mP6TeMfCVPV`OC7B0oL1%$#xR;2Yl9`S z9EaaVlb{O&5JEmKBBu;A z>U;w&U8;+ivgqHdvj;O%B%o3d@C(hLPvmxO8|&-d(*Q9`BuHmE1Z9ZH-tneHGzUSP zkr*?bMwqM(do literal 0 HcmV?d00001 diff --git a/mozilla/directory/java-sdk/ldapjdk/lib/jsse.jar b/mozilla/directory/java-sdk/ldapjdk/lib/jsse.jar new file mode 100644 index 0000000000000000000000000000000000000000..2a2e546dd34d805f15b620588cc2768577aed919 GIT binary patch literal 424299 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

f*#%&sJBBq@bQh_!kDiS-?4Fl#cg8#_ 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�`90EK6|!~S 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 H 0) ) { setQualifier( SUPERIOR, superior ); } - if ( (aliases != null) && (aliases.length > 0) ) { - this.aliases = aliases; - } } /** diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPAttributeSet.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPAttributeSet.java index 11b64a06a16..f89ad68aaab 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPAttributeSet.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPAttributeSet.java @@ -32,8 +32,8 @@ import netscape.ldap.client.opers.*; * @version 1.0 * @see netscape.ldap.LDAPAttribute */ -public class LDAPAttributeSet implements Cloneable -{ +public class LDAPAttributeSet implements Cloneable, java.io.Serializable { + static final long serialVersionUID = 5018474561697778100L; Hashtable attrHash = null; LDAPAttribute[] attrs = new LDAPAttribute[0]; /* If there are less attributes than this in the set, it's not worth @@ -334,6 +334,9 @@ public class LDAPAttributeSet implements Cloneable vals[j++] = attrs[i]; } } + if (attrHash != null) { + attrHash.remove(attrs[index].getName().toLowerCase()); + } attrs = vals; } } diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPCache.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPCache.java index f94b604f5ec..54cc95bde37 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPCache.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPCache.java @@ -86,8 +86,16 @@ import java.util.zip.CRC32; * All clones of an LDAPConnection object share * the same LDAPCache object. *

+ * + * Note that LDAPCache does not maintain consistency + * with the directory, so that cached search results may no longer be + * valid after a directory update. If the same application is performing + * both cached searches and directory updates, then the + * application should flush the corresponding cache entries after an update. + * To do this use the flushEntries method. + *

* - * Note that search requests that return referrals are not cached. + * Also, note that search requests that return referrals are not cached. *

* * The LDAPCache class includes methods for @@ -98,13 +106,18 @@ import java.util.zip.CRC32; * @see netscape.ldap.LDAPConnection#setCache(netscape.ldap.LDAPCache) * @see netscape.ldap.LDAPConnection#getCache */ -public class LDAPCache { +public class LDAPCache implements Serializable { + static final long serialVersionUID = 6275167993337814294L; private Hashtable m_cache; private long m_timeToLive; private long m_maxSize; private String[] m_dns; private Vector m_orderedStruct; private long m_remainingSize = 0; + + // Count of LDAPConnections that share this cache + private int m_refCnt = 0; + /** * Delimiter used internally when creating keys * for the cache. @@ -605,13 +618,51 @@ public class LDAPCache { return m_cache.size(); } + /** + * Get number of LDAPConnections that share this cache + * @return Reference Count + */ + int getRefCount() { + return m_refCnt; + } + + /** + * Add a new reference to this cache. + * + */ + synchronized void addReference() { + m_refCnt++; + if (m_debug) { + System.err.println("Cache refCnt="+ m_refCnt); + } + } + + /** + * Remove a reference to this cache. + * If the reference count is 0, cleaup the cache. + * + */ + synchronized void removeReference() { + if (m_refCnt > 0) { + m_refCnt--; + if (m_debug) { + System.err.println("Cache refCnt="+ m_refCnt); + } + if (m_refCnt == 0 ) { + cleanup(); + } + } + } + /** * Cleans up */ - void cleanup() { + synchronized void cleanup() { flushEntries(null, 0); - m_timer.stop(); - m_timer = null; + if (m_timer != null) { + m_timer.stop(); + m_timer = null; + } } /** @@ -761,4 +812,4 @@ class TTLTimer implements Runnable{ m_cache.scheduleTTLTimer(); } -} \ No newline at end of file +} diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPCompareAttrNames.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPCompareAttrNames.java index 755aaed9c72..696e8620702 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPCompareAttrNames.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPCompareAttrNames.java @@ -23,7 +23,6 @@ package netscape.ldap; import java.util.*; import java.text.*; -import netscape.ldap.client.*; /** * Compares LDAP entries based on one or more attribute values. @@ -39,12 +38,15 @@ import netscape.ldap.client.*; * @see LDAPSearchResults#sort */ -public class LDAPCompareAttrNames implements LDAPEntryComparator { +public class LDAPCompareAttrNames + implements LDAPEntryComparator, java.io.Serializable { - String m_attrs[]; - boolean m_ascending[]; - Locale m_locale = null; - Collator m_collator = null; + static final long serialVersionUID = -2567450425231175944L; + private String m_attrs[]; + private boolean m_ascending[]; + private Locale m_locale = null; + private Collator m_collator = null; + private boolean m_sensitive = true; /** * Constructs a comparator that compares the string values of @@ -168,19 +170,64 @@ public class LDAPCompareAttrNames implements LDAPEntryComparator { /** * Set the locale, if any, used for collation. If the locale is null, - * an ordinary string comparison is used for sorting. + * an ordinary string comparison is used for sorting. If sorting + * has been set to case-insensitive, the collation strength is set + * to Collator.PRIMARY, otherwise to Collator.IDENTICAL. If a + * different collation strength setting is required, use the signature + * that takes a collation strength parameter. * * @param locale the locale used for collation, or null. */ public void setLocale( Locale locale ) { + if ( m_sensitive ) { + setLocale( locale, Collator.IDENTICAL ); + } else { + setLocale( locale, Collator.PRIMARY ); + } + } + + /** + * Sets the locale, if any, used for collation. If the locale is null, + * an ordinary string comparison is used for sorting. + * + * @param locale the locale used for collation, or null. + * @param strength collation strength: Collator.PRIMARY, + * Collator.SECONDARY, Collator.TERTIARY, or Collator.IDENTICAL + */ + public void setLocale( Locale locale, int strength ) { m_locale = locale; if ( m_locale == null ) { m_collator = null; } else { m_collator = Collator.getInstance( m_locale ); + m_collator.setStrength(strength); } } + /** + * Gets the state of the case-sensitivity flag. This only applies to + * Unicode sort order; for locale-specific sorting, case-sensitivity + * is controlled by the collation strength. + * + * @return true for case-sensitive sorting; this is + * the default + */ + public boolean getCaseSensitive() { + return m_sensitive; + } + + /** + * Sets the state of the case-sensitivity flag. This only applies to + * Unicode sort order; for locale-specific sorting, case-sensitivity + * is controlled by the collation strength. + * + * @param sensitive true for case-sensitive sorting; + * this is the default + */ + public void setCaseSensitive( boolean sensitive ) { + m_sensitive = sensitive; + } + /** * Returns true if the value of the attribute in the first entry is greater * than the value of the attribute in the second entry. @@ -258,24 +305,41 @@ public class LDAPCompareAttrNames implements LDAPEntryComparator { if ((lessValue == null) ^ (greaterValue == null)) return greaterValue != null; - if (lessValue == null || - lessValue.equalsIgnoreCase (greaterValue)) - if (attrPos == m_attrs.length - 1) - return false; - else - return attrGreater (greater, less, attrPos+1); + // Check for equality + if ( (lessValue == null) || + ((m_collator != null) && + (m_collator.compare( greaterValue, lessValue ) == 0) ) || + ((m_collator == null) && m_sensitive && + lessValue.equals(greaterValue)) || + ((m_collator == null) && !m_sensitive && + lessValue.equalsIgnoreCase(greaterValue)) ) { - if ( m_collator != null ) { - if ( ascending ) + if (attrPos == m_attrs.length - 1) { + return false; + } else { + return attrGreater (greater, less, attrPos+1); + } + } + + // Not equal, check for order + if ( ascending ) { + if ( m_collator != null ) { return ( m_collator.compare( greaterValue, lessValue ) > 0 ); - else - return ( m_collator.compare( greaterValue, lessValue ) < 0 ); - } else { - if ( ascending ) + } else if ( m_sensitive ) { return (greaterValue.compareTo (lessValue) > 0); - else + } else { + return (greaterValue.toLowerCase().compareTo ( + lessValue.toLowerCase()) > 0); + } + } else { + if ( m_collator != null ) { + return ( m_collator.compare( greaterValue, lessValue ) < 0 ); + } else if ( m_sensitive ) { return (greaterValue.compareTo (lessValue) < 0); + } else { + return (greaterValue.toLowerCase().compareTo ( + lessValue.toLowerCase()) < 0); + } } } - } diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPConnSetupMgr.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPConnSetupMgr.java index 9dc4946c7bc..df14dfdbfbc 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPConnSetupMgr.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPConnSetupMgr.java @@ -31,14 +31,19 @@ import java.net.*; * in parallel by creating a separate thread after the specified delay. * Connection setup status is preserved for later attempts, so that servers * that are more likely to be available will be tried first. + *

+ * The total time spent opening a connection can be limited with the + * ConnectTimeout property. + *

* When a connection is successfully created, a socket is opened. The socket * is passed to the LDAPConnThread. The LDAPConnThread must call * invalidateConnection() if the connection is lost due to a network or * server error, or disconnect() if the connection is deliberately terminated * by the user. */ -class LDAPConnSetupMgr implements Cloneable{ +class LDAPConnSetupMgr implements Cloneable, java.io.Serializable { + static final long serialVersionUID = 1519402748245755306L; /** * Policy for opening a connection when multiple servers are used */ @@ -53,7 +58,8 @@ class LDAPConnSetupMgr implements Cloneable{ private static final int CONNECTED = 0; private static final int DISCONNECTED = 1; private static final int NEVER_USED = 2; - private static final int FAILED = 3; + private static final int INTERRUPTED = 3; + private static final int FAILED = 4; /** * Representation for a server in the server list. @@ -104,65 +110,135 @@ class LDAPConnSetupMgr implements Cloneable{ /** * Connection setup policy (PARALLEL or SERIAL) */ - int m_policy; + int m_policy = SERIAL; /** * Delay in ms before another connection setup thread is started. */ - int m_connSetupDelay; + int m_connSetupDelay = -1; + + /** + * The maximum time to wait to established the connection + */ + int m_connectTimeout = 0; + + /** + * During connection setup, the current count of servers to which + * connection attmpt has been made + */ + private transient int m_attemptCnt = 0; /** * Constructor * @param host list of host names to which to connect * @param port list of port numbers corresponding to the host list - * @param factory socket factory for SSL connections - * @param delay delay in seconds for the parallel connection setup policy. - * Possible values are:
(delay=-1) use serial policy,
- * (delay=0) start immediately concurrent threads to each specified server - *
(delay>0) create a new connection setup thread after delay seconds + * @param factory socket factory for SSL connections */ - LDAPConnSetupMgr(String[] hosts, int[] ports, LDAPSocketFactory factory, int delay) { + LDAPConnSetupMgr(String[] hosts, int[] ports, LDAPSocketFactory factory) { m_dsList = new ServerEntry[hosts.length]; for (int i=0; i < hosts.length; i++) { m_dsList[i] = new ServerEntry(hosts[i], ports[i], NEVER_USED); } m_factory = factory; - m_policy = (delay < 0) ? SERIAL : PARALLEL; - m_connSetupDelay = delay*1000; } /** - * Constructor used by clone() - */ - private LDAPConnSetupMgr() {} - - /** - * Try to open the connection to any of the servers in the list. + * Try to open the connection to any of the servers in the list, limiting + * the time waiting for the connection to be established + * @return connection socket */ - Socket openConnection() throws LDAPException{ - m_socket = null; - m_connException = null; - + synchronized Socket openConnection() throws LDAPException{ + + long tcur=0, tmax = Long.MAX_VALUE; + Thread th = null; + + reset(); + // If reconnecting, sort dsList so that servers more likly to // be available are tried first sortDsList(); + if (m_connectTimeout == 0) { + // No need for a separate thread, connect time not limited + connect(); + } + else { + + // Wait for connection at most m_connectTimeout milliseconds + // Run connection setup in a separate thread to monitor the time + tmax = System.currentTimeMillis() + m_connectTimeout; + th = new Thread (new Runnable() { + public void run() { + connect(); + } + }, "ConnSetupMgr"); + th.setDaemon(true); + th.start(); + + while (m_socket==null && (m_attemptCnt < m_dsList.length) && + (tcur = System.currentTimeMillis()) < tmax) { + try { + wait(tmax - tcur); + } + catch (InterruptedException e) { + th.interrupt(); + cleanup(); + throw new LDAPInterruptedException("Interrupted connect operation"); + } + } + } + + if (m_socket != null) { + return m_socket; + } + + if ( th != null && (tcur = System.currentTimeMillis()) >= tmax) { + // We have timed out + th.interrupt(); + cleanup(); + throw new LDAPException( + "connect timeout, " + getServerList() + " might be unreachable", + LDAPException.CONNECT_ERROR); + } + + if (m_connException != null && m_dsList.length == 1) { + throw m_connException; + } + + throw new LDAPException( + "failed to connect to server " + getServerList(), + LDAPException.CONNECT_ERROR); + } + + private void reset() { + m_socket = null; + m_connException = null; + m_attemptCnt = 0; + + for (int i=0; i < m_dsList.length; i++) { + m_dsList[i].connSetupThread = null; + } + } + + private String getServerList() { + StringBuffer sb = new StringBuffer(); + for (int i=0; i < m_dsList.length; i++) { + sb.append(i==0 ? "" : " "); + sb.append(m_dsList[i].host); + sb.append(":"); + sb.append(m_dsList[i].port); + } + return sb.toString(); + } + + private void connect() { + if (m_policy == SERIAL || m_dsList.length == 1) { openSerial(); } else { openParallel(); - } - - if (m_socket != null) { - return m_socket; - } - - if (m_connException != null) { - throw m_connException; - } - - return null; + } } /** @@ -170,7 +246,7 @@ class LDAPConnSetupMgr implements Cloneable{ * Put the connected server at the end of the server list for * the next connect attempt. */ - void invalidateConnection() { + synchronized void invalidateConnection() { if (m_socket != null) { m_dsList[m_dsIdx].connSetupStatus = FAILED; @@ -221,6 +297,35 @@ class LDAPConnSetupMgr implements Cloneable{ return m_dsList[0].port; } + int getConnSetupDelay() { + return m_connSetupDelay/1000; + } + + /** + * Selects the connection failover policy + * @param delay in seconds for the parallel connection setup policy. + * Possible values are:
(delay=-1) use serial policy,
+ * (delay=0) start immediately concurrent threads to each specified server + *
(delay>0) create a new connection setup thread after delay seconds + */ + void setConnSetupDelay(int delay) { + m_policy = (delay < 0) ? SERIAL : PARALLEL; + m_connSetupDelay = delay*1000; + + } + + int getConnectTimeout() { + return m_connectTimeout/1000; + } + + /** + * Sets the maximum time to spend in the openConnection() call + * @param timeout in seconds to wait for the connection to be established + */ + void setConnectTimeout(int timeout) { + m_connectTimeout = timeout*1000; + } + /** * Check if the user has voluntarily closed the connection */ @@ -268,24 +373,16 @@ class LDAPConnSetupMgr implements Cloneable{ try { wait(m_connSetupDelay); } - catch (InterruptedException e) {} + catch (InterruptedException e) { + return; + } } } // At this point all threads are started. Wait until first thread // succeeds to connect or all threads terminate - while (m_socket == null) { - - // Check whether there are still running threads - boolean threadsRunning = false; - for (int i=0; i < m_dsList.length; i++) { - if (m_dsList[i].connSetupThread != null) { - threadsRunning = true; - break; - } - } - if (!threadsRunning) { return; } + while (m_socket == null && (m_attemptCnt < m_dsList.length)) { // Wait for a thread to terminate try { @@ -339,6 +436,7 @@ class LDAPConnSetupMgr implements Cloneable{ entry.connSetupStatus = FAILED; m_connException = conex; } + m_attemptCnt++; notifyAll(); } } @@ -353,7 +451,7 @@ class LDAPConnSetupMgr implements Cloneable{ ServerEntry entry = m_dsList[i]; if (entry.connSetupThread != null && entry.connSetupThread != currThread) { - entry.connSetupStatus = FAILED; + entry.connSetupStatus = INTERRUPTED; //Thread.stop() is considered to be dangerous, use Thread.interrupt(). //interrupt() will however not work if the thread is blocked in the //socket library native connect() call, but the connect() will @@ -371,7 +469,8 @@ class LDAPConnSetupMgr implements Cloneable{ * are tried first. The likelihood of making a successful connection * is determined by the connSetupStatus. Lower values have higher * likelihood. Thus, the order of server access is (1) disconnected by - * the user (2) never used (3) connection setup failed/connection lost + * the user (2) never used (3) interrupted connection attempt + * (4) connection setup failed/connection lost */ private void sortDsList() { int srvCnt = m_dsList.length; @@ -411,17 +510,17 @@ class LDAPConnSetupMgr implements Cloneable{ } public Object clone() { - LDAPConnSetupMgr cloneMgr = new LDAPConnSetupMgr(); - cloneMgr.m_factory = m_factory; - cloneMgr.m_policy = m_policy; - cloneMgr.m_connSetupDelay = m_connSetupDelay; - cloneMgr.m_dsIdx = m_dsIdx; - cloneMgr.m_dsList = new ServerEntry[m_dsList.length]; - cloneMgr.m_socket = m_socket; - for (int i=0; i @@ -93,7 +92,9 @@ import java.net.*; * @see netscape.ldap.LDAPException */ public class LDAPConnection - implements LDAPv3, LDAPAsynchronousConnection, Cloneable { + implements LDAPv3, LDAPAsynchronousConnection, Cloneable, Serializable { + + static final long serialVersionUID = -8698420087475771144L; /** * Version of the LDAP protocol used by default. @@ -170,7 +171,7 @@ public class LDAPConnection * Name of the property to enable/disable LDAP message trace.

* * The property can be specified either as a system property - * (java -D command line option), or programmatically with + * (java -D command line option), or programmatically with the * setProperty method. *

* When -D command line option is used, defining the property with @@ -179,10 +180,10 @@ public class LDAPConnection * If the file name is prefixed with a '+' character, the file is * opened in append mode. *

- * When the property is set with getProperty method, + * When the property is set with the getProperty method, * the property value must be either a String (represents a file name) - * or an OutputStream. To stop tracing, null should be - * passed as the property value. + * an OutputStream or an instance of LDAPTraceWriter. To stop tracing, + * null should be passed as the property value. * * @see netscape.ldap.LDAPConnection#setProperty(java.lang.String, java.lang.Object) */ @@ -230,9 +231,10 @@ public class LDAPConnection private int m_protocolVersion = LDAP_VERSION; private LDAPConnSetupMgr m_connMgr; private int m_connSetupDelay = -1; + private int m_connectTimeout = 0; private LDAPSocketFactory m_factory; /* m_thread does all socket i/o for the object and any clones */ - private LDAPConnThread m_thread = null; + private transient LDAPConnThread m_thread = null; /* To manage received server controls on a per-thread basis, we keep a table of active threads and a table of controls, indexed by thread */ @@ -258,11 +260,11 @@ public class LDAPConnection /** * Properties */ - private final static Float SdkVersion = new Float(4.07f); + private final static Float SdkVersion = new Float(4.1f); private final static Float ProtocolVersion = new Float(3.0f); private final static String SecurityVersion = new String("none,simple,sasl"); private final static Float MajorVersion = new Float(4.0f); - private final static Float MinorVersion = new Float(0.07f); + private final static Float MinorVersion = new Float(0.1f); private final static String DELIM = "#"; private final static String PersistSearchPackageName = "netscape.ldap.controls.LDAPPersistSearchControl"; @@ -347,6 +349,12 @@ public class LDAPConnection * @see netscape.ldap.LDAPConnection#getCache */ public void setCache(LDAPCache cache) { + if (m_cache != null) { + m_cache.removeReference(); + } + if (cache != null) { + cache.addReference(); + } m_cache = cache; if ( m_thread != null ) { m_thread.setCache( cache ); @@ -441,19 +449,19 @@ public class LDAPConnection } else if ( name.equalsIgnoreCase( TRACE_PROPERTY ) ) { - OutputStream os = null; + Object traceOutput = null; if (val == null) { m_properties.remove(TRACE_PROPERTY); } else { if (m_thread != null) { - os = createTraceOutputStream(val); + traceOutput = createTraceOutput(val); } m_properties.put( TRACE_PROPERTY, val ); } if (m_thread != null) { - m_thread.setTraceOutputStream(os); + m_thread.setTraceOutput(traceOutput); } // This is used only by the ldapjdk test cases to simulate a @@ -467,17 +475,20 @@ public class LDAPConnection } /** - * Create output stream from the TRACE_PROPERTY value. - * The value can be either of type String or OutputStream. The - * String value represents output file name. If the name is an empty + * Evaluate the TRACE_PROPERTY value and create output stream. + * The value can be of type String, OutputStream or LDAPTraceWriter. + * The String value represents output file name. If the name is an empty * string, the output is sent to System.err. If the file name is * prefixed with a '+' character, the file is opened in append mode. - * @param out Trace output specifier + * + * @param out Trace output specifier. A file name, an output stream + * or an instance of LDAPTraceWriter + * @return An output stream or an LDAPTraceWriter instance */ - OutputStream createTraceOutputStream(Object out) throws LDAPException { - OutputStream os = null; - + Object createTraceOutput(Object out) throws LDAPException { + if (out instanceof String) { // trace file name + OutputStream os = null; String file = (String)out; if (file.length() == 0) { os = System.err; @@ -496,15 +507,18 @@ public class LDAPConnection "Can not open output trace file " + file + " " + e); } } + return os; } else if (out instanceof OutputStream) { - os = (OutputStream) out; + return out; + } + else if (out instanceof LDAPTraceWriter) { + return out; } else { - throw new LDAPException(TRACE_PROPERTY + " must be OutputStream or String" ); + throw new LDAPException(TRACE_PROPERTY + " must be an OutputStream, a file name or an instance of LDAPTraceWriter" ); } - return os; } /** @@ -557,6 +571,30 @@ public class LDAPConnection return m_boundPasswd; } + /** + * Returns the maximum time to wait for the connection to be established. + * @return the maximum connect time in seconds or 0 (unlimited) + * @see netscape.ldap.LDAPConnection#setConnectTimeout + */ + public int getConnectTimeout () { + return m_connectTimeout; + } + + /** + * Specifies the maximum time to wait for the connection to be established. + * If the value is 0, the time is not limited. + * @param timeout the maximum connect time in seconds or 0 (unlimited) + */ + public void setConnectTimeout (int timeout) { + if (timeout < 0) { + throw new IllegalArgumentException("Timeout value can not be negative"); + } + m_connectTimeout = timeout; + if (m_connMgr != null) { + m_connMgr.setConnectTimeout(m_connectTimeout); + } + } + /** * Returns the delay in seconds when making concurrent connection attempts to * multiple servers. @@ -577,9 +615,9 @@ public class LDAPConnection * Specifies the delay in seconds when making concurrent connection attempts to * multiple servers. *

Effectively, selects the connection setup policy when a list of hosts is passed - * to the connectmethod. + * to the connect method. * - *
If the serial policy, the default one, is selected, an attempt is made to + *
If the serial policy is selected, the default one, an attempt is made to * connect to the first host in the list. The next entry in * the list is tried only if the attempt to connect to the current host fails. * This might cause your application to block for unacceptably long time if a host is down. @@ -602,6 +640,9 @@ public class LDAPConnection */ public void setConnSetupDelay (int delay) { m_connSetupDelay = delay; + if (m_connMgr != null) { + m_connMgr.setConnSetupDelay(delay); + } } /** @@ -689,24 +730,30 @@ public class LDAPConnection * } * System.out.println( "Connected to " + ldapHost + " at port " + ldapPort ) * - * + *

+ * You can limit the time spent waiting for the connection to be established + * by calling setConnectTimeout before connect. + *

* @param host host name of the LDAP server to which you want to connect. * This value can also be a space-delimited list of hostnames or * hostnames and port numbers (using the syntax - * hostname:portnumber). The connection setup policy specified with - * the ConnSetupDelay property controls whether connection - * attempts are made serially or concurrently. For example, you can specify + * hostname:portnumber). For example, you can specify * the following values for the host argument:
*

      *   myhost
      *   myhost hishost:389 herhost:5000 whathost
      *   myhost:686 myhost:389 hishost:5000 whathost:1024
      *
+ * If multiple servers are specified in the host list, the connection + * setup policy specified with the ConnSetupDelay property controls + * whether connection attempts are made serially or concurrently. + *

* @param port port number of the LDAP server to which you want to connect. * This parameter is ignored for any host in the host * parameter which includes a colon and port number. * @exception LDAPException The connection failed. * @see netscape.ldap.LDAPConnection#setConnSetupDelay + * @see netscape.ldap.LDAPConnection#setConnectTimeout */ public void connect(String host, int port) throws LDAPException { connect( host, port, null, null, m_defaultConstraints, false ); @@ -749,19 +796,24 @@ public class LDAPConnection * } * System.out.println( "Connected to " + ldapHost + " at port " + ldapPort ); * - * + *

+ * You can limit the time spent waiting for the connection to be established + * by calling setConnectTimeout before connect. + *

* @param host host name of the LDAP server to which you want to connect. * This value can also be a space-delimited list of hostnames or * hostnames and port numbers (using the syntax - * hostname:portnumber). The connection setup policy specified with - * the ConnSetupDelay property controls whether connection - * attempts are made serially or concurrently. For example, you can specify + * hostname:portnumber). For example, you can specify * the following values for the host argument:
*

      *   myhost
      *   myhost hishost:389 herhost:5000 whathost
      *   myhost:686 myhost:389 hishost:5000 whathost:1024
      *
+ * If multiple servers are specified in the host list, the connection + * setup policy specified with the ConnSetupDelay property controls + * whether connection attempts are made serially or concurrently. + *

* @param port port number of the LDAP server to which you want to connect. * This parameter is ignored for any host in the host * parameter which includes a colon and port number. @@ -769,6 +821,7 @@ public class LDAPConnection * @param passwd password used for authentication * @exception LDAPException The connection or authentication failed. * @see netscape.ldap.LDAPConnection#setConnSetupDelay + * @see netscape.ldap.LDAPConnection#setConnectTimeout */ public void connect(String host, int port, String dn, String passwd) throws LDAPException { @@ -781,19 +834,24 @@ public class LDAPConnection * represents an open connection, the connection is closed first * before the new connection is opened. This method allows the user to * specify the preferences for the bind operation. - * + *

+ * You can limit the time spent waiting for the connection to be established + * by calling setConnectTimeout before connect. + *

* @param host host name of the LDAP server to which you want to connect. * This value can also be a space-delimited list of hostnames or * hostnames and port numbers (using the syntax - * hostname:portnumber). The connection setup policy specified with - * the ConnSetupDelay property controls whether connection - * attempts are made serially or concurrently. For example, you can specify + * hostname:portnumber). For example, you can specify * the following values for the host argument:
*

      *   myhost
      *   myhost hishost:389 herhost:5000 whathost
      *   myhost:686 myhost:389 hishost:5000 whathost:1024
      *
+ * If multiple servers are specified in the host list, the connection + * setup policy specified with the ConnSetupDelay property controls + * whether connection attempts are made serially or concurrently. + *

* @param port port number of the LDAP server to which you want to connect. * This parameter is ignored for any host in the host * parameter which includes a colon and port number. @@ -802,6 +860,7 @@ public class LDAPConnection * @param cons preferences for the bind operation * @exception LDAPException The connection or authentication failed. * @see netscape.ldap.LDAPConnection#setConnSetupDelay + * @see netscape.ldap.LDAPConnection#setConnectTimeout */ public void connect(String host, int port, String dn, String passwd, LDAPConstraints cons) throws LDAPException { @@ -849,8 +908,9 @@ public class LDAPConnection } /* Create the Connection Setup Manager */ - m_connMgr = new LDAPConnSetupMgr(hostList, portList, m_factory, - m_connSetupDelay); + m_connMgr = new LDAPConnSetupMgr(hostList, portList, m_factory); + m_connMgr.setConnSetupDelay(m_connSetupDelay); + m_connMgr.setConnectTimeout(m_connectTimeout); connect(); @@ -970,20 +1030,20 @@ public class LDAPConnection LDAPException.PARAM_ERROR ); } - m_connMgr.openConnection(); + m_connMgr.openConnection(); m_thread = getNewThread(m_connMgr, m_cache); authenticateSSLConnection(); } /** - * Returns the trace output stream if set by the user + * Returns the trace output object if set by the user */ - OutputStream getTraceOutputStream() throws LDAPException { + Object getTraceOutput() throws LDAPException { // Check first if trace output has been set using setProperty() Object traceOut = m_properties.get(TRACE_PROPERTY); if (traceOut != null) { - return createTraceOutputStream(traceOut); + return createTraceOutput(traceOut); } // Check if the property has been set with java -Dcom.netscape.ldap.trace @@ -992,7 +1052,7 @@ public class LDAPConnection try { traceOut = System.getProperty(TRACE_PROPERTY); if (traceOut != null) { - return createTraceOutputStream(traceOut); + return createTraceOutput(traceOut); } } catch (Exception e) { @@ -1033,7 +1093,7 @@ public class LDAPConnection // to the new thread try { newThread = new LDAPConnThread(connMgr, cache, - getTraceOutputStream()); + getTraceOutput()); v = (Vector)m_threadConnTable.remove(connThread); break; } catch (Exception e) { @@ -1055,7 +1115,7 @@ public class LDAPConnection if (!connExists) { try { newThread = new LDAPConnThread(connMgr, cache, - getTraceOutputStream()); + getTraceOutput()); v = new Vector(); v.addElement(this); } catch (Exception e) { @@ -1296,7 +1356,7 @@ public class LDAPConnection * obtain additional required information * @exception LDAPException Failed to authenticate to the LDAP server. * @see netscape.ldap.LDAPConnection#authenticate(java.lang.String, - * java.util.Hashtable, javax.security.auth.callback.CallbackHandler) + * java.util.Hashtable, java.lang.Object) */ public void authenticate(String dn, String[] mechanisms, Hashtable props, /*CallbackHandler*/ Object cbh) @@ -1613,7 +1673,7 @@ public class LDAPConnection * obtain additional required information * @exception LDAPException Failed to authenticate to the LDAP server. * @see netscape.ldap.LDAPConnection#bind(java.lang.String, - * java.util.Hashtable, javax.security.auth.callback.CallbackHandler) + * java.util.Hashtable, java.lang.Object) */ public void bind(String dn, String[] mechanisms, Hashtable props, /*CallbackHandler*/ Object cbh) @@ -1709,14 +1769,16 @@ public class LDAPConnection * Mark this connection as bound in the thread connection table */ void markConnAsBound() { - if (m_threadConnTable.containsKey(m_thread)) { - Vector v = (Vector)m_threadConnTable.get(m_thread); - for (int i=0, n=v.size(); iRFC 2252, Lightweight Directory Access Protocol (v3): + * DIT Content Rule Description covers the types of information + * to specify when defining a DIT content rule. According to the RFC, + * the description of a DIT content rule can include the following: + *

+ * + *

    + *
  • an OID identifying the attribute type + *
  • a name identifying the attribute type + *
  • a description of the attribute type + *
  • the name of the parent attribute type + *
  • the syntax used by the attribute (for example, + * cis or int) + *
  • an indication of whether the attribute type is single-valued + * or multi-valued + *
+ *

+ * + * When you construct an LDAPDITContentRuleSchema object, you can + * specify these types of information as arguments to the constructor or + * in the AttributeTypeDescription format specified in RFC 2252. + * When an LDAP client searches an LDAP server for the schema, the server + * returns schema information as an object with attribute values in this + * format. + *

+ * + * There are a number of additional optional description fields which + * are not explicitly accessible through LDAPDITContentRuleSchema, but which + * can be managed with setQualifier, getQualifier, and getQualifierNames: + *

+ * + *

    + *
  • OBSOLETE + *
+ *

+ * + * To get the name, OID, and description of this DIT content rule + * , use the getName, getOID, and + * getDescription methods inherited from the abstract class + * LDAPSchemaElement. Optional and custom qualifiers are + * accessed with getQualifier and getQualifierNames + * from LDAPSchemaElement. + *

+ * + * To add or remove this attribute type definition from the + * schema, use the add and remove + * methods, which this class inherits from the LDAPSchemaElement + * abstract class. + *

+ * RFC 2252 defines DITContentRuleDescription as follows: + *

+ *

+ *    DITContentRuleDescription = "("
+ *        numericoid   ; Structural ObjectClass identifier
+ *        [ "NAME" qdescrs ]
+ *        [ "DESC" qdstring ]
+ *        [ "OBSOLETE" ]
+ *        [ "AUX" oids ]    ; Auxiliary ObjectClasses
+ *        [ "MUST" oids ]   ; AttributeType identifiers
+ *        [ "MAY" oids ]    ; AttributeType identifiers
+ *        [ "NOT" oids ]    ; AttributeType identifiers
+ *       ")"
+ * 
+ * + * @version 1.0 + * @see netscape.ldap.LDAPSchemaElement + **/ + +public class LDAPDITContentRuleSchema extends LDAPSchemaElement { + + static final long serialVersionUID = -8588488481097270056L; + + /** + * Constructs a blank element. + */ + protected LDAPDITContentRuleSchema() { + super(); + } + + /** + * Constructs a DIT content rule definition, using the specified + * information. + * @param name name of the attribute type + * @param oid object identifier (OID) of the attribute type + * in dotted-string format (for example, "1.2.3.4") + * @param description description of attribute type + * @param obsolete true if the rule is obsolete + * @param auxiliary a list of auxiliary object classes + * allowed for an entry to which this content rule applies. + * These may either be specified by name or numeric oid. + * @param required a list of user attribute types that an entry + * to which this content rule applies must contain in addition to + * its normal set of mandatory attributes. These may either be + * specified by name or numeric oid. + * @param optional a list of user attribute types that an entry + * to which this content rule applies may contain in addition to + * its normal set of optional attributes. These may either be + * specified by name or numeric oid. + * @param precluded a list consisting of a subset of the optional + * user attribute types of the structural and auxiliary object + * classes which are precluded from an entry to which this content rule + * applies. These may either be specified by name or numeric oid. + */ + public LDAPDITContentRuleSchema( String name, String oid, + String description, boolean obsolete, + String[] auxiliary, + String[] required, + String[] optional, + String[] precluded ) { + super( name, oid, description, null ); + if ( required != null ) { + for( int i = 0; i < required.length; i++ ) { + must.addElement( required[i] ); + } + } + if ( optional != null ) { + for( int i = 0; i < optional.length; i++ ) { + may.addElement( optional[i] ); + } + } + if ( auxiliary != null ) { + for( int i = 0; i < auxiliary.length; i++ ) { + aux.addElement( auxiliary[i] ); + } + } + if ( precluded != null ) { + for( int i = 0; i < precluded.length; i++ ) { + not.addElement( precluded[i] ); + } + } + if ( obsolete ) { + setQualifier( OBSOLETE, "" ); + } + } + + /** + * Constructs a DIT content rule definition based on a description in + * the DITContentRuleDescription format. For information on this format, + * (see RFC 2252, Lightweight Directory Access Protocol (v3): + * DIT Content Rule Description. This is the format that LDAP servers + * and clients use to exchange schema information. (For example, when + * you search an LDAP server for its schema, the server returns an entry + * with the attributes "objectclasses" and "attributetypes". The + * values of "attributetypes" are attribute type descriptions + * in this format.) + *

+ * + * @param raw definition of the DIT content rule in the + * DITContentRuleDescription format + */ + public LDAPDITContentRuleSchema( String raw ) { + attrName = "ditContentRules"; + parseValue( raw ); + Object o = properties.get( MAY ); + if ( o != null ) { + if ( o instanceof Vector ) { + may = (Vector)o; + } else { + may.addElement( o ); + } + } + o = properties.get( MUST ); + if ( o != null ) { + if ( o instanceof Vector ) { + must = (Vector)o; + } else { + must.addElement( o ); + } + } + o = properties.get( NOT ); + if ( o != null ) { + if ( o instanceof Vector ) { + not = (Vector)o; + } else { + not.addElement( o ); + } + } + o = properties.get( AUX ); + if ( o != null ) { + if ( o instanceof Vector ) { + aux = (Vector)o; + } else { + aux.addElement( o ); + } + } + } + + /** + * Gets the names of the required attributes for + * this content rule. + * @return the names of the required attributes + * for this content rule. + */ + public String[] getRequiredAttributes() { + String[] vals = new String[must.size()]; + must.copyInto( vals ); + return vals; + } + + /** + * Gets the names of optional attributes allowed + * in this content rule. + * @return the names of optional attributes + * allowed in this content rule. + */ + public String[] getOptionalAttributes() { + String[] vals = new String[may.size()]; + may.copyInto( vals ); + return vals; + } + + /** + * Gets the names of the precluded attributes for + * this content rule. + * @return the names of the precluded attributes + * for this content rule. + */ + public String[] getPrecludedAttributes() { + String[] vals = new String[not.size()]; + not.copyInto( vals ); + return vals; + } + + /** + * Gets the names of the auxiliary object classes allowed + * in this content rule. + * @return the names of auxiliary object classes + * allowed in this content rule. + */ + public String[] getAuxiliaryClasses() { + String[] vals = new String[aux.size()]; + aux.copyInto( vals ); + return vals; + } + + /** + * Prepares a value in RFC 2252 format for submission to a server + * + * @return a String ready for submission to an LDAP server. + */ + public String getValue() { + String s = getValuePrefix(); + String val; + val = getOptionalValues( NOVALS ); + if ( val.length() > 0 ) { + s += val + ' '; + } + if ( aux.size() > 0 ) { + s += AUX + " " + vectorToList( aux ); + s += ' '; + } + if ( must.size() > 0 ) { + s += MUST + " " + vectorToList( must ); + s += ' '; + } + if ( may.size() > 0 ) { + s += MAY + " " + vectorToList( may ); + s += ' '; + } + if ( not.size() > 0 ) { + s += NOT + " " + vectorToList( not ); + s += ' '; + } + val = getCustomValues(); + if ( val.length() > 0 ) { + s += val + ' '; + } + s += ')'; + return s; + } + + /** + * Creates a list within parentheses, with $ as delimiter + * + * @param vals values for list + * @return a String with a list of values. + */ + protected String vectorToList( Vector vals ) { + String val = "( "; + for( int i = 0; i < vals.size(); i++ ) { + val += (String)vals.elementAt(i) + ' '; + if ( i < (vals.size() - 1) ) { + val += "$ "; + } + } + val += ')'; + return val; + } + + /** + * Gets the definition of the rule in a user friendly format. + * This is the format that the rule definition uses when + * printing the attribute type or the schema. + * @return definition of the rule in a user friendly format. + */ + public String toString() { + String s = "Name: " + name + "; OID: " + oid; + s += "; Description: " + description + "; Required: "; + int i = 0; + Enumeration e = must.elements(); + while( e.hasMoreElements() ) { + if ( i > 0 ) + s += ", "; + i++; + s += (String)e.nextElement(); + } + s += "; Optional: "; + e = may.elements(); + i = 0; + while( e.hasMoreElements() ) { + if ( i > 0 ) + s += ", "; + i++; + s += (String)e.nextElement(); + } + s += "; Auxiliary: "; + e = aux.elements(); + i = 0; + while( e.hasMoreElements() ) { + if ( i > 0 ) + s += ", "; + i++; + s += (String)e.nextElement(); + } + s += "; Precluded: "; + e = not.elements(); + i = 0; + while( e.hasMoreElements() ) { + if ( i > 0 ) + s += ", "; + i++; + s += (String)e.nextElement(); + } + if ( isObsolete() ) { + s += "; OBSOLETE"; + } + s += getQualifierString( IGNOREVALS ); + return s; + } + + public final static String AUX = "AUX"; + public final static String MUST = "MUST"; + public final static String MAY = "MAY"; + public final static String NOT = "NOT"; + + // Qualifiers known to not have values; prepare a Hashtable + static final String[] NOVALS = { "OBSOLETE" }; + static { + for( int i = 0; i < NOVALS.length; i++ ) { + novalsTable.put( NOVALS[i], NOVALS[i] ); + } + } + + // Qualifiers which we output explicitly in toString() + static final String[] IGNOREVALS = { OBSOLETE, + AUX, + MUST, + MAY, + NOT + }; + + private Vector must = new Vector(); + private Vector may = new Vector(); + private Vector aux = new Vector(); + private Vector not = new Vector(); +} diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPDITStructureRuleSchema.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPDITStructureRuleSchema.java new file mode 100644 index 00000000000..c2d5daba268 --- /dev/null +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPDITStructureRuleSchema.java @@ -0,0 +1,276 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The structures of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 2000 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + */ +package netscape.ldap; + +import java.util.*; + +/** + * The definition of a DIT structure rule in the schema. + * RFC 2252, Lightweight Directory Access Protocol (v3): + * DIT Structure Rule Description covers the types of information + * to specify when defining a DIT structure rule. According to the RFC, + * the description of a DIT structure rule can include the following: + *

+ * + *

    + *
  • an OID identifying the attribute type + *
  • a name identifying the attribute type + *
  • a description of the attribute type + *
  • the name of the parent attribute type + *
  • the syntax used by the attribute (for example, + * cis or int) + *
  • an indication of whether the attribute type is single-valued + * or multi-valued + *
+ *

+ * + * When you construct an LDAPDITStructureRuleSchema object, you can + * specify these types of information as arguments to the constructor or + * in the AttributeTypeDescription format specified in RFC 2252. + * When an LDAP client searches an LDAP server for the schema, the server + * returns schema information as an object with attribute values in this + * format. + *

+ * + * There are a number of additional optional description fields which + * are not explicitly accessible through LDAPDITStructureRuleSchema, but which + * can be managed with setQualifier, getQualifier, and getQualifierNames: + *

+ * + *

    + *
  • OBSOLETE + *
+ *

+ * + * To get the name, OID, and description of this DIT structure rule + * , use the getName, getOID, and + * getDescription methods inherited from the abstract class + * LDAPSchemaElement. Optional and custom qualifiers are + * accessed with getQualifier and getQualifierNames + * from LDAPSchemaElement. + *

+ * + * To add or remove this attribute type definition from the + * schema, use the add and remove + * methods, which this class inherits from the LDAPSchemaElement + * abstract class. + *

+ * RFC 2252 defines DITStructureRuleDescription as follows: + *

+ *

+ *      DITStructureRuleDescription = "(" whsp
+ *        ruleidentifier whsp            ; DITStructureRule identifier
+ *        [ "NAME" qdescrs ]
+ *        [ "DESC" qdstring ]
+ *        [ "OBSOLETE" whsp ]
+ *        "FORM" woid whsp               ; NameForm
+ *        [ "SUP" ruleidentifiers whsp ] ; superior DITStructureRules
+ *    ")"
+ * 
+ * + * @version 1.0 + * @see netscape.ldap.LDAPSchemaElement + **/ + +public class LDAPDITStructureRuleSchema extends LDAPSchemaElement { + + static final long serialVersionUID = -2823317246039655811L; + + /** + * Constructs a blank element. + */ + protected LDAPDITStructureRuleSchema() { + super(); + } + + /** + * Constructs a DIT structure rule definition, using the specified + * information. + * @param name name of the attribute type + * @param ruleID unique identifier of the structure rule.
+ * NOTE: this is an integer, not a dotted numerical identifier. + * Structure rules aren't identified by OID. + * @param description description of attribute type + * @param obsolete true if the rule is obsolete + * @param nameForm either the identifier or name of a name form. + * This is used to indirectly refer to the object class that this + * structure rule applies to. + * @param superiors list of superior structure rules - specified + * by their integer ID. The object class specified by this structure + * rule (via the nameForm parameter) may only be subordinate in + * the DIT to object classes of those represented by the structure + * rules here. + */ + public LDAPDITStructureRuleSchema( String name, int ruleID, + String description, boolean obsolete, + String nameForm, + String[] superiors ) { + super( name, "", description, null ); + this.nameForm = nameForm; + this.ruleID = ruleID; + if ( obsolete ) { + setQualifier( OBSOLETE, "" ); + } + if ( (superiors != null) && (superiors.length > 0) ) { + setQualifier( SUPERIOR, superiors ); + } + } + + /** + * Constructs a DIT structure rule definition based on a description in + * the DITStructureRuleDescription format. For information on this format, + * (see RFC 2252, Lightweight Directory Access Protocol (v3): + * DIT Structure Rule Description. This is the format that + * LDAP servers + * and clients use to exchange schema information. (For example, when + * you search an LDAP server for its schema, the server returns an entry + * with the attributes "objectclasses" and "attributetypes". The + * values of "attributetypes" are attribute type descriptions + * in this format.) + *

+ * + * @param raw definition of the DIT structure rule in the + * DITStructureRuleDescription format + */ + public LDAPDITStructureRuleSchema( String raw ) { + attrName = "ditStructureRules"; + parseValue( raw ); + Object o = properties.get( FORM ); + if ( o != null ) { + nameForm = (String)o; + } + try { + ruleID = Integer.parseInt( oid ); + } catch ( Exception e ) { + } + } + + /** + * Returns a list of all structure rules that are superior to this + * structure rule. To resolve to an object class, you need to first + * resolve the superior id to another structure rule, then call + * getNameForm().getObjectClass() on that structure rule. + * @return the structure rules that are superior to this + * structure rule. + */ + public String[] getSuperiors() { + return getQualifier( SUPERIOR ); + } + + /** + * Returns the rule ID for this structure rule. Note that this returns + * an integer rather than a dotted decimal OID. Objects of this class do + * not have an OID, thus getID will return null. + * + * @return the rule ID for this structure rule. + */ + public int getRuleID() { + return ruleID; + } + + /** + * Returns the NameForm that this structure rule controls. You can get + * the actual object class that this structure rule controls by calling + * getNameForm().getObjectClass(). + * + * @return the NameForm that this structure rule controls. + */ + public String getNameForm() { + return nameForm; + } + + /** + * Prepares a value in RFC 2252 format for submission to a server + * + * @return a String ready for submission to an LDAP server. + */ + public String getValue() { + String s = "( " + ruleID + ' '; + if ( name != null ) { + s += "NAME " + '\'' + name + "\' "; + } + if ( description != null ) { + s += "DESC \'" + description + "\' "; + } + if ( isObsolete() ) { + s += OBSOLETE + ' '; + } + s += FORM + " " + nameForm + ' '; + String val = getValue( SUPERIOR, false ); + if ( (val != null) && (val.length() > 1) ) { + s += val + ' '; + } + val = getCustomValues(); + if ( val.length() > 0 ) { + s += val + ' '; + } + s += ')'; + return s; + } + + /** + * Gets the definition of the rule in a user friendly format. + * This is the format that the rule definition uses when + * printing the attribute type or the schema. + * @return definition of the rule in a user friendly format. + */ + public String toString() { + String s = "Name: " + name + "; ruleID: " + ruleID + "; "; + s += "Description: " + description; + if ( isObsolete() ) { + s += "; OBSOLETE"; + } + String[] superiors = getSuperiors(); + if ( superiors != null ) { + for( int i = 0; i < superiors.length; i++ ) { + s += superiors[i]; + if ( i < (superiors.length-1) ) { + s += ", "; + } + } + } + s += "Name form: " + nameForm + "; "; + s += getQualifierString( IGNOREVALS ); + return s; + } + + public final static String FORM = "FORM"; + + // Qualifiers known to not have values; prepare a Hashtable + static final String[] NOVALS = { "OBSOLETE" }; + static { + for( int i = 0; i < NOVALS.length; i++ ) { + novalsTable.put( NOVALS[i], NOVALS[i] ); + } + } + + // Qualifiers which we output explicitly in toString() + static final String[] IGNOREVALS = { OBSOLETE, + FORM, + "SUP" + }; + + private String nameForm = null; + private int ruleID = 0; +} diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPDN.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPDN.java index 4e03c55e07e..500737337b4 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPDN.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPDN.java @@ -132,11 +132,15 @@ public class LDAPDN { StringBuffer copy = new StringBuffer(); int i=0; while (iRFC 2252, Lightweight Directory Access Protocol (v3): + * Attribute Syntax Definitions covers the types of information + * that need to be specified in the definition of a matching rule use. + * According to the RFC, the description of a matching rule use can + * include the following information: + *

+ * + *

    + *
  • an OID identifying the matching rule + *
  • a name identifying the matching rule use + *
  • a description of the matching rule use + *
  • a list of attributes the matching rule applies to + *
+ *

+ * + * When you construct an LDAPMatchingRuleUseSchema object, you can + * specify these types of information as arguments to the constructor or + * in the MatchingRuleUseDescription format specified in RFC 2252. + * When an LDAP client searches an LDAP server for the schema, the server + * returns schema information as an object with values in this + * format. + *

+ * + * You can get the name, OID, and description of this matching rule use + * definition by using the getName, getOID, and + * getDescription methods inherited from the abstract class + * LDAPSchemaElement. Custom qualifiers are + * accessed with getQualifier and getQualifierNames + * from LDAPSchemaElement. + *

+ * + * To add or remove this matching rule definition from the + * schema, use the add and remove + * methods, which this class inherits from the LDAPSchemaElement + * abstract class. + *

+ * RFC 2252 defines MatchingRuleUseDescription follows: + *

+ *

+ * Values of the matchingRuleUse list the attributes which are suitable
+ * for use with an extensible matching rule.
+ *
+ *    MatchingRuleUseDescription = "(" whsp
+ *        numericoid whsp  ; MatchingRule identifier
+ *        [ "NAME" qdescrs ]
+ *        [ "DESC" qdstring ]
+ *        [ "OBSOLETE" ]
+ *       "APPLIES" oids    ; AttributeType identifiers
+ *    whsp ")"
+ * 
+ *

+ * + * @version 1.0 + * @see netscape.ldap.LDAPSchemaElement + * @see netscape.ldap.LDAPMatchingRuleSchema + **/ + +public class LDAPMatchingRuleUseSchema extends LDAPAttributeSchema { + + + + /** + * Constructs a matching rule use definition, using the specified + * information. + * @param name name of the matching rule + * @param oid object identifier (OID) of the matching rule + * in dotted-decimal format (for example, "1.2.3.4") + * @param description description of the matching rule + * @param attributes array of the OIDs of the attributes for which + * the matching rule is applicable + */ + public LDAPMatchingRuleUseSchema( String name, String oid, + String description, + String[] attributes ) { + if ( (oid == null) || (oid.trim().length() < 1) ) { + throw new IllegalArgumentException( "OID required" ); + } + this.name = name; + this.oid = oid; + this.description = description; + attrName = "matchingruleuse"; + this.attributes = new String[attributes.length]; + for( int i = 0; i < attributes.length; i++ ) { + this.attributes[i] = attributes[i]; + } + } + + /** + * Constructs a matching rule use definition based on descriptions in + * the MatchingRuleUseDescription format. For information on this format, + * (see RFC 2252, Lightweight Directory Access Protocol (v3): + * Attribute Syntax Definitions. This is the format that LDAP servers + * and clients use to exchange schema information. For example, when + * you search an LDAP server for its schema, the server returns an entry + * with attributes that include "matchingrule" and "matchingruleuse". + * The values of these attributes are matching rule descriptions + * in this format. + *

+ * + * @param use definition of the use of the matching rule in the + * MatchingRuleUseDescription format + */ + public LDAPMatchingRuleUseSchema( String use ) { + attrName = "matchingruleuse"; + parseValue( use ); + Vector v = (Vector)properties.get( "APPLIES" ); + if ( v != null ) { + attributes = new String[v.size()]; + v.copyInto( attributes ); + v.removeAllElements(); + } + } + + /** + * Gets the list of the OIDs of the attribute types which can be used + * with the matching rule. + * @return array of the OIDs of the attribute types which can be used + * with the matching rule. + */ + public String[] getApplicableAttributes() { + return attributes; + } + + /** + * Gets the matching rule use definition in the string representation + * of the MatchingRuleUseDescription data type defined in X.501 (see + * RFC 2252, Lightweight Directory Access Protocol + * (v3): Attribute Syntax Definitions + * for a description of these formats). + * This is the format that LDAP servers and clients use to exchange + * schema information. (For example, when + * you search an LDAP server for its schema, the server returns an entry + * with the attributes "matchingrules" and "matchingruleuse". The + * values of these attributes are matching rule description and + * matching rule use description in these formats.) + *

+ * + * @return a string in a format that can be used as the value of + * the matchingruleuse attribute (which describes the use of + * a matching rule in the schema) of a subschema object + */ + public String getValue() { + String s = getValuePrefix(); + if ( (attributes != null) && (attributes.length > 0) ) { + s += "APPLIES ( "; + for( int i = 0; i < attributes.length; i++ ) { + if ( i > 0 ) + s += " $ "; + s += attributes[i]; + } + s += " ) "; + } + s += ')'; + return s; + } + + /** + * Gets the definition of the matching rule use in a user friendly format. + * This is the format that the matching rule use definition uses when + * you print the matching rule or the schema. + * @return definition of the matching rule in a user friendly format. + */ + public String toString() { + String s = "Name: " + name + "; OID: " + oid; + s += "; Description: " + description; + if ( attributes != null ) { + s += "; Applies to: "; + for( int i = 0; i < attributes.length; i++ ) { + if ( i > 0 ) + s += ", "; + s += attributes[i]; + } + } + s += getQualifierString( EXPLICIT ); + return s; + } + + // Qualifiers tracked explicitly + static final String[] EXPLICIT = { OBSOLETE }; + + private String[] attributes = null; +} diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPMessage.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPMessage.java index 0390e734dd0..8a4de96438f 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPMessage.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPMessage.java @@ -49,7 +49,9 @@ import java.text.SimpleDateFormat; * * @version 1.0 */ -public class LDAPMessage { +public class LDAPMessage implements java.io.Serializable { + + static final long serialVersionUID = -1364094245850026720L; public final static int BIND_REQUEST = 0; public final static int BIND_RESPONSE = 1; diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPMessageQueue.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPMessageQueue.java index 6b1b7b63a2f..eb93c8599b3 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPMessageQueue.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPMessageQueue.java @@ -33,7 +33,9 @@ import java.util.Vector; * Superclass for LDAResponseListener and LDAPSearchListener * */ -class LDAPMessageQueue { +class LDAPMessageQueue implements java.io.Serializable { + + static final long serialVersionUID = -7163312406176592277L; /** * Request entry encapsulates request parameters diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPModification.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPModification.java index 2dd58c0870e..1cbef04ef25 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPModification.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPModification.java @@ -44,7 +44,9 @@ import netscape.ldap.ber.stream.*; * @version 1.0 * @see netscape.ldap.LDAPConnection#modify(java.lang.String, netscape.ldap.LDAPModification) */ -public class LDAPModification { +public class LDAPModification implements java.io.Serializable { + + static final long serialVersionUID = 4836472112866826595L; /** * Specifies that a value should be added to an attribute. diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPModificationSet.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPModificationSet.java index cf4efc139ce..6bf394517ea 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPModificationSet.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPModificationSet.java @@ -37,8 +37,9 @@ import java.util.*; * @see netscape.ldap.LDAPModification * @see netscape.ldap.LDAPConnection#modify(java.lang.String, netscape.ldap.LDAPModificationSet) */ -public class LDAPModificationSet { +public class LDAPModificationSet implements java.io.Serializable { + static final long serialVersionUID = 4650238666753391214L; private int current = 0; private Vector modifications; diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPNameFormSchema.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPNameFormSchema.java new file mode 100644 index 00000000000..3d5bb231407 --- /dev/null +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPNameFormSchema.java @@ -0,0 +1,295 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 2000 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + */ +package netscape.ldap; + +import java.util.*; + +/** + * The definition of a name form in the schema. + * RFC 2252, Lightweight Directory Access Protocol (v3): + * Attribute Syntax Definitions covers the types of information + * that need to be specified in the definition of a name form. + * According to the RFC, the description of a name form can + * include the following information: + *

+ * + *

    + *
  • an OID identifying the name form + *
  • a name identifying the name form + *
  • a description of the name form + *
  • the structural object class of this name form + *
  • the list of attribute types that are required in this name form + *
  • the list of attribute types that are allowed (optional) in this + * name form + *
+ *

+ * + * When you construct an LDAPNameFormSchema object, + * you can specify + * these types of information as arguments to the constructor or in the + * NameFormDescription format specified in RFC 2252. + * When an LDAP client searches an LDAP server for the schema, the server + * returns schema information as an object with attribute values in this + * format. + *

+ * + * You can get the name, OID, and description of this name form + * definition by using the getName, getOID, and + * getDescription methods inherited from the abstract class + * LDAPSchemaElement. Optional and custom qualifiers are + * accessed with getQualifier and getQualifierNames + * from LDAPSchemaElement. + + *

+ * + * To add or remove this name form definition from the + * schema, use the add and remove + * methods, which this class inherits from the LDAPSchemaElement + * abstract class. + *

+ * RFC 2252 defines NameFormDescription as follows: + *

+ *

+ *    NameFormDescription = "(" whsp
+ *        numericoid whsp      ; NameForm identifier
+ *        [ "NAME" qdescrs ]
+ *        [ "DESC" qdstring ]
+ *        [ "OBSOLETE" whsp ]
+ *        "OC" woid            ; Structural ObjectClass
+ *        [ "MUST" oids ]      ; AttributeTypes
+ *        [ "MAY" oids ]       ; AttributeTypes
+ *    whsp ")"
+ * 
+ * + * @version 1.0 + * @see netscape.ldap.LDAPSchemaElement + **/ +public class LDAPNameFormSchema extends LDAPSchemaElement { + + static final long serialVersionUID = 1665316286199590403L; + + /** + * Constructs a name form definition, using the specified + * information. + * @param name name of the name form + * @param oid object identifier (OID) of the name form + * in dotted-string format (for example, "1.2.3.4") + * @param description description of the name form + * @param obsolete true if the rule is obsolete + * @param objectClass the object to which this name form applies. + * This may either be specified by name or numeric oid. + * @param required array of names of attributes required + * in this name form + * @param optional array of names of optional attributes + * allowed in this name form + */ + public LDAPNameFormSchema( String name, String oid, + String description, boolean obsolete, + String objectClass, + String[] required, String[] optional ) { + super( name, oid, description, null ); + attrName = "nameforms"; + if ( obsolete ) { + setQualifier( OBSOLETE, "" ); + } + this.objectClass = objectClass; + if ( required != null ) { + for( int i = 0; i < required.length; i++ ) { + must.addElement( required[i] ); + } + } + if ( optional != null ) { + for( int i = 0; i < optional.length; i++ ) { + may.addElement( optional[i] ); + } + } + } + + /** + * Constructs a name form definition based on a description in + * the NameFormDescription format. For information on this format, + * (see RFC 2252, Lightweight Directory Access Protocol (v3): + * Attribute Syntax Definitions. This is the format that LDAP servers + * and clients use to exchange schema information. (For example, when + * you search an LDAP server for its schema, the server returns an entry + * with the attributes "objectclasses" and "attributetypes". The + * values of the "objectclasses" attribute are name form descriptions + * in this format.) + *

+ * + * @param raw definition of the object in the NameFormDescription + * format + */ + public LDAPNameFormSchema( String raw ) { + attrName = "objectclasses"; + parseValue( raw ); + Object o = properties.get( "MAY" ); + if ( o != null ) { + if ( o instanceof Vector ) { + may = (Vector)o; + } else { + may.addElement( o ); + } + } + o = properties.get( "MUST" ); + if ( o != null ) { + if ( o instanceof Vector ) { + must = (Vector)o; + } else { + must.addElement( o ); + } + } + o = properties.get( "OC" ); + if ( o != null ) { + objectClass = (String)o; + } + } + + /** + * Gets the names of the required attributes for + * this name form. + * @return the names of the required attributes + * for this name form. + */ + public String[] getRequiredNamingAttributes() { + String[] vals = new String[must.size()]; + must.copyInto( vals ); + return vals; + } + + /** + * Gets the names of optional attributes allowed + * in this name form. + * @return the names of optional attributes + * allowed in this name form. + */ + public String[] getOptionalNamingAttributes() { + String[] vals = new String[may.size()]; + may.copyInto( vals ); + return vals; + } + + /** + * Returns the name of the object class that this name form applies to. + * + * @return the name of the object class that this name form applies to. + */ + public String getObjectClass() { + return objectClass; + } + + /** + * Prepares a value in RFC 2252 format for submitting to a server. + * + * @param quotingBug true if SUP and SYNTAX values are to + * be quoted. That is to satisfy bugs in certain LDAP servers. + * @return a String ready for submission to an LDAP server. + */ + String getValue( boolean quotingBug ) { + String s = getValuePrefix(); + String val = getOptionalValues( NOVALS ); + if ( val.length() > 0 ) { + s += val + ' '; + } + s += "OC " + objectClass + ' '; + if ( must.size() > 0 ) { + s += "MUST " + vectorToList( must ); + s += ' '; + } + if ( may.size() > 0 ) { + s += "MAY " + vectorToList( may ); + s += ' '; + } + val = getCustomValues(); + if ( val.length() > 0 ) { + s += val + ' '; + } + s += ')'; + return s; + } + + /** + * Gets the definition of the name form in a user friendly format. + * This is the format that the name form definition uses when + * you print the name form or the schema. + * @return definition of the name form in a user friendly format. + */ + public String toString() { + String s = "Name: " + name + "; OID: " + oid; + s += "; Description: " + description + "; Required: "; + String[] vals = getRequiredNamingAttributes(); + for( int i = 0; i < vals.length; i++ ) { + if ( i > 0 ) + s += ", "; + s += vals[i]; + } + s += "; Optional: "; + vals = getOptionalNamingAttributes(); + for( int i = 0; i < vals.length; i++ ) { + if ( i > 0 ) + s += ", "; + s += vals[i]; + } + if ( isObsolete() ) { + s += "; OBSOLETE"; + } + s += getQualifierString( IGNOREVALS ); + return s; + } + + /** + * Creates a list within parentheses, with $ as delimiter + * + * @param vals values for list + * @return a String with a list of values. + */ + protected String vectorToList( Vector vals ) { + String val = "( "; + for( int i = 0; i < vals.size(); i++ ) { + val += (String)vals.elementAt(i) + ' '; + if ( i < (vals.size() - 1) ) { + val += "$ "; + } + } + val += ')'; + return val; + } + + private Vector must = new Vector(); + private Vector may = new Vector(); + private String objectClass = null; + + // Qualifiers known to not have values; prepare a Hashtable + static final String[] NOVALS = { "OBSOLETE" }; + static { + for( int i = 0; i < NOVALS.length; i++ ) { + novalsTable.put( NOVALS[i], NOVALS[i] ); + } + } + + // Qualifiers which we output explicitly in toString() + static final String[] IGNOREVALS = { "MUST", "MAY", + "OBJECTCLASS", "OBSOLETE"}; +} + diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPObjectClassSchema.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPObjectClassSchema.java index ce6fd28ae21..210f3bc545a 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPObjectClassSchema.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPObjectClassSchema.java @@ -104,6 +104,9 @@ import java.util.*; * @see netscape.ldap.LDAPSchemaElement **/ public class LDAPObjectClassSchema extends LDAPSchemaElement { + + static final long serialVersionUID = -1732784695071118656L; + /** * Constructs an object class definition, using the specified * information. The type of the object class will be STRUCTURAL. @@ -121,19 +124,7 @@ public class LDAPObjectClassSchema extends LDAPSchemaElement { public LDAPObjectClassSchema( String name, String oid, String superior, String description, String[] required, String[] optional ) { - super( name, oid, description ); - attrName = "objectclasses"; - setQualifier( SUPERIOR, superior ); - if ( required != null ) { - for( int i = 0; i < required.length; i++ ) { - must.addElement( required[i] ); - } - } - if ( optional != null ) { - for( int i = 0; i < optional.length; i++ ) { - may.addElement( optional[i] ); - } - } + this( name, oid, superior, description, required, optional, null ); } /** @@ -161,13 +152,43 @@ public class LDAPObjectClassSchema extends LDAPSchemaElement { this( name, oid, ((superiors != null) && (superiors.length > 0)) ? superiors[0] : null, - description, required, optional ); + description, required, optional, aliases ); if ( (superiors != null) && (superiors.length > 1) ) { setQualifier( SUPERIOR, superiors ); } setQualifier( TYPE, typeToString( type ) ); - if ( (aliases != null) && (aliases.length > 0) ) { - this.aliases = aliases; + } + + /** + * Constructs an object class definition, using the specified + * information. The type of the object class will be STRUCTURAL. + * @param name name of the object class + * @param oid object identifier (OID) of the object class + * in dotted-string format (for example, "1.2.3.4") + * @param description description of the object class + * @param superior name of the parent object class + * (the object class that the new object class inherits from) + * @param required array of names of attributes required + * in this object class + * @param optional array of names of optional attributes + * allowed in this object class + */ + protected LDAPObjectClassSchema( String name, String oid, String superior, + String description, + String[] required, String[] optional, + String[] aliases ) { + super( name, oid, description, aliases ); + attrName = "objectclasses"; + setQualifier( SUPERIOR, superior ); + if ( required != null ) { + for( int i = 0; i < required.length; i++ ) { + must.addElement( required[i] ); + } + } + if ( optional != null ) { + for( int i = 0; i < optional.length; i++ ) { + may.addElement( optional[i] ); + } } } diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPRebindAuth.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPRebindAuth.java index 81fae52daaf..6cc740a9475 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPRebindAuth.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPRebindAuth.java @@ -53,8 +53,9 @@ import java.io.*; * @version 1.0 * @see netscape.ldap.LDAPRebind */ -public class LDAPRebindAuth { +public class LDAPRebindAuth implements java.io.Serializable { + static final long serialVersionUID = 7161655313564756294L; private String m_dn; private String m_password; diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPReferralException.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPReferralException.java index ce5e72bcda9..2e84ee383e1 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPReferralException.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPReferralException.java @@ -37,6 +37,7 @@ import java.io.*; */ public class LDAPReferralException extends LDAPException { + static final long serialVersionUID = 1771536577344289897L; private String m_referrals[] = null; /* modified for LDAPv3 */ /** diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPResourceBundle.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPResourceBundle.java index c45c7c96bef..dab8f3c9859 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPResourceBundle.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPResourceBundle.java @@ -42,8 +42,9 @@ import java.io.*; * * @see java.util.Locale */ -class LDAPResourceBundle { +class LDAPResourceBundle implements java.io.Serializable { + static final long serialVersionUID = -5903986665461157980L; private static final boolean m_debug = false; private static final String m_suffix = ".props"; private static final String m_locale_separator = "_"; diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPResponse.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPResponse.java index 6d4d90f64e1..af29ec93292 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPResponse.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPResponse.java @@ -31,6 +31,8 @@ import netscape.ldap.client.opers.JDAPResult; */ public class LDAPResponse extends LDAPMessage { + static final long serialVersionUID = 5822205242593427418L; + /** * Constructor * diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPResponseControl.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPResponseControl.java index 715a3d58736..439088754df 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPResponseControl.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPResponseControl.java @@ -26,7 +26,8 @@ package netscape.ldap; * It stores the response controls and its corresponding LDAPConnection and * the message ID for its corresponding LDAPMessage. */ -class LDAPResponseControl { +class LDAPResponseControl implements java.io.Serializable { + static final long serialVersionUID = 389472019686058593L; private LDAPConnection m_connection; private int m_messageID; private LDAPControl[] m_controls; @@ -52,4 +53,4 @@ class LDAPResponseControl { public LDAPConnection getConnection() { return m_connection; } -} \ No newline at end of file +} diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPResponseListener.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPResponseListener.java index 7fdf49750a1..5c99dcbbefa 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPResponseListener.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPResponseListener.java @@ -29,6 +29,8 @@ package netscape.ldap; */ public class LDAPResponseListener extends LDAPMessageQueue{ + static final long serialVersionUID = 901897097111294329L; + /** * Constructor * @param asynchOp a boolean flag that is true if the object is used for diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSSLSocketFactory.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSSLSocketFactory.java index ea8890170f4..f5c95a6f5e1 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSSLSocketFactory.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSSLSocketFactory.java @@ -45,7 +45,10 @@ import java.net.*; * @see LDAPSSLSocketFactoryExt * @see LDAPConnection#LDAPConnection(netscape.ldap.LDAPSocketFactory) */ -public class LDAPSSLSocketFactory implements LDAPSSLSocketFactoryExt { +public class LDAPSSLSocketFactory + implements LDAPSSLSocketFactoryExt, java.io.Serializable { + + static final long serialVersionUID = -3331456736649381427L; /** * Indicates if client authentication is on. diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSSLSocketWrapFactory.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSSLSocketWrapFactory.java index 24329f0cd9c..fa44f732dc7 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSSLSocketWrapFactory.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSSLSocketWrapFactory.java @@ -40,7 +40,10 @@ import java.util.Hashtable; * @see LDAPSocketFactory * @see LDAPConnection#LDAPConnection(netscape.ldap.LDAPSocketFactory) */ -public class LDAPSSLSocketWrapFactory implements LDAPSSLSocketFactoryExt { +public class LDAPSSLSocketWrapFactory + implements LDAPSSLSocketFactoryExt, java.io.Serializable { + + static final long serialVersionUID = -4171548771815037740L; /** * The constructor with the specified package for security diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSchema.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSchema.java index 3a8e0e3655f..87040be13c3 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSchema.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSchema.java @@ -158,7 +158,10 @@ import java.util.*; * @version 1.0 * @author Rob Weltman **/ -public class LDAPSchema { +public class LDAPSchema implements java.io.Serializable { + + static final long serialVersionUID = -3911737419783579398L; + /** * Constructs a new LDAPSchema object. * Once you construct the object, you can get @@ -275,6 +278,130 @@ public class LDAPSchema { matchingRules.put( matchSchema.getName().toLowerCase(), matchSchema ); } + /** + * Add a syntax schema definition to the current schema. + * You can also add syntax schema definitions by calling the + * add method of your newly constructed + * LDAPSyntaxSchema object. + *

+ * + * To remove a syntax schema definition that you have added, + * call the getSyntax method to get the + * LDAPSyntaxSchema object representing your + * syntax type and call the remove method. + *

+ * + * NOTE: For information on the add and + * remove methods of LDAPSyntaxSchema, + * see the documentation for LDAPSchemaElement. + * (These methods are inherited from LDAPSchemaElement.) + *

+ * + * @param syntaxSchema LDAPSyntaxSchema object + * representing the syntax schema definition to add + * @see netscape.ldap.LDAPSyntaxSchema + * @see netscape.ldap.LDAPSchemaElement#add + * @see netscape.ldap.LDAPSchemaElement#remove + */ + public void addSyntax( LDAPSyntaxSchema syntaxSchema ) { + String name = syntaxSchema.getName().toLowerCase(); + if ( name.length() < 1 ) { + name = syntaxSchema.getOID(); + } + syntaxes.put( name, syntaxSchema ); + } + + /** + * Add a structure rule definition to the current schema. + * You can also add structure rule definitions by calling the + * add method of your newly constructed + * LDAPDITStructureRuleSchema object. + *

+ * + * To remove a structure rule definition that you have added, + * call the getDITStructureRule method to get the + * LDAPDITStructureRuleSchema object representing your + * rule and call the remove method. + *

+ * + * NOTE: For information on the add and + * remove methods of LDAPSyntaxSchema, + * see the documentation for LDAPSchemaElement. + * (These methods are inherited from LDAPSchemaElement.) + *

+ * + * @param rule LDAPDITStructureRuleSchema object + * representing the structure rule definition to add + * @see netscape.ldap.LDAPDITStructureRuleSchema + * @see netscape.ldap.LDAPSchemaElement#add + * @see netscape.ldap.LDAPSchemaElement#remove + */ + public void addDITStructureRule( LDAPDITStructureRuleSchema rule ) { + String name = rule.getName().toLowerCase(); + structureRulesByName.put( name, rule ); + structureRulesById.put( new Integer( rule.getRuleID() ), rule ); + } + + /** + * Add a content rule definition to the current schema. + * You can also add content rule definitions by calling the + * add method of your newly constructed + * LDAPDITContentRuleSchema object. + *

+ * + * To remove a content rule definition that you have added, + * call the getDITContentRule method to get the + * LDAPDITContentRuleSchema object representing your + * rule and call the remove method. + *

+ * + * NOTE: For information on the add and + * remove methods of LDAPSyntaxSchema, + * see the documentation for LDAPSchemaElement. + * (These methods are inherited from LDAPSchemaElement.) + *

+ * + * @param rule LDAPDITContentRuleSchema object + * representing the content rule definition to add + * @see netscape.ldap.LDAPDITContentRuleSchema + * @see netscape.ldap.LDAPSchemaElement#add + * @see netscape.ldap.LDAPSchemaElement#remove + */ + public void addDITContentRule( LDAPDITContentRuleSchema rule ) { + String name = rule.getName().toLowerCase(); + contentRules.put( name, rule ); + } + + /** + * Add a name form definition to the current schema. + * You can also add name form definitions by calling the + * add method of your newly constructed + * LDAPNameFormSchema object. + *

+ * + * To remove a name form definition that you have added, + * call the getNameForm method to get the + * LDAPNameFormSchema object representing your + * nameForm type and call the remove method. + *

+ * + * NOTE: For information on the add and + * remove methods of LDAPNameFormSchema, + * see the documentation for LDAPSchemaElement. + * (These methods are inherited from LDAPSchemaElement.) + *

+ * + * @param nameForm LDAPNameFormSchema object + * representing the name form definition to add + * @see netscape.ldap.LDAPNameFormSchema + * @see netscape.ldap.LDAPSchemaElement#add + * @see netscape.ldap.LDAPSchemaElement#remove + */ + public void addNameForm( LDAPNameFormSchema nameForm ) { + String name = nameForm.getName().toLowerCase(); + nameForms.put( name, nameForm ); + } + /** * Gets an enumeration ofthe object class definitions in this schema. * @return an enumeration of object class definitions. @@ -299,6 +426,38 @@ public class LDAPSchema { return matchingRules.elements(); } + /** + * Get an enumeration of the syntaxes in this schema. + * @return an enumeration of syntax objects + */ + public Enumeration getSyntaxes() { + return syntaxes.elements(); + } + + /** + * Get an enumeration of the structure rules in this schema. + * @return an enumeration of structure rule objects + */ + public Enumeration getDITStructureRules() { + return structureRulesByName.elements(); + } + + /** + * Get an enumeration of the content rules in this schema. + * @return an enumeration of content rule objects + */ + public Enumeration getDITContentRules() { + return contentRules.elements(); + } + + /** + * Get an enumeration of the name forms in this schema. + * @return an enumeration of name form objects + */ + public Enumeration getNameForms() { + return nameForms.elements(); + } + /** * Gets the definition of the object class with the specified name. * @param name name of the object class to find @@ -329,6 +488,59 @@ public class LDAPSchema { return (LDAPMatchingRuleSchema)matchingRules.get( name.toLowerCase() ); } + /** + * Gets the definition of a syntax with the specified name. + * @param name name of the syntax to find + * @return an LDAPSyntaxSchema object representing + * the syntax definition, or null if not found. + */ + public LDAPSyntaxSchema getSyntax( String name ) { + return (LDAPSyntaxSchema)syntaxes.get( name.toLowerCase() ); + } + + /** + * Gets the definition of a structure rule with the specified name. + * @param name name of the rule to find + * @return an LDAPDITStructureRuleSchema object representing + * the rule, or null if not found. + */ + public LDAPDITStructureRuleSchema getDITStructureRule( String name ) { + return (LDAPDITStructureRuleSchema)structureRulesByName.get( + name.toLowerCase() ); + } + + /** + * Gets the definition of a structure rule with the specified name. + * @param ID ID of the rule to find + * @return an LDAPDITStructureRuleSchema object representing + * the rule, or null if not found. + */ + public LDAPDITStructureRuleSchema getDITStructureRule( int ID ) { + return (LDAPDITStructureRuleSchema)structureRulesById.get( + new Integer( ID ) ); + } + + /** + * Gets the definition of a content rule with the specified name. + * @param name name of the rule to find + * @return an LDAPDITContentRuleSchema object representing + * the rule, or null if not found. + */ + public LDAPDITContentRuleSchema getDITContentRule( String name ) { + return (LDAPDITContentRuleSchema)contentRules.get( + name.toLowerCase() ); + } + + /** + * Gets the definition of a name form with the specified name. + * @param name name of the name form to find + * @return an LDAPNameFormSchema object representing + * the syntax definition, or null if not found. + */ + public LDAPNameFormSchema getNameForm( String name ) { + return (LDAPNameFormSchema)nameForms.get( name.toLowerCase() ); + } + /** * Get an enumeration of the names of the object classes in this schema. * @return an enumeration of object class names (all lower-case). @@ -353,6 +565,38 @@ public class LDAPSchema { return matchingRules.keys(); } + /** + * Get an enumeration of the names of the syntaxes in this schema. + * @return an enumeration of syntax names (all lower-case). + */ + public Enumeration getSyntaxNames() { + return syntaxes.keys(); + } + + /** + * Get an enumeration of the names of the structure rules in this schema. + * @return an enumeration of names of the structure rule objects + */ + public Enumeration getDITStructureRuleNames() { + return structureRulesByName.keys(); + } + + /** + * Get an enumeration of the names of the content rules in this schema. + * @return an enumeration of names of the content rule objects + */ + public Enumeration getDITContentRuleNames() { + return contentRules.keys(); + } + + /** + * Get an enumeration of the names of the name forms in this schema. + * @return an enumeration of names of name form objects + */ + public Enumeration getNameFormNames() { + return nameForms.keys(); + } + /** * Retrieve the schema for a specific entry. * @param ld an active connection to a Directory Server @@ -399,6 +643,53 @@ public class LDAPSchema { } } + /* Get all syntax definitions */ + attr = entry.getAttribute( "ldapsyntaxes" ); + if ( attr != null ) { + en = attr.getStringValues(); + while( en.hasMoreElements() ) { + LDAPSyntaxSchema sch = + new LDAPSyntaxSchema( (String)en.nextElement() ); + addSyntax( sch ); + } + } + + /* Get all structure rule definitions */ + attr = entry.getAttribute( "ldapditstructurerules" ); + if ( attr != null ) { + en = attr.getStringValues(); + while( en.hasMoreElements() ) { + LDAPDITStructureRuleSchema sch = + new LDAPDITStructureRuleSchema( + (String)en.nextElement() ); + addDITStructureRule( sch ); + } + } + + /* Get all content rule definitions */ + attr = entry.getAttribute( "ldapditcontentrules" ); + if ( attr != null ) { + en = attr.getStringValues(); + while( en.hasMoreElements() ) { + LDAPDITContentRuleSchema sch = + new LDAPDITContentRuleSchema( + (String)en.nextElement() ); + addDITContentRule( sch ); + } + } + + /* Get all name form definitions */ + attr = entry.getAttribute( "nameforms" ); + if ( attr != null ) { + en = attr.getStringValues(); + while( en.hasMoreElements() ) { + LDAPNameFormSchema sch = + new LDAPNameFormSchema( + (String)en.nextElement() ); + addNameForm( sch ); + } + } + /* Matching rules are tricky, because we have to match up a rule with its use. First get all the uses. */ Hashtable h = new Hashtable(); @@ -527,6 +818,12 @@ public class LDAPSchema { s += en.nextElement().toString(); s += '\n'; } + s += "Syntaxes:\n"; + en = getSyntaxes(); + while( en.hasMoreElements() ) { + s += en.nextElement().toString(); + s += '\n'; + } return s; } @@ -572,7 +869,7 @@ public class LDAPSchema { private static LDAPEntry readSchema( LDAPConnection ld, String dn ) throws LDAPException { - return readSchema( ld, dn, null ); + return readSchema( ld, dn, new String[] { "*", "ldapsyntaxes" } ); } /** @@ -620,6 +917,8 @@ public class LDAPSchema { printEnum( schema.getAttributes() ); System.out.println( "\nMatching rules: " ); printEnum( schema.getMatchingRules() ); + System.out.println( "\nSyntaxes: " ); + printEnum( schema.getSyntaxes() ); System.exit( 0 ); } catch ( LDAPException e ) { System.err.println( e ); @@ -629,4 +928,9 @@ public class LDAPSchema { private Hashtable objectClasses = new Hashtable(); private Hashtable attributes = new Hashtable(); private Hashtable matchingRules = new Hashtable(); + private Hashtable syntaxes = new Hashtable(); + private Hashtable structureRulesByName = new Hashtable(); + private Hashtable structureRulesById = new Hashtable(); + private Hashtable contentRules = new Hashtable(); + private Hashtable nameForms = new Hashtable(); } diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSchemaElement.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSchemaElement.java index 49d8826e01b..84c5aa82d01 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSchemaElement.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSchemaElement.java @@ -77,7 +77,10 @@ import java.util.*; * @version 1.0 **/ -public abstract class LDAPSchemaElement { +public abstract class LDAPSchemaElement implements java.io.Serializable { + + static final long serialVersionUID = -3972153461950418863L; + /** * Constructs a blank element. */ @@ -92,12 +95,28 @@ public abstract class LDAPSchemaElement { */ protected LDAPSchemaElement( String name, String oid, String description ) { - if ( (oid == null) || (oid.trim().length() < 1) ) { + this( name, oid, description, null ); + } + + /** + * Constructs a definition explicitly. + * @param name name of element + * @param oid dotted-string object identifier + * @param description description of element + * @param aliases names which are to be considered aliases for this + * element; null if there are no aliases + */ + protected LDAPSchemaElement( String name, String oid, + String description, String[] aliases ) { + if ( oid == null ) { throw new IllegalArgumentException( "OID required" ); } this.name = name; this.oid = oid; this.description = description; + if ( (aliases != null) && (aliases.length > 0) ) { + this.aliases = aliases; + } } /** @@ -300,7 +319,8 @@ public abstract class LDAPSchemaElement { * @return true if the element is defined as obsolete. */ public boolean isObsolete() { - return properties.containsKey(OBSOLETE); + return (properties == null) ? false : + properties.containsKey(OBSOLETE); } /** @@ -476,7 +496,7 @@ public abstract class LDAPSchemaElement { */ String getValuePrefix() { String s = "( " + oid + ' '; - if ( name != null ) { + if ( (name != null) && (name.length() > 0) ) { s += "NAME "; if ( aliases != null ) { s += "( " + '\'' + name + "\' "; diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchConstraints.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchConstraints.java index c6956cc00b6..aae42c85d4b 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchConstraints.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchConstraints.java @@ -38,7 +38,7 @@ public class LDAPSearchConstraints extends LDAPConstraints private int maxRes; private int batch; private int serverTimeLimit; - transient private int m_maxBacklog = 100; + private int m_maxBacklog = 100; /** * Constructs an LDAPSearchConstraints object that specifies diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchListener.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchListener.java index aa3567a96c6..f8e9b2b3c46 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchListener.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchListener.java @@ -31,6 +31,7 @@ import netscape.ldap.client.*; */ public class LDAPSearchListener extends LDAPMessageQueue { + static final long serialVersionUID = -7163312406176592277L; // this instance variable is only for cache purpose private Long m_key = null; private LDAPSearchConstraints m_constraints; diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchResult.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchResult.java index 31f234e3bf1..1b0b93f4f3a 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchResult.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchResult.java @@ -30,6 +30,8 @@ import netscape.ldap.client.opers.JDAPSearchResponse; */ public class LDAPSearchResult extends LDAPMessage { + static final long serialVersionUID = 36890821518462301L; + /** * LDAPEntry */ diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchResultReference.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchResultReference.java index e02efb23efe..757015ad0a9 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchResultReference.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchResultReference.java @@ -30,6 +30,8 @@ import netscape.ldap.client.opers.JDAPSearchResultReference; */ public class LDAPSearchResultReference extends LDAPMessage { + static final long serialVersionUID = -7816778029315223117L; + /** * A list of LDAP URLs that are referred to. */ diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchResults.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchResults.java index 8217a5247e9..b1cab67da98 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchResults.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSearchResults.java @@ -41,8 +41,9 @@ import java.io.*; * @see netscape.ldap.LDAPConnection#search(java.lang.String, int, java.lang.String, java.lang.String[], boolean) * @see netscape.ldap.LDAPConnection#abandon(netscape.ldap.LDAPSearchResults) */ -public class LDAPSearchResults implements Enumeration { +public class LDAPSearchResults implements Enumeration, java.io.Serializable { + static final long serialVersionUID = -501692208613904825L; private Vector entries = null; private LDAPSearchListener resultSource; private boolean searchComplete = false; @@ -73,6 +74,7 @@ public class LDAPSearchResults implements Enumeration { entries = new Vector(); connectionToClose = null; searchComplete = true; + currCons = new LDAPSearchConstraints(); } LDAPSearchResults(LDAPConnection conn, LDAPSearchConstraints cons, @@ -105,8 +107,10 @@ public class LDAPSearchResults implements Enumeration { } } - LDAPSearchResults(Vector v, LDAPConnection conn, LDAPSearchConstraints cons, - String base, int scope, String filter, String[] attrs, boolean attrsOnly) { + LDAPSearchResults(Vector v, LDAPConnection conn, + LDAPSearchConstraints cons, + String base, int scope, String filter, + String[] attrs, boolean attrsOnly) { this(v); currConn = conn; currCons = cons; @@ -124,8 +128,7 @@ public class LDAPSearchResults implements Enumeration { void add( LDAPMessage msg ) { if (msg instanceof LDAPSearchResult) { entries.addElement( ((LDAPSearchResult)msg).getEntry()); - } - else if (msg instanceof LDAPSearchResultReference) { + } else if (msg instanceof LDAPSearchResultReference) { /* convert to LDAPReferralException */ String urls[] = ((LDAPSearchResultReference)msg).getUrls(); if (urls != null) { @@ -190,22 +193,24 @@ public class LDAPSearchResults implements Enumeration { */ void quicksort (LDAPEntry[] toSort, LDAPEntryComparator compare, int low, int high) { - if (low >= high) + if (low >= high) { return; + } LDAPEntry pivot = toSort[low]; int slow = low-1, shigh = high+1; while (true) { - do + do { shigh--; - while (compare.isGreater (toSort[shigh], pivot)); - do + } while (compare.isGreater (toSort[shigh], pivot)); + do { slow++; - while (compare.isGreater (pivot, toSort[slow])); + } while (compare.isGreater (pivot, toSort[slow])); - if (slow >= shigh) + if (slow >= shigh) { break; + } LDAPEntry temp = toSort[slow]; toSort[slow] = toSort[shigh]; @@ -277,26 +282,31 @@ public class LDAPSearchResults implements Enumeration { // if automatic referral, then add to the entries, otherwise, dont do it // since the elements in referralResults are LDAPReferralException. - if (currCons.getReferrals()) + if (currCons.getReferrals()) { while (referralResults.size() > 0) { Object obj = null; - if ((obj=nextReferralElement()) != null) + if ((obj=nextReferralElement()) != null) { entries.addElement(obj); + } + } } int numEntries = entries.size(); - if (numEntries <= 0) + if (numEntries <= 0) { return; + } LDAPEntry[] toSort = new LDAPEntry[numEntries]; entries.copyInto (toSort); - if (toSort.length > 1) + if (toSort.length > 1) { quicksort (toSort, compare, 0, numEntries-1); + } entries.removeAllElements(); - for (int i = 0; i < numEntries; i++) + for (int i = 0; i < numEntries; i++) { entries.addElement (toSort[i]); + } } /** @@ -338,10 +348,12 @@ public class LDAPSearchResults implements Enumeration { public LDAPEntry next() throws LDAPException { Object o = nextElement(); if ((o instanceof LDAPReferralException) || - (o instanceof LDAPException)) + (o instanceof LDAPException)) { throw (LDAPException)o; - if (o instanceof LDAPEntry) + } + if (o instanceof LDAPEntry) { return (LDAPEntry)o; + } return null; } @@ -405,11 +417,12 @@ public class LDAPSearchResults implements Enumeration { return obj; } - if ((obj == null) || (!res.hasMoreElements())) + if ((obj == null) || (!res.hasMoreElements())) { referralResults.removeElementAt(0); - } - else + } + } else { referralResults.removeElementAt(0); + } return null; } @@ -434,8 +447,9 @@ public class LDAPSearchResults implements Enumeration { */ public boolean hasMoreElements() { - while ((entries.size() == 0) && (!searchComplete)) + while ((entries.size() == 0) && (!searchComplete)) { fetchResult(); + } if ((entries.size() == 0) && ((exceptions == null) || (exceptions.size() == 0))) { @@ -454,25 +468,31 @@ public class LDAPSearchResults implements Enumeration { } /** - * Returns a count of the entries in the search results. - * @return count of entries found by the search. + * Returns a count of queued search results immediately available for + * processing. + * A search result is either a search entry or an exception. If the + * search is asynchronous (batch size not 0), this reports the number + * of results received so far. + * @return count of search results immediatly available for processing */ public int getCount() { - int totalReferralEntries = 0; - int count = 0; - for (int i=0; iRFC 2252, Lightweight Directory Access Protocol (v3): + * LDAP Subschema Attribute covers the types of information + * to specify when defining a syntax. + * The description of a syntax can include the following: + *

+ * + *

    + *
  • an OID identifying the syntax + *
  • a description of the attribute type + *
+ *

+ * + * When you construct an LDAPSyntaxSchema object, you can + * specify these types of information as arguments to the constructor or + * in the ldapSyntaxes format specified in RFC 2252. + * When an LDAP client searches an LDAP server for the schema, the server + * returns schema information as an object with attribute values in this + * format. + *

+ * RFC 2252 defines SyntaxDescription as follows: + *

+ *

+ *     SyntaxDescription = "(" whsp
+ *        numericoid whsp
+ *        [ "DESC" qdstring ]
+ *        whsp ")"
+ * 
+ *

+ * Syntax definitions do not have a name, so the getName + * method inherited from LDAPSchemaElement returns "". + * To get the OID and description of this syntax type + * definition, use the getOID and + * getDescription methods inherited from the abstract class + * LDAPSchemaElement. + *

+ * + * To add or remove this syntax type definition from the + * schema, use the add and remove + * methods, which this class inherits from the LDAPSchemaElement + * abstract class. + * + * @version 1.0 + * @see netscape.ldap.LDAPSchemaElement + **/ + +public class LDAPSyntaxSchema extends LDAPSchemaElement { + + static final long serialVersionUID = 3590667117475688132L; + + /** + * Constructs a blank element. + */ + protected LDAPSyntaxSchema() { + super(); + } + + /** + * Constructs a syntax type definition, using the specified + * information. + * @param oid object identifier (OID) of the syntax type + * in dotted-string format (for example, "1.2.3.4") + * @param description description of syntax type + */ + public LDAPSyntaxSchema( String oid, String description ) { + super( "", oid, description ); + attrName = "ldapSyntaxes"; + syntaxElement.syntax = syntaxElement.syntaxCheck( oid ); + syntaxElement.syntaxString = oid; + } + + /** + * Constructs a syntax type definition based on a description in + * the ldapSyntaxes format. For information on this format, + * (see RFC 2252, Lightweight Directory Access Protocol (v3): + * LDAP Subschema Attribute. This is the format that LDAP servers + * and clients use to exchange schema information. (For example, when + * you search an LDAP server for its schema, the server returns an entry + * with the syntaxs "objectclasses" and "ldapSyntaxes". The + * values of "ldapSyntaxes" are syntax type descriptions + * in this format.) + *

+ * + * @param raw definition of the syntax type in the + * ldapSyntaxes format + */ + public LDAPSyntaxSchema( String raw ) { + attrName = "ldapSyntaxes"; + parseValue( raw ); + } + + /** + * Gets the syntax of the schema element + * @return one of the following values: + *

    + *
  • cis (case-insensitive string) + *
  • ces (case-exact string) + *
  • binary (binary data) + *
  • int (integer) + *
  • telephone (telephone number -- identical to cis, + * but blanks and dashes are ignored during comparisons) + *
  • dn (distinguished name) + *
  • unknown (not a known syntax) + *
+ */ + public int getSyntax() { + return syntaxElement.syntax; + } + + /** + * Gets the syntax of the syntax type in dotted-decimal format, + * for example "1.2.3.4.5" + * @return The syntax syntax in dotted-decimal format. + */ + public String getSyntaxString() { + return syntaxElement.syntaxString; + } + + /** + * Prepares a value in RFC 2252 format for submission to a server + * + * @return a String ready for submission to an LDAP server. + */ + public String getValue() { + String s = getValuePrefix(); + String val = getCustomValues(); + if ( val.length() > 0 ) { + s += val + ' '; + } + s += ')'; + return s; + } + + /** + * Gets the definition of the syntax type in a user friendly format. + * This is the format that the syntax type definition uses when + * printing the syntax type or the schema. + * @return definition of the syntax type in a user friendly format. + */ + public String toString() { + String s = "OID: " + oid; + s += "; Description: " + description; + s += getQualifierString( null ); + return s; + } + + protected LDAPSyntaxSchemaElement syntaxElement = + new LDAPSyntaxSchemaElement(); +} diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSyntaxSchemaElement.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSyntaxSchemaElement.java index 93a6bb5e7ca..4eafeb95848 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSyntaxSchemaElement.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPSyntaxSchemaElement.java @@ -33,6 +33,9 @@ import java.util.*; **/ class LDAPSyntaxSchemaElement extends LDAPSchemaElement { + + static final long serialVersionUID = 6086340702503710702L; + /** * Construct a blank element. */ diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPTraceWriter.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPTraceWriter.java new file mode 100644 index 00000000000..996f84e3aac --- /dev/null +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPTraceWriter.java @@ -0,0 +1,59 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public + * License Version 1.1 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.mozilla.org/NPL/ + * + * Software distributed under the License is distributed on an "AS + * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or + * implied. See the License for the specific language governing + * rights and limitations under the License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 2000 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + */ +package netscape.ldap; + +/** + * The LDAPTraceWriter interface enables logging of LDAP + * trace messages in environments where an OutputStream can not be used. + *

+ * The interface is primarily meant for integrating LDAP tracing with the + * servlet log facility: + *

+ *

+ *     servletCtx = config.getServletContext();
+ *     ...
+ *     LDAPConnection ld = new LDAPConnection();
+ *     ld.setProperty(ld.TRACE_PROPERTY, 
+ *            new LDAPTraceWriter() { 
+ *                public void write (String msg) {
+ *                    servletCtx.log(msg);
+ *                }
+ *            });
+ * 
+ * 

+ * + * @version 1.0 + * @see netscape.ldap.LDAPConnection#setProperty(java.lang.String, java.lang.Object) + */ +public interface LDAPTraceWriter { + + /** + * Writes an LDAP trace message. + * + * @param msg An incoming or outgoing LDAP message + * + * @version 1.0 + * @see netscape.ldap.LDAPConnection#setProperty(java.lang.String, java.lang.Object) + */ + public void write (String msg); + +} diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPUrl.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPUrl.java index 8d37ba57c3c..d81431ab02c 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPUrl.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/LDAPUrl.java @@ -31,7 +31,7 @@ import java.net.MalformedURLException; * TARGET="_blank">RFC 1959. LDAP URLs have the following format: * *

- * "ldap://" [ hostName [":" portNumber] ] "//"
+ * "ldap://" [ hostName [":" portNumber] ] "/"
  *                      distinguishedName
  *          ["?" attributeList ["?" scope
  *                      "?" filterString ] ]
@@ -77,8 +77,9 @@ import java.net.MalformedURLException;
  *
  * @version 1.0
  */
-public class LDAPUrl {
+public class LDAPUrl implements java.io.Serializable {
 
+    static final long serialVersionUID = -3245440798565713640L;
     public static String defaultFilter = "(objectClass=*)";
 
     private String hostName;
@@ -95,106 +96,144 @@ public class LDAPUrl {
      * @exception MalformedURLException failed to parse URL
      */
     public LDAPUrl (String url) throws java.net.MalformedURLException {
-        StringTokenizer urlParser = new StringTokenizer (url, ":/?", true);
-        String currentToken;
-        String attributeList = null;
         attributes = null;
         scope = LDAPv2.SCOPE_BASE;
         filter = defaultFilter;
         URL = url;
 
-        try {
-            currentToken = urlParser.nextToken();
-            if (!currentToken.equalsIgnoreCase ("LDAP"))
-                throw new MalformedURLException ();
+        parseUrl(url);
+    }
 
-            urlParser.nextToken();    // ":"
-            urlParser.nextToken();    // "/"
-            urlParser.nextToken();    // "/"
+    /**
+     * Parse URL as defined in RFC 1959
+     */
+    private void parseUrl(String url) throws MalformedURLException {
+        StringTokenizer urlParser = new StringTokenizer (url, ":/?", true);
+        String currentToken;
+        String str = null;
 
-            currentToken = urlParser.nextToken();
+        currentToken = urlParser.nextToken();
+        if (!currentToken.equalsIgnoreCase ("LDAP"))
+            throw new MalformedURLException ();
 
-            if (currentToken.equals ("/")) {
-                hostName = null;
-                portNumber = LDAPv2.DEFAULT_PORT;
-            } else {
-                hostName = currentToken;
-                if (urlParser.countTokens() == 0) {
-                    portNumber = LDAPv2.DEFAULT_PORT;
-                    return;
-                }
-                currentToken = urlParser.nextToken (); // either ":" or "/"
-
-                if (currentToken.equals (":")) {
-                    portNumber = Integer.parseInt (urlParser.nextToken());
-                    if (urlParser.countTokens() == 0) {
-                        return;
-                    }
-                    urlParser.nextToken ();   // "/"
-                } else
-                    portNumber = LDAPv2.DEFAULT_PORT;
-            }
-
-            if (urlParser.countTokens() == 0)
-                return;
-
-            DN = decode (urlParser.nextToken ());
-
-            // it retrieves the ? token, meaning no DN is supplied
-            if (DN.equals("?"))
-                DN = "";
-            else if (DN.equals("/"))
-                throw new MalformedURLException ();
-
-            if (urlParser.hasMoreTokens ()) {
-                // we have a "?attributeList" portion
-                String str = null;
-                str = readNextConstruct(urlParser);
-
-                // if attribute
-                if ((str != null) && (isAttribute(str))) {
-                    // it retrieves the ? token, meaning no attribute is supplied
-                    if (str.equals("?")) {
-                        attributeList = null;
-                        str = urlParser.nextToken();
-                    }
-                    else {
-                        attributeList = decode(str);
-                        str = readNextConstruct(urlParser);
-                    }
-                }
-
-                // if scope
-                if ((str != null) && ((scope = getScope(str)) != -1))
-                    str = readNextConstruct(urlParser);
-                // no scope is supplied
-                else if ((str != null) && (str.equals("?"))) {
-                        scope = LDAPv2.SCOPE_BASE;
-                    str = urlParser.nextToken();
-                } else {
-                    scope = LDAPv2.SCOPE_BASE;
-                }
-
-                // if filter
-                if ((str != null) && (isFilter(str))) {
-                    filter = decode(str);
-                    str = readNextConstruct(urlParser);
-                }
-            }
-        } catch (NumberFormatException nf) {
+        currentToken = urlParser.nextToken();
+        if (!currentToken.equals(":")) {
+            throw new MalformedURLException ();
+        }
+        currentToken = urlParser.nextToken();
+        if (!currentToken.equals("/")) {
+            throw new MalformedURLException ();
+        }
+        currentToken = urlParser.nextToken();
+        if (!currentToken.equals("/")) {
             throw new MalformedURLException ();
         }
 
-        if (attributeList != null) {
+        currentToken = urlParser.nextToken();
+
+        if (currentToken.equals ("/")) {
+            hostName = null;
+            portNumber = LDAPv2.DEFAULT_PORT;
+        } else {
+            hostName = currentToken;
+            if (urlParser.countTokens() == 0) {
+                portNumber = LDAPv2.DEFAULT_PORT;
+                return;
+            }
+            currentToken = urlParser.nextToken (); // either ":" or "/"
+
+            if (currentToken.equals (":")) {
+                try {
+                    portNumber = Integer.parseInt (urlParser.nextToken());
+                } catch (NumberFormatException nf) {
+                    throw new MalformedURLException ();
+                }
+                    
+                if (urlParser.countTokens() == 0) {
+                    return;
+                }
+                urlParser.nextToken ();   // "/"
+            } else
+                portNumber = LDAPv2.DEFAULT_PORT;
+        }
+
+
+        // DN
+        if (!urlParser.hasMoreTokens ()) {
+            return;
+        }
+        DN = decode(readNextConstruct(urlParser));
+        if (DN.equals("?")) {
+            DN = "";
+        }
+        else if (DN.equals("/")) {
+            throw new MalformedURLException ();
+        }            
+            
+        // attribute
+        if (!urlParser.hasMoreTokens ()) {
+            return;
+        }        
+        str = readNextConstruct(urlParser);
+        if (!str.equals("?")) {
             StringTokenizer attributeParser = new
-            StringTokenizer (attributeList, ", ");
+                StringTokenizer (decode(str), ", ");
             attributes = new Vector ();
 
-            while (attributeParser.hasMoreTokens())
+            while (attributeParser.hasMoreTokens()) {
                 attributes.addElement (attributeParser.nextToken());
+            }
+        }
+
+        // scope
+        if (!urlParser.hasMoreTokens ()) {
+            return;
+        }
+        str = readNextConstruct(urlParser);
+        if (!str.equals("?")) {
+            scope = getScope(str);
+            if (scope < 0) {
+                throw new MalformedURLException("Bad scope:" + str);
+            }
+        }
+
+        // filter
+        if (!urlParser.hasMoreTokens ()) {
+            return;
+        }
+        str = readNextConstruct(urlParser);
+        filter = decode(str);
+        checkBalancedParentheses(filter);
+        if (!filter.startsWith("(") && !filter.endsWith(")")) {
+            filter = "(" + filter + ")";
+        }
+
+        // Nothing after the filter is allowed
+        if (urlParser.hasMoreTokens()) {
+            throw new MalformedURLException();
+        }
+    }    
+    
+    private void checkBalancedParentheses(String filter) throws MalformedURLException {
+        int parenCnt =0;
+        StringTokenizer filterParser = new StringTokenizer (filter, "()", true);
+        while (filterParser.hasMoreElements()) {
+            String token = filterParser.nextToken();
+            if (token.equals("(")) {
+                parenCnt++;
+            }
+            else if (token.equals(")")) {
+                if (--parenCnt < 0) {
+                    throw new MalformedURLException("Unbalanced filter parentheses");
+                }
+            }
+        }
+        
+        if (parenCnt != 0) {
+            throw new MalformedURLException("Unbalanced filter parentheses");
         }
     }
-
+        
     /**
      * Constructs with the specified host, port, and DN.  This form is used to
      * create URL references to a particular object in the directory.
@@ -441,34 +480,6 @@ public class LDAPUrl {
         return URL;
     }
 
-    /**
-     * Checks if the given string is a filter expression.
-     * @param the string which is checked
-     * @return true if the given string is a filter expression; otherwise,
-     * false.
-     */
-    private boolean isFilter(String str) {
-        if (str.startsWith("("))
-            return true;
-        else
-            return false;
-    }
-
-
-    /**
-     * Checks if the given string is an attribute expression.
-     * @param the string which is checked
-     * @return true if the given string is an attribute expression; otherwise,
-     * false.
-     */
-    private boolean isAttribute(String str) {
-        if ((!str.startsWith("(")) && (!str.equalsIgnoreCase("base")) &&
-          (!str.equalsIgnoreCase("one")) && (!str.equalsIgnoreCase("sub")))
-            return true;
-        else
-            return false;
-    }
-
     /**
      * Reads next construct from the given string parser.
      * @param parser the string parser
@@ -481,8 +492,19 @@ public class LDAPUrl {
 
         try {
             if (parser.hasMoreTokens()) {
-                parser.nextToken();     // "?"
-                return parser.nextToken();
+                String tkn = parser.nextToken();
+                if (tkn.equals("?")) { // empty construct
+                    return tkn;
+                }
+                else if (parser.hasMoreTokens()){
+                    // Remove '?' delimiter
+                    String delim = parser.nextToken();
+                    if (!delim.equals("?")) {
+                        throw new MalformedURLException();
+                    }
+                }
+                
+                return tkn;
             }
         } catch (NoSuchElementException e) {
             throw new MalformedURLException();
diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/client/JDAPFilter.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/client/JDAPFilter.java
index 9ffb4080b02..15d739b46eb 100644
--- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/client/JDAPFilter.java
+++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/client/JDAPFilter.java
@@ -95,6 +95,9 @@ public abstract class JDAPFilter {
         f.trim();
         if (f.startsWith("&")) {         /* and */
             JDAPFilter filters[] = getFilterList(f.substring(1, f.length()));
+            if (filters == null) {
+                throw new IllegalArgumentException("Bad search filter");
+            }
             JDAPFilterAnd and = new JDAPFilterAnd();
             for (int i = 0; i < filters.length; i++) {
                 and.addElement(filters[i]);
@@ -102,13 +105,20 @@ public abstract class JDAPFilter {
             return and;
         } else if (f.startsWith("|")) {  /* or  */
             JDAPFilter filters[] = getFilterList(f.substring(1, f.length()));
+            if (filters == null) {
+                throw new IllegalArgumentException("Bad search filter");
+            }
             JDAPFilterOr or = new JDAPFilterOr();
             for (int i = 0; i < filters.length; i++) {
                 or.addElement(filters[i]);
             }
             return or;
         } else if (f.startsWith("!")) {  /* not */
-            return new JDAPFilterNot(getFilter(f.substring(1, f.length())));
+            JDAPFilter filter = getFilter(f.substring(1, f.length()));
+            if (filter == null) {
+                throw new IllegalArgumentException("Bad search filter");
+            }
+            return new JDAPFilterNot(filter);
         } else {                         /* item */
             return getFilterItem(f.substring(0, f.length()));
         }
diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/client/JDAPFilterOpers.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/client/JDAPFilterOpers.java
index 0064129d019..d6ec7d6ba1b 100644
--- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/client/JDAPFilterOpers.java
+++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/client/JDAPFilterOpers.java
@@ -74,17 +74,19 @@ class JDAPFilterOpers {
                 return null;
             }
 
-            String hex = "0x"+val.substring(pos+1, pos+3);
-
             Integer num = null;
 
             // decode this number to integer, exception thrown when this is not the
             // hex
             try {
+                String hex = "0x"+val.substring(pos+1, pos+3);
                 num = Integer.decode(hex);
+            } catch (IndexOutOfBoundsException e) {
+                printDebug(e.toString());
+                throw new IllegalArgumentException("Bad search filter");
             } catch (NumberFormatException e) {
                 printDebug(e.toString());
-                return null;
+                throw new IllegalArgumentException("Bad search filter");
             }
 
             byte[] b = {(byte)num.intValue()};
diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/factory/JSSESocketFactory.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/factory/JSSESocketFactory.java
new file mode 100644
index 00000000000..9a98538f425
--- /dev/null
+++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/factory/JSSESocketFactory.java
@@ -0,0 +1,94 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
+ *
+ * The contents of this file are subject to the Netscape Public
+ * License Version 1.1 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of
+ * the License at http://www.mozilla.org/NPL/
+ *
+ * Software distributed under the License is distributed on an "AS
+ * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+ * implied. See the License for the specific language governing
+ * rights and limitations under the License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is Netscape
+ * Communications Corporation.  Portions created by Netscape are
+ * Copyright (C) 2000 Netscape Communications Corporation. All
+ * Rights Reserved.
+ *
+ * Contributor(s): 
+ */
+
+package netscape.ldap.factory;
+
+import java.net.*; 
+import java.io.*; 
+import javax.net.ssl.*; 
+import netscape.ldap.*;
+import com.sun.net.ssl.*; 
+
+/**
+ * Creates an SSL socket connection to a server, using the JSSE package
+ * from Sun. This class implements the LDAPSocketFactory
+ * interface.
+ * 

+ * + * @version 1.0 + * @see LDAPSocketFactory + * @see LDAPConnection#LDAPConnection(netscape.ldap.LDAPSocketFactory) + */ +public class JSSESocketFactory + implements LDAPSocketFactory, java.io.Serializable { + + static final long serialVersionUID = 6834205777733266609L; + + // Optional explicit cipher suites to use + private String[] suites; + + /** + * Factory constructor + * + * @param suites Cipher suites to attempt to use with the server; + * if null, use any cipher suites available in the + * JSSE package + */ + public JSSESocketFactory( String[] suites ) { + this.suites = suites; + } + + /** + * Creates an SSL socket + * + * @param host Host name or IP address of SSL server + * @param port Port numbers of SSL server + * @return A socket for an encrypted session + * @exception LDAPException on error creating socket + */ + public Socket makeSocket(String host, int port) + throws LDAPException { + + SSLSocket sock = null; + + try { + SSLSocketFactory factory = + (SSLSocketFactory)SSLSocketFactory.getDefault(); + sock = (SSLSocket)factory.createSocket(host, port); + if (suites != null) { + sock.setEnabledCipherSuites(suites); + sock.startHandshake(); + } + } catch (UnknownHostException e) { + throw new LDAPException("SSL connection to " + host + + ":" + port, + LDAPException.CONNECT_ERROR); + } catch (IOException f) { + throw new LDAPException("SSL connection to " + host + + ":" + port, + LDAPException.CONNECT_ERROR); + } + + return sock; + } +} + diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/util/DSMLWriter.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/util/DSMLWriter.java index 427dec3916c..f7f6e08b39b 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/util/DSMLWriter.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/util/DSMLWriter.java @@ -213,6 +213,9 @@ public class DSMLWriter extends LDAPWriter { * @param dn the DN of the entry */ protected void printEntryStart( String dn ) { + if ( dn == null ) { + dn = ""; + } printString( " " ); } diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/util/LDIFWriter.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/util/LDIFWriter.java index 75c3da8db80..5e17523346c 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/util/LDIFWriter.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/util/LDIFWriter.java @@ -133,6 +133,18 @@ public class LDIFWriter extends LDAPWriter { * @param dn the DN of the entry */ protected void printEntryStart( String dn ) { + if ( dn == null ) { + dn = ""; + } else { + byte[] b = null; + try { + b = dn.getBytes( "UTF8" ); + } catch ( UnsupportedEncodingException ex ) { + } + if ( !LDIF.isPrintable(b) ) { + dn = getPrintableValue( b ); + } + } printString( "dn" + m_sep + " " + dn ); } diff --git a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/util/RDN.java b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/util/RDN.java index 2d5e59b405f..59e913aa4e7 100644 --- a/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/util/RDN.java +++ b/mozilla/directory/java-sdk/ldapjdk/netscape/ldap/util/RDN.java @@ -229,9 +229,8 @@ public final class RDN implements java.io.Serializable { * @param rdn the DN component to compare against the * current DN component. * @return true if the two DN components are equal. - * @see netscape.ldap.util.RDN#registerCesAttribute - * @see netscape.ldap.util.RDN#cesAttributeIsRegistered - * @see netscape.ldap.util.RDN#getRegisteredCesAttributes + * @see netscape.ldap.util.RDN#registerAttributeSyntax + * @see netscape.ldap.util.RDN#getAttributeSyntax */ public boolean equals(RDN rdn) { String[] this_types = (String[])getTypes().clone(); diff --git a/mozilla/directory/java-sdk/relnotes.htm b/mozilla/directory/java-sdk/relnotes.htm index f8b1e12cc39..405233a2e66 100644 --- a/mozilla/directory/java-sdk/relnotes.htm +++ b/mozilla/directory/java-sdk/relnotes.htm @@ -2,54 +2,212 @@ - + - + - Directory SDK 4.0 for Java Source Code Release Notes + Directory SDK 4.1 for Java Source Code Release Notes

-Netscape Directory SDK 4.0 for Java Source -Code Release Notes

+Directory SDK 4.1 for Java Source Code Release +Notes -
Last Updated September 13, 1999
+
Last Updated May 06, 2000

These release notes contain information about:

-For the latest documentation, see the Netscape +For the latest documentation, see the Netscape Directory SDK 4.0 for Java Programmer's Guide, which is available -on Netscape DevEdge Online. -

Reference materials for the Directory SDK 4.0 for Java are produced +on the iPlanet Developer Documentation site. +

Reference materials for the Directory SDK 4.x for Java are produced using the Javadoc utility. They are available in the /dist/doc/ -directory where you installed the SDK or online at: http://developer.netscape.com/docs/manuals/dirsdk/jsdk40/Reference/index.html. -

If you only want the Netscape Directory SDK 4.0 for Java (not the source -code), you can dowload it from Netscape DevEdge. +directory where you installed the SDK or online at: +
http://developer.iplanet.com/docs/manuals/dirsdk/jsdk40/Reference/index.html. +

If you only want the Directory SDK 4.x for Java (not the source code), +you can download it from the iPlanet +Developer Downloads site.

-


What's +
+
What's +New in Version 4.1 +

The Directory SDK 4.1 for Java is a bug fix relase. Please check the +list of Bugs Fixed Since Version 4.0. The following +new features have been added in this release: +

    +
  • +A new class, netscape.ldap.factory.JSSESocketFactory. It implements +the LDAPSocketFactory interface using the Java Secure Socket Extension +(JSSE)  intefaces as the SSL provider. A JSSE implementation is not +packaged with the Directory SDK classes; you will need to have one in your +CLASSPATH to be able to use JSSESocketFactory.  A reference +implementation of JSSE interfaces is available at http://java.sun.com/products/jsse/.
  • + +
  • +A new interface,  netscape.ldap.LDAPTraceWriter, enables +logging of LDAP trace messages in environments where an OutputStream +cannot be used. The interface is meant primarily for integrating LDAP tracing +with the servlet log facility.
  • + +
  • +A new method setConnectTimeout() has been added to LDAPConnection. +This +method allows you to limit  the amount of time that application code +waits for LDAPConnection.connnect() to establish a connection. +By setting the connect timeout, an application can avoid blocking for a +long period of time when a Directory Server host is down or unreachable.
  • + +
  • +All base classes in the netscape.ldap and netscape.ldap.util +package are now serializable.
  • +
+ +
+
Bugs +Fixed Since Version 4.0 +

The following bugs have been fixed since the release of the Directory +SDK 4.0 for Java. iPlanet bug numbers are shown in parentheses. +

    +
  • +Bugzilla 28001: +Parsing in LDAPUrl(String url) ignores attributes if DN is empty.
  • + +
  • +Bugzilla 28005: +Exceptions thrown in connect() and disconnect().
  • + +
  • +Bugzilla 13546: +JDAPFilterOpers +throws StringIndexOutOfBoundsException.
  • + +
  • +Bugzilla 16514: +LDAPAttributeSet.removeElementAt() +doesn't remove the attribute completely.
  • + +
  • +Bugzilla 34326: +LDAPDN.unEscapeRDN() removes all /'s - not just the escape characters.
  • + +
  • +Bugzilla 29262: +LDAPSearch doesn't apply base64-encoding to to nonprintable DNs.
  • + +
  • +Wrong user DN supplied for referral on bind operation. (364869)
  • + +
  • +4.0 LDAPMatchingRuleSchema not binary compatible with 3.x.  (365423)
  • + +
  • +LDAP JDK does not properly abandon operation. (341439)
  • + +
  • +RDN.equals() assumes case-insensitivity, ignores multiple values. +(365574)
  • + +
  • +authenticate() with bad password does not throw exception. (366578)
  • + +
  • +Should provide DSML option for LDAPSearch. (368416)
  • + +
  • +Incorrect signature for LDAPResponseListener.merge(). (364775)
  • + +
  • +MS JVM throws LDAPSortControl runtime exception. (365574)
  • + +
  • +Need new method LDAPDN.equals( String dn1, String dn2). (365575)
  • + +
  • +Some 3.x LDAPSchema public methods are protected in 4.x. (381574)
  • + +
  • +Server using VLV for non-search operations - 'Critical extension unavailable' +error in log. (382605)
  • + +
  • +LDAPSearchResults.getCount() returns wrong count. (355336)
  • + +
  • +LDAPCache.cleanup() throws NullPointerException. (388736)
  • + +
  • +LDAPConnection.read() doesn't return subentries (387722)
  • + +
  • +LDAP SDK 4.0 causes NAS crash. (390128)
  • + +
  • +NullPointerException in deleteThreadConnEntry(). (389228)
  • + +
  • +LDAPSchema.getSyntaxes() missing (I-D conformance). (388463)
  • + +
  • +SASL bugs found at CMU. (391585)
  • + +
  • +LDAPCompareAttrNames not consistently case-sensitive. (390382)
  • + +
  • +LDAPEntry throws a null exception when reading non existing attribute +(388577)
  • + +
  • +NullPointerException with Malformed Filter. (390249)
  • + +
  • +LDAP objects not really serializable. (356821)
  • + +
  • +LDAPSearch -l option does not work correctly (393676)
  • + +
  • +NullPointerException in LDAPSearch (387453)
  • + +
  • +java-object-schema.conf is not packaged with SDK. (390154)
  • + +
  • +JNDI SP: LdapContextImpl.reconnect(null) throw null pointer exceptions +(383788)
  • +
+ +
+

What's New in Version 4.0 -

The Netscape Directory SDK 4.0 for Java provides programmers with the -tools to develop directory-enabled software.  This release includes: +

The Directory SDK 4.0 for Java provides programmers with the tools to +develop directory-enabled software.  This release includes:

  • Application Program Interface (API) updates to match the newest LDAP (Lightweight @@ -62,15 +220,13 @@ an asynchronous interface to LDAP
  • a new SASL (Simple Authentication and Security Layer) API
  • -the Netscape LDAP Service Provider for JNDI (Java Naming and Directory -Interface).
  • +the Netscape LDAP Service Provider for LDAP.
Additional improvements and changes to the Directory SDK are listed under -Bugs +Bugs Fixed Since Version 3.05.

API updates -

The Netscape Directory SDK 4.0 for Java supports these changes to the -LDAP API: +

The Directory SDK 4.0 for Java supports these changes to the LDAP API:

  • Sophisticated client-side management of referral authentication using the @@ -129,7 +285,7 @@ using different credentials, without rebinding.
  • to call System.exit when terminating your program.
Asynchronous API -

The Netscape Directory SDK 4.0 for Java provides an interface called +

The Directory SDK 4.0 for Java provides an interface called LDAPAsynchronousConnection. This interface contains methods for performing LDAP operations asynchronously. Instead of blocking while waiting for a response, methods in LDAPAsynchronousConnection @@ -170,46 +326,8 @@ For more information see "Netscape Directory SDK 4.0 for Java Programmer's Guide.

-


Downloading -and Building the Source -

The Directory SDK source code is available on the Mozilla website. You -can download it at http://www.mozilla.org/directory/javasdk.html. -

Follow the instructions at http://www.mozilla.org/directory/buildjsdk-4.0.txt -to build the Netscape Directory SDK. -

-


Updating -Java Classes in Netscape Communicator -

The LDAP Java classes contained in Netscape Communicator 4.7 and earlier -are outdated. You can upgrade these class files to the latest versions -using Communicator's SmartUpdate feature. -

The SmartUpdate page for the LDAP Java classes is at: http://developer.netscape.com/software/ldap/ldap.html -

Note: This page uses Communicator's SmartUpdate feature to update -the classes. Before visiting this page, you must enable SmartUpdate, Java, -JavaScript, and cookies in Communicator. -

To enable SmartUpdate, Java, JavaScript, -and cookies: -

    -
  • -Go to the Edit menu and choose Preferences.
  • - -
  • -Select Advanced and make sure that Accept all cookies is active (it's radio -button is filled).
  • - -
  • -Make sure that Enable Java and Enable JavaScript are checked.
  • - -
  • -Choose Advanced | SmartUpdate from the left-hand panel.
  • - -
  • -Make sure that Enable SmartUpdate is checked.
  • - -
  • -Click OK.
  • -
- -
Bugs +
+

Bugs Fixed Since Version 3.05

The following bugs have been fixed since the release of the Directory SDK 3.05 for Java. Bug numbers are shown in parentheses. @@ -286,6 +404,46 @@ The SDK should treat a "null" filter as meaning "objectclass=*" +


+
Downloading +and Building the Source +

The Directory SDK source code is available on the Mozilla website. You +can download it at http://www.mozilla.org/directory/javasdk.html. +

Follow the instructions at http://www.mozilla.org/directory/buildjsdk-4.0.txt +to build the Netscape Directory SDK. +

+


Updating +Java Classes in Netscape Communicator +

The LDAP Java classes contained in Netscape Communicator 4.7 and earlier +are outdated. You can upgrade these class files to the latest versions +using Communicator's SmartUpdate feature. +

The SmartUpdate page for the LDAP Java classes is at: http://developer.netscape.com/software/ldap/ldap.html +

Note: This page uses Communicator's SmartUpdate feature to update +the classes. Before visiting this page, you must enable SmartUpdate, Java, +JavaScript, and cookies in Communicator. +

To enable SmartUpdate, Java, JavaScript, +and cookies: +

    +
  • +Go to the Edit menu and choose Preferences.
  • + +
  • +Select Advanced and make sure that Accept all cookies is active (it's radio +button is filled).
  • + +
  • +Make sure that Enable Java and Enable JavaScript are checked.
  • + +
  • +Choose Advanced | SmartUpdate from the left-hand panel.
  • + +
  • +Make sure that Enable SmartUpdate is checked.
  • + +
  • +Click OK.
  • +
+
Reporting Problems

Please submit your problem via the the Bugzilla @@ -294,7 +452,7 @@ bugsystem . Use the "LDAP Java SDK" component.


Accessing the Directory Developers Newsgroup

If you have additional questions or need more information about the -Netscape Directory SDK 4.0 for Java, please visit the Mozilla Directory +Netscape Directory SDK 4.x for Java, please visit the Mozilla Directory newsgroup and the DevEdge Directory Server newsgroups.

@@ -312,4 +470,3 @@ TechSearch.

-GIF89a¤Õÿ€ÿÿÿÿÿÌÿÌÿÿÌÌõõùììòââìâ¹ìÙÙåÏÏßÌÿÿÌÿÌÌÌÿÌÌÌÌ™ÿÌ™ÌÅÅÙ¼¼Ò²²Ì©©Æ  ¿™Ìÿ™ÌÌ™™ÿ™™Ì™™™™fÌ™f™––¹ŒŒ³ƒƒ¬yy¦ppŸfÌÌf™Ìf™™ffÌff™fffff3f3™f3f3™Ì3™™3f™3ff33™33f3333€f3€3€™™€f™€ff€f3€3™€3f€33€€f€€3€€€€€€€€€€€€,€€€€¤@ÿÀ’pH, diff --git a/mozilla/directory/java-sdk/tools/LDAPSearch.java b/mozilla/directory/java-sdk/tools/LDAPSearch.java index aecf408caa2..80c7f30ce0f 100644 --- a/mozilla/directory/java-sdk/tools/LDAPSearch.java +++ b/mozilla/directory/java-sdk/tools/LDAPSearch.java @@ -407,7 +407,7 @@ public class LDAPSearch extends LDAPTool { cons.setServerControls(controls); cons.setDereference( m_deref ); cons.setMaxResults( m_sizelimit ); - cons.setTimeLimit( m_timelimit ); + cons.setServerTimeLimit( m_timelimit ); cons.setReferrals( m_referrals ); if ( m_referrals ) { setDefaultReferralCredentials( cons ); @@ -468,6 +468,7 @@ public class LDAPSearch extends LDAPTool { System.err.println("\t"+urls[i].getUrl().toString()); continue; } catch (Exception e) { + m_pw.flush(); System.err.println( e.toString() ); continue; } @@ -483,6 +484,7 @@ public class LDAPSearch extends LDAPTool { } } } catch (Exception e) { + m_pw.flush(); System.err.println( e.toString() ); System.exit(0); } @@ -501,11 +503,13 @@ public class LDAPSearch extends LDAPTool { protected static boolean isSchemaEntry( LDAPEntry entry ) { LDAPAttribute attr = entry.getAttribute( "objectclass" ); - String[] vals = attr.getStringValueArray(); - for( int i = 0; i < vals.length; i++ ) { - if ( vals[i].equalsIgnoreCase( "subschema" ) ) { - return true; - } + if ( attr != null ) { + String[] vals = attr.getStringValueArray(); + for( int i = 0; i < vals.length; i++ ) { + if ( vals[i].equalsIgnoreCase( "subschema" ) ) { + return true; + } + } } return false; }