From 363773ce9a265cec2840498ad41d34097a41e5b6 Mon Sep 17 00:00:00 2001 From: Mattias Arthursson Date: Thu, 23 Oct 2008 17:06:27 +0000 Subject: [PATCH] Removed unused stuff and changed Exception type in AbstractCompensatingTransactionManagerDelegate to avoid package cycle. --- core/build-instructions.txt | 41 -- core/build.xml | 91 --- core/docs/quickstart/quickstart.pdf | Bin 54787 -> 0 bytes core/docs/reference/images/admons/blank.png | Bin 374 -> 0 bytes core/docs/reference/images/admons/caution.gif | Bin 743 -> 0 bytes core/docs/reference/images/admons/caution.png | Bin 1250 -> 0 bytes core/docs/reference/images/admons/caution.tif | Bin 1978 -> 0 bytes core/docs/reference/images/admons/draft.png | Bin 17454 -> 0 bytes core/docs/reference/images/admons/home.gif | Bin 321 -> 0 bytes core/docs/reference/images/admons/home.png | Bin 1156 -> 0 bytes .../reference/images/admons/important.gif | Bin 1003 -> 0 bytes .../reference/images/admons/important.png | Bin 722 -> 0 bytes .../reference/images/admons/important.tif | Bin 2020 -> 0 bytes core/docs/reference/images/admons/next.gif | Bin 1083 -> 0 bytes core/docs/reference/images/admons/next.png | Bin 1150 -> 0 bytes core/docs/reference/images/admons/note.gif | Bin 580 -> 0 bytes core/docs/reference/images/admons/note.png | Bin 490 -> 0 bytes core/docs/reference/images/admons/note.tif | Bin 460 -> 0 bytes core/docs/reference/images/admons/prev.gif | Bin 1118 -> 0 bytes core/docs/reference/images/admons/prev.png | Bin 1132 -> 0 bytes core/docs/reference/images/admons/tip.gif | Bin 598 -> 0 bytes core/docs/reference/images/admons/tip.png | Bin 449 -> 0 bytes core/docs/reference/images/admons/tip.tif | Bin 420 -> 0 bytes .../reference/images/admons/toc-blank.png | Bin 318 -> 0 bytes .../reference/images/admons/toc-minus.png | Bin 259 -> 0 bytes .../docs/reference/images/admons/toc-plus.png | Bin 264 -> 0 bytes core/docs/reference/images/admons/up.gif | Bin 1089 -> 0 bytes core/docs/reference/images/admons/up.png | Bin 1111 -> 0 bytes core/docs/reference/images/admons/warning.gif | Bin 743 -> 0 bytes core/docs/reference/images/admons/warning.png | Bin 1241 -> 0 bytes core/docs/reference/images/admons/warning.tif | Bin 1990 -> 0 bytes core/docs/reference/images/callouts/1.gif | Bin 968 -> 0 bytes core/docs/reference/images/callouts/1.png | Bin 329 -> 0 bytes core/docs/reference/images/callouts/10.gif | Bin 968 -> 0 bytes core/docs/reference/images/callouts/10.png | Bin 361 -> 0 bytes core/docs/reference/images/callouts/11.gif | Bin 244 -> 0 bytes core/docs/reference/images/callouts/11.png | Bin 565 -> 0 bytes core/docs/reference/images/callouts/12.gif | Bin 244 -> 0 bytes core/docs/reference/images/callouts/12.png | Bin 617 -> 0 bytes core/docs/reference/images/callouts/13.gif | Bin 244 -> 0 bytes core/docs/reference/images/callouts/13.png | Bin 623 -> 0 bytes core/docs/reference/images/callouts/14.gif | Bin 244 -> 0 bytes core/docs/reference/images/callouts/14.png | Bin 411 -> 0 bytes core/docs/reference/images/callouts/15.gif | Bin 244 -> 0 bytes core/docs/reference/images/callouts/15.png | Bin 640 -> 0 bytes core/docs/reference/images/callouts/2.gif | Bin 968 -> 0 bytes core/docs/reference/images/callouts/2.png | Bin 353 -> 0 bytes core/docs/reference/images/callouts/3.gif | Bin 968 -> 0 bytes core/docs/reference/images/callouts/3.png | Bin 350 -> 0 bytes core/docs/reference/images/callouts/4.gif | Bin 968 -> 0 bytes core/docs/reference/images/callouts/4.png | Bin 345 -> 0 bytes core/docs/reference/images/callouts/5.gif | Bin 968 -> 0 bytes core/docs/reference/images/callouts/5.png | Bin 348 -> 0 bytes core/docs/reference/images/callouts/6.gif | Bin 968 -> 0 bytes core/docs/reference/images/callouts/6.png | Bin 355 -> 0 bytes core/docs/reference/images/callouts/7.gif | Bin 968 -> 0 bytes core/docs/reference/images/callouts/7.png | Bin 344 -> 0 bytes core/docs/reference/images/callouts/8.gif | Bin 968 -> 0 bytes core/docs/reference/images/callouts/8.png | Bin 357 -> 0 bytes core/docs/reference/images/callouts/9.gif | Bin 968 -> 0 bytes core/docs/reference/images/callouts/9.png | Bin 357 -> 0 bytes core/docs/reference/readme.txt | 20 - core/docs/reference/src/basic.xml | 385 ------------ core/docs/reference/src/configuration.xml | 259 --------- core/docs/reference/src/contextprocessor.xml | 200 ------- core/docs/reference/src/dirobjectfactory.xml | 341 ----------- core/docs/reference/src/executors.xml | 148 ----- .../reference/src/images/NamingException.png | Bin 64786 -> 0 bytes core/docs/reference/src/images/banner4.jpg | Bin 83374 -> 0 bytes core/docs/reference/src/images/bannerR.gif | Bin 7949 -> 0 bytes core/docs/reference/src/images/logo.png | Bin 23834 -> 0 bytes .../src/images/package-dependencies.png | Bin 14893 -> 0 bytes .../src/images/package-structure.png | Bin 16302 -> 0 bytes core/docs/reference/src/index.xml | 64 -- core/docs/reference/src/overview.xml | 417 ------------- core/docs/reference/src/pooling.xml | 550 ------------------ core/docs/reference/src/preface.xml | 32 - core/docs/reference/src/simple.xml | 35 -- core/docs/reference/src/transactions.xml | 223 ------- core/docs/reference/styles/fopdf.xsl | 475 --------------- core/docs/reference/styles/html.css | 270 --------- core/docs/reference/styles/html.xsl | 100 ---- core/docs/reference/styles/html_chunk.xsl | 103 ---- core/docs/reference/styles/tld.to.docbook.xsl | 197 ------- core/docs/reference/styles/xsd.to.docbook.xsl | 123 ---- core/docs/upgrade/src/readme.txt | 19 - core/docs/upgrade/src/upgrade.xml | 460 --------------- core/itest-openldap-targets.xml | 234 -------- core/ivy.xml | 140 ----- core/license.txt | 201 ------- core/notice.txt | 16 - core/project.properties | 17 - core/readme.txt | 87 --- ...ompensatingTransactionManagerDelegate.java | 4 +- readme.txt | 89 +-- src/assembly/with-dependencies.xml | 1 - 96 files changed, 56 insertions(+), 5286 deletions(-) delete mode 100644 core/build-instructions.txt delete mode 100644 core/build.xml delete mode 100644 core/docs/quickstart/quickstart.pdf delete mode 100644 core/docs/reference/images/admons/blank.png delete mode 100644 core/docs/reference/images/admons/caution.gif delete mode 100644 core/docs/reference/images/admons/caution.png delete mode 100644 core/docs/reference/images/admons/caution.tif delete mode 100644 core/docs/reference/images/admons/draft.png delete mode 100644 core/docs/reference/images/admons/home.gif delete mode 100644 core/docs/reference/images/admons/home.png delete mode 100644 core/docs/reference/images/admons/important.gif delete mode 100644 core/docs/reference/images/admons/important.png delete mode 100644 core/docs/reference/images/admons/important.tif delete mode 100644 core/docs/reference/images/admons/next.gif delete mode 100644 core/docs/reference/images/admons/next.png delete mode 100644 core/docs/reference/images/admons/note.gif delete mode 100644 core/docs/reference/images/admons/note.png delete mode 100644 core/docs/reference/images/admons/note.tif delete mode 100644 core/docs/reference/images/admons/prev.gif delete mode 100644 core/docs/reference/images/admons/prev.png delete mode 100644 core/docs/reference/images/admons/tip.gif delete mode 100644 core/docs/reference/images/admons/tip.png delete mode 100644 core/docs/reference/images/admons/tip.tif delete mode 100644 core/docs/reference/images/admons/toc-blank.png delete mode 100644 core/docs/reference/images/admons/toc-minus.png delete mode 100644 core/docs/reference/images/admons/toc-plus.png delete mode 100644 core/docs/reference/images/admons/up.gif delete mode 100644 core/docs/reference/images/admons/up.png delete mode 100644 core/docs/reference/images/admons/warning.gif delete mode 100644 core/docs/reference/images/admons/warning.png delete mode 100644 core/docs/reference/images/admons/warning.tif delete mode 100644 core/docs/reference/images/callouts/1.gif delete mode 100644 core/docs/reference/images/callouts/1.png delete mode 100644 core/docs/reference/images/callouts/10.gif delete mode 100644 core/docs/reference/images/callouts/10.png delete mode 100644 core/docs/reference/images/callouts/11.gif delete mode 100644 core/docs/reference/images/callouts/11.png delete mode 100644 core/docs/reference/images/callouts/12.gif delete mode 100644 core/docs/reference/images/callouts/12.png delete mode 100644 core/docs/reference/images/callouts/13.gif delete mode 100644 core/docs/reference/images/callouts/13.png delete mode 100644 core/docs/reference/images/callouts/14.gif delete mode 100644 core/docs/reference/images/callouts/14.png delete mode 100644 core/docs/reference/images/callouts/15.gif delete mode 100644 core/docs/reference/images/callouts/15.png delete mode 100644 core/docs/reference/images/callouts/2.gif delete mode 100644 core/docs/reference/images/callouts/2.png delete mode 100644 core/docs/reference/images/callouts/3.gif delete mode 100644 core/docs/reference/images/callouts/3.png delete mode 100644 core/docs/reference/images/callouts/4.gif delete mode 100644 core/docs/reference/images/callouts/4.png delete mode 100644 core/docs/reference/images/callouts/5.gif delete mode 100644 core/docs/reference/images/callouts/5.png delete mode 100644 core/docs/reference/images/callouts/6.gif delete mode 100644 core/docs/reference/images/callouts/6.png delete mode 100644 core/docs/reference/images/callouts/7.gif delete mode 100644 core/docs/reference/images/callouts/7.png delete mode 100644 core/docs/reference/images/callouts/8.gif delete mode 100644 core/docs/reference/images/callouts/8.png delete mode 100644 core/docs/reference/images/callouts/9.gif delete mode 100644 core/docs/reference/images/callouts/9.png delete mode 100644 core/docs/reference/readme.txt delete mode 100644 core/docs/reference/src/basic.xml delete mode 100644 core/docs/reference/src/configuration.xml delete mode 100644 core/docs/reference/src/contextprocessor.xml delete mode 100644 core/docs/reference/src/dirobjectfactory.xml delete mode 100644 core/docs/reference/src/executors.xml delete mode 100644 core/docs/reference/src/images/NamingException.png delete mode 100644 core/docs/reference/src/images/banner4.jpg delete mode 100644 core/docs/reference/src/images/bannerR.gif delete mode 100644 core/docs/reference/src/images/logo.png delete mode 100644 core/docs/reference/src/images/package-dependencies.png delete mode 100644 core/docs/reference/src/images/package-structure.png delete mode 100644 core/docs/reference/src/index.xml delete mode 100644 core/docs/reference/src/overview.xml delete mode 100644 core/docs/reference/src/pooling.xml delete mode 100644 core/docs/reference/src/preface.xml delete mode 100644 core/docs/reference/src/simple.xml delete mode 100644 core/docs/reference/src/transactions.xml delete mode 100644 core/docs/reference/styles/fopdf.xsl delete mode 100644 core/docs/reference/styles/html.css delete mode 100644 core/docs/reference/styles/html.xsl delete mode 100644 core/docs/reference/styles/html_chunk.xsl delete mode 100644 core/docs/reference/styles/tld.to.docbook.xsl delete mode 100644 core/docs/reference/styles/xsd.to.docbook.xsl delete mode 100644 core/docs/upgrade/src/readme.txt delete mode 100644 core/docs/upgrade/src/upgrade.xml delete mode 100644 core/itest-openldap-targets.xml delete mode 100644 core/ivy.xml delete mode 100644 core/license.txt delete mode 100644 core/notice.txt delete mode 100644 core/project.properties delete mode 100644 core/readme.txt diff --git a/core/build-instructions.txt b/core/build-instructions.txt deleted file mode 100644 index fddffa69..00000000 --- a/core/build-instructions.txt +++ /dev/null @@ -1,41 +0,0 @@ -In order to build the spring-ldap-person sample, you need to build spring-ldap first. - -% cd spring-ldap -% ant dist - -You will most likely get this error, if you haven't installed [url=https://javacc.dev.java.net/]JavaCC[/url] and pointed out to Ant where it is: - -[code] -BUILD FAILED -... JavaCC home must be a valid directory. -[/code] - -You install JavaCC say in /javacc-4.0 and put this in a spring-ldap/build.properties: - -[code] -javacc.home.dir=/javacc-4.0 -[/code] - -Try building spring-ldap again: - -% ant dist - -If that succeeds, you'll get a snapshot build installed in your integration repo: - -% ls ../integration-repo/artifacts/org.springframework/spring-ldap/ -1.2.1-SNAPSHOT-20071206091603 -ivy-1.2.1-SNAPSHOT-20071206091603.xml -ivy-1.2.1-SNAPSHOT-20071206091603.xml.md5 -ivy-1.2.1-SNAPSHOT-20071206091603.xml.sha1 - -Next, you can build spring-ldap-person: - -% cd ../spring-ldap-person -% ant - -If that succeeds, you'll get a war in target/artifacts: - -% ls target/artifacts/war -ldap-person.war - -Deploy that in Tomcat and see how it goes. \ No newline at end of file diff --git a/core/build.xml b/core/build.xml deleted file mode 100644 index 6ad8a44e..00000000 --- a/core/build.xml +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Unit test report has been generated. -The HTML report is ${target.testresults.html.dir}/index.html - - - - - - - - - - - diff --git a/core/docs/quickstart/quickstart.pdf b/core/docs/quickstart/quickstart.pdf deleted file mode 100644 index c9e37ade43db45d933f4b2abbd4a4c56f2de0745..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54787 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�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 b4#DSN_}nr1{JKlP+9=^4*=%>H{^NfE`j3*o diff --git a/core/docs/reference/images/admons/blank.png b/core/docs/reference/images/admons/blank.png deleted file mode 100644 index 764bf4f0c3bb4a09960b04b6fa9c9024bca703bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1SEZ8zRdwrEa{HEjtmSN`?>!lvNA9*>Uz33 zhE&XXd(lylL4oIh!GZnHecj|txT>yO8>^qY%(y?B;Tppl#t7yOYze#vq#8^aMzDZb YLK^d5CO(feU_df>y85}Sb4q9e0Be`**{8_ndlqdgjcTGH1@5rAvWm>DH}V&z(E>{Q2|u@89nQ znoBxR{K>+|z@W#V1JVle69d~nhv}!E7VV7D!$l=+#gyARX+eW7x`wT@Cg?1ihH6;1 zs$!+xj1Yt%W31lvY*ooh8##Wqt4P*f&)W2{!b0}^@kv>5x2zLQef-gZgT0SEg>hLF z)Pd`+x;*(#oF^Yc1wYmptOPqEY|_Nz%wH;O`WPI6ayD{2tAO4N zo7{UG#GByI2%_fo|5LqMv{6N+A1o@_2o{w)&t4I@GfML`SWvEy;UY+Xf4Xzz&KO;h zV_?(HH9iCh`e$qcdSYD|*JluqH{jv}kl>0fV4tmS-PB+scb>_h18CFP6lf@4^@?vqT-$&hMpcE*)wGd!;~q-Q>IkUnZqz=PVt;M zK*p3gbLK2v%CK~4^3tV1#?q}@8MbbX+PXD)>(;G%_cH9=n|$sZ!?|yxmE{-7;w@N47?rU=3X_NkV zU|o{PnRTZ;lXp4>+)hZU_|Lw%*va*6=<@jI@BP^`_OsZ?pZg-2AaGf|;i2L0<>du@ zeRrO4er03}pLSxdREd>pap^;~&E+}=JYKy#vHnLI=Z$}pPyA_`zG;G~<$`Br2do;7 z$Heivv0AeyJYVI({@6?X6r+V~XS2Cs!|bddDqJz@2lKf$~4dA1c%lfOT+5KMUSWi#X5(9ePxx_W1Bsf2+N)z4*}Q$iB}K{RAP diff --git a/core/docs/reference/images/admons/caution.tif b/core/docs/reference/images/admons/caution.tif deleted file mode 100644 index 4a282948c4c7ed53a2cab4132152c9923f7eb363..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1978 zcmebD)MDUaXJBaHTM%HOBF4+!!hOu3BSpZ2m-o=a4UGyOVRGC@78N*Fn1mTgu^*ne z;*L$0(G;HMj}kXtX=zR2W)oug(x;}vd4|pLf`&qbk&JK3goqWpg18tM4sYt>NNQ*5 zJO1L!te8d4X6?)=pC(QSU||)yt{QYgWZzM1M#kk|4=&{>4cy$*l3-xF?uL{AUz_5A z50}pAFgB%?DF*m>GD)-@{{F$i>YOfT;)C)He}4t3vbN+MR?Ki#WjWH`E;J#5fkSah z*CvDRdtCvNOpI%k6$_&6*{?lq*|st4mU-vV>qgQQdBM7KAGv%{?hRM3li^KVy1S9x zik*=G2sju77$g`J84MYm7@`=G8L}CQ8LAmtfUpM)r!auv95`Ic0D)T>AaF0kUWRi( zcnu8iF+kvR1_*r5@Sfp29R6n*g@Y>uM&o~Q#Rt7z11bTqgJPg?F|Y&xk=0NVR1Poz z%ZNF^GJpYGT5JXL8G!j8gs%ZfLk3G=Ndlpt1L^lb3@Tv^fu#V1MQ=Zj+J`d)yn#^y zss&&)AHzQe7O)6V5GchAW=nvWNNgr3n*%7$3}v$d*=$fYGmtIF2r&nwMieRzvPldo p4l+|5%Ki*wOEI#7?fS#Uz#t7}vjA&lTO_>>KsEyq{Q;^60RYt05`+K% diff --git a/core/docs/reference/images/admons/draft.png b/core/docs/reference/images/admons/draft.png deleted file mode 100644 index 0084708c9b8287c51efa6b40b8d492854191455e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17454 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 diff --git a/core/docs/reference/images/admons/home.gif b/core/docs/reference/images/admons/home.gif deleted file mode 100644 index 6784f5bb01e0104c60e006a2ed525163a380135c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 321 zcmV-H0lxl6Nk%v~VJHA70KxzO;Nak3U|_JYumAu6&;S7N@bCZt@Bjb+EC2ui04M+` z000C22)f+N_DFSAmXsV{#*oJWIwOJ|OFii&dHVi$1?u8o=2teG> zb~7H4%2JKz`Tcy)XEL^=cAP+G_P7moKVb2g%$4rYhp9PeRzLz zfrD6ufORfRiHeIHgKCh5l6Fj1nwy-RR)UybJ_V$url+TLhynwsuCA(~Rj;(Av5lgv zwwtvDw^OsE0|vwftp&x&!i>OQw#ml^r_#R6Z_dKdq|~Li{txWV+q;;-NCjLKH8RzODs`x)zXFqfx?o2&^85@jF7AWJN0jDQd6 TqQ?;{LW&$ovZP522><{)rIw!r diff --git a/core/docs/reference/images/admons/home.png b/core/docs/reference/images/admons/home.png deleted file mode 100644 index cbb711de712dcf06597a3a8a3d95f6fefda1f245..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1156 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG|!3-oLGuzY{7?>FXd_r6WdIS`E6g8)48qP6v zn&afP)GK*ya`E2cmc1=K$9krmo3ixW(yjNl9=mt!-1BqS-d}tE{`vdw@Bfd2(GVCG zA@J$l5_e#hU`+CMcVXyYmGuB}CVRR#hE&{I8+eiLumVSprtq8v761QlTpYPgC-&05 zDJ{&8o?4V1EYqU7+)vOI#yLg7ec#$`gxH85}f}H9d0^ z(^GvD(=(H^6-@Mu^ehxCE%gm7^bHIZl8Z8nODY|5D~n4qll4-I^-@X;^7BgclJj#X z?o!+VG)@a_TxNP+Vo52`JVR3xV`HP#G)t4DL{lRpBV!ZeBojj;vlKG}W79NC!#D3= nHUM?;fpi4`tz|GatuQpzHqbT@s&o4Ulwt66^>bP0l+XkK0lack diff --git a/core/docs/reference/images/admons/important.gif b/core/docs/reference/images/admons/important.gif deleted file mode 100644 index 6795d9a819874ca8b833c4d4993988721489070f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1003 zcmd5)v2xQu5Iutd0|w+k5&Zs3?l2X}aDS zjTF}vbzOHH$Mba8b;e`IbzRT%eBTcOF$gq_YY0gQX<;}D0zVAhF!bZtiem@kQ53ld zc?kJw3X()jQz=b5X{r%YqZCjoWEse^T9yffD1>wGXnD2O6PLX4*vhfx$E#2ysKF~)d4pDz}RBuUaVC4^8)m&+y7^CACN zNWZET0BmraH<<4P+`FFGYnVCKQ9;ZBR3T)qVf|%U7d>simE()pGuDQwHb2TG+MBQ_ zvDDA4Qf1%Pj=rj3vOLN4H;wu(_qSJ$@rtK60JzIpt9fbL=6P}WBLJ%VyrBKnwv9gL z@+koKj|(oEHhf+1r)*HA;C;h{WiuO<>j@AFLq1UdID5A%&u-GCYUTM&`rF#A&P{r^ z_xRIVhqhjHEgv=NdwEBz@%x57)QYSpY=k4uyJx0tows>V2jGshqK7Z@I~q3m5W5c^ zZt#o~c$MEO+~MK7@*>Lh!0mEumT-7-ns3eG+lQO)ySz&7zEB7GF&sm<)jwePAZ~s8 Q_s=i~Dg!i1^#?fn4NukiE&u=k diff --git a/core/docs/reference/images/admons/important.png b/core/docs/reference/images/admons/important.png deleted file mode 100644 index 12c90f607a1b27ddde0a7d922ae255e8c90e883e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 722 zcmV;@0xkWCP)Gdz_qOoSb{LwMwNgp7=gl$4aErG%}mjHRWNrKOy`y@b8JoTa6ut*xc4t*y1SwY|N)#>U3Z&d%1> z*52OU=jZ3|@9+2b_y7O@tTMkk%M`~Kg@u8&dg_P^_0l3yQb639!jLZt^Lx<-O17UeeJ z-|=!77W(jGx&e#?FOku-gKofoU0$~4M+dhLFueEauP`}l7LV=;lsOdn%WHure=x;k`m0(bF&MU#) z-qv#^n8(MjB|ykioqII#+`g4no-MU=BK|Sahu_3M_-d*=7hq=~t?^}A)G7 zbairN0An*{V`DL9V>K}|HDobmIW;*pIW=W9HaTQ6F*7kTGI9=S@Bjb+07*qoM6N<$ Ef=i}M4FCWD diff --git a/core/docs/reference/images/admons/important.tif b/core/docs/reference/images/admons/important.tif deleted file mode 100644 index 184de63711510990ab0a8f483c274d2f11596cef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2020 zcmebD)M7AWXJBX$dk|ousK?9JTDdL8Uq@YU@bJG?*jxfpA<|j-!WmZOftnGps z2`M(7+NV;37GB736>XW?tSpqXE>}~nv-Ps%oEtMlIQW-6+n$q%9M;|CK z_#F#ZV$1tJGvEmalTiEz3u}o#Tuh>mHiUOeO7JnuKG`_As3Jnn>nKNe(yJ$T`WW1e~GYvWZ4Wap86IdPu0ZRZU zVEzvR=YI)c=}-+U1EPR<3b=fz29^QIz>)z}8Z2c{1j=VaONynyvH(;CHn0?60O~UY>I?#w0~|oMCXfdzd#ZtD0Rym90=efsxO4)k@&c9v z5Z5Y>mIBlY0dHWCG6FG-=41HBzycNl3Ie5=!E6Z-6N$|PWrOMuW+jIb=LGEI8QAA*>a1B0!;`T|n7uj>pG`jtu{evhJMNxcGSe4+aUA4;zBR~SJyxQRUcWR@_F-^jeWYB);NUiculZ3jmx6N0 zeB+OSXDhy@IoCx0FO{tph>zHm!T!klb*W-Q^N$-zxf}}=>~`{%GD&ps=U<*F$^Pgw z_kzS@O+PsF&r}G^Pim1AepDS}@Ytzl3Ts+UM}N_=nLk9*dAj;P>|etE;is#v!2PUi yKjIc2Q@7UKxAw<}hlktwFXd_r6qS{MX+1QdG|HK%AA z&M|bFA9tAudUsBZ|kvp$Id-JckTVP=kK4t z|Nj2}C>RZap&SB+ixVCKvjk(3x4R2N2dk_Hkkjkw;uunKYwyH|T!$5ST0$SiY~H5U zR{cLbR)lT!-5c|b6rGCX%N?2P<`-xxUu`gZx87&*3!~4wH@%p0)WuYX}UBIC~8cAiK_+plk!-xP|nq~%Rem@g?39waS$dFIAw`2be&`&H`~ zup7N@y!g@N+18CSR#dLnIlgB9pXN>WRz-=n38I0oRnmeW@(a^WRPZVkYb)}kZ6%y pT0bWnsEZGzD*$LMgRyCap{cfkwt-Nc+b5t5gQu&X%Q~loCIEjWXuALa diff --git a/core/docs/reference/images/admons/note.gif b/core/docs/reference/images/admons/note.gif deleted file mode 100644 index f329d359e55c7ed753170a6f04fbc0cba1e1e565..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 580 zcmZ?wbhEHblwgox_`=Ho1YTZVK|w)LQBlds$=TW2#l^+d)zvL6Ej>LwQ>IK=x^(H* zty}l*-FxiVv2*9nUAuPe-o1OzpFe;9{{8>||AFElBX9%7pDc_F45AD=ASEC>8Cd@% zghGJlBo$966GSzJUe!6ZN$1q35SXB^-zJAkEPj)pXq*a$h_ zXQ+sXsjhEmXhNv37hJ?OaLOg1X|~+1jSyWR(o`3y(c1;Ai!}%$em*Glyc1BwlJ~NK zuZpLThNs9@k1ImH0$Wth2s`>W>73rA(RIXT!4{9MLpCC+wq2hkd_`O*d~)g9;?U*N zC}OI4M1Z6Hl7Y`-pGiWx6O;l)uFCkcxOF@EUU3NwS>oY6#RI6O?U2byr$d1v9)TjN znwNw$j~n?OWwbpf2zH99Zo*Lqk)s;^7gg9U27sNV>(8nyV%m64QG)9cM8x-WNa$(j zzz`MJAQq_8eSmmjy7}|Lu@zf kf(CKug-JSrEM6BktMtGlBGk2ik;bV{KB5sIO^OWG0Fd3m^#A|> diff --git a/core/docs/reference/images/admons/note.png b/core/docs/reference/images/admons/note.png deleted file mode 100644 index d0c3c645ab9af6318035b026dd86944b9ddc9114..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^5+KY0Bp8m$B&h%?rX+877Y2q^y~;)m42&$EE{-7; zw^Ao5PC9JB<666~wbh%Oo7tJ0_rGWfi({a(qjR96>_P4H$tJl=Pxd^1p6`8M?=jE( z!hchf6<8Mi`NHe6`iia69>!lxe4C2-S>+Wvj;l63k!MNSb9|1+f-i>irDi|a^uLl% z^#-f2#pQ2lC%m~9m9JWJZL3|T8FRX>A78<>cU{Z6XGFG336=OLGkw25|29|RG_k%U z>j|M}Ih2i#-w+9_WSj8)*j_s0*s+gA3;Sh&ja)bx!VF_Sf>*se@&+kCgO zr+R@?&ik*cqgb|1nDsf`Smu_<(#~sYRz=fNIgWLC7l}#=|C@V!^7^u?J-&S9hp(U4 z$p4Zq##20*5QGIHvwJ-nxqBD;h diff --git a/core/docs/reference/images/admons/prev.gif b/core/docs/reference/images/admons/prev.gif deleted file mode 100644 index 64ca8f3c7c6856d17625615c7845d9adf8b35e6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1118 zcmZ?wbh9u|RAW$Q_|5jIb=LGEI8QAA*>a1V#C72?E=btEDjqN9qpDd4zl5RF#mYJf^(P5PkwoZW(JQ{ zF_D*4y!wR%9~DOmG#sD7{_&y;#{p%(<{xE#Uw&*>uv^H)Skbd{qJrHLc7}?c9UtQz zYXTT6YHoZvu)pcYrmCD9p$~wJBmbf!%0P@OYB}B?fNF{YnIe9ySJ<~ln9<}1LcYr;@((b@HMtAlPLh^PsKR!G>+|CbXxWHL3#->LwIhe?U cW`4ULC`3qLrpm*X4$b9ricTFB5n!+e06MwKH~;_u diff --git a/core/docs/reference/images/admons/prev.png b/core/docs/reference/images/admons/prev.png deleted file mode 100644 index cf24654f8a9d6826bf5ee3f6b640d0b34f44d2ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1132 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG|!3-oLGuzY{7?>FXd_r6qS{MX+1QdG|HK%AA z&M|bFA9tAudO|H@7THL=dQiK_Wb?x_ut?D z9|fZ!FvLS(&zmEwfLVeu$=lt9p@UV{1IVfNba4!+xV3fSLB2x#g-7SkiDHi<0%5c709k4@>c%U5PUn6XiNrQ7+$BX-K(BEj>;XDjvwZcIF~ zikDl%a$|T|&B@5M-I14sdv^1r*gkp|z3k=crb$1i`yH45`zBpRc(KYI-u^rPzjiy@ zGH(5%+Qq}Yvm59P=MvY5lHmNblJdl&R0anPWlhiA#Pn3(#PrPMYy}fNBRvZROG|wN z3w;Aah2)~l;*v^-+{)sT%w)aPV!f2og8aM^z2yAdiMtec0FBcE8<&}$msnB?G|wQ- z!aOlC%^=CZB-O|yDbdi(G|ec{Bq=S?EGaqB)I9sbjHy6fd>~x`Kx-L{O)CsdwGFfl UgzDTr0c99GUHx3vIVCg!0Q2->tpET3 diff --git a/core/docs/reference/images/admons/tip.gif b/core/docs/reference/images/admons/tip.gif deleted file mode 100644 index 823f2b417c797bcc5b5af0d86034bbbe68a9c5d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 598 zcmaKpzfZzI6vwMTVkAa>9EomJF@dB^cAyaw8YzNW>;V&-Ax?~pOgK0Qkwp3j7=?eJ zp(Bd}iDHPQ&cwK|BZjz$_padR<(hoox1W3W-n*l8G9sLBGh57bgCWc1aD#QQmI@nS1Ofyy{@WiyWQ4xz1!{fdcDD5FdB`<y3!k zEzMQ}>2XNH@2x$azJrio4y76u%{aaSQ8iI0-$_v{WV^70wC+frSXf@6n4D`V#?Bj* zZt`izA4lq-+})D%wiNUU4VVF+%2sLK@TMg8DV7ztp%Z(?@L;tQU1CsK&Qwqezj{Cq zSwCP?&P}GNbF_4EK-+twGeQq!I#zP|Y+{WP*FI?V_Kf=>vV0rySc_v6yVepU`O=gc N_rd2$!U|dD;1^e0&sYEe diff --git a/core/docs/reference/images/admons/tip.png b/core/docs/reference/images/admons/tip.png deleted file mode 100644 index 5c4aab3bb3543191c360387c4af9a3cbaa051345..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 449 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoM0VEi-?r};1DW)WEcNYeRRlUkaK;CUn7srr_ zTcwkB3m#VBagbEhuIO1a$!w|j^feEHv@=+|woj32oF*6|l<3XH$!T}Lao)e6jJhoQ z_vr?OZVprC|7iZ8xaicUR0b&zR-JdP408=+?zC0Rn8IN&QLTWhMIcU0X8P7uUN4WB zR_?a_;&p>ll{>(OzfJ4N{OX={Q&zNgO}j31DC;|ya^r9Fjd348&p+!^cT+^sws+=& zCu*T*mRNK3PE;$BNx$Fa_9(Y=&DoXLMFRd#U31O)<`W^F&-o=xbIqK-c?mr!bmn>! zky6TW;ML~4nXw$T{yra=OteL6G!=B;0=?;6;u=vBoS#-wo>-L1;Gm(b>6x3Dp6Z*J zo|&AjV4`QFXQ5zesc&GRZ(yj9T$EW{Qt6OeSzMBtte0A>mr`1gpI4%noS!>!m*Ngk zP=bxiOwUU!DFvFBnrfM1VQy}0X_lO7WM-b2nq**TZkb|inr2~`WR#dJWc*7VsEZGz hD*$LMgOO>4k%_i}w!yxSoa=!y44$rjF6*2UngF(YpwIvS diff --git a/core/docs/reference/images/admons/tip.tif b/core/docs/reference/images/admons/tip.tif deleted file mode 100644 index 4a3d8c75fd58190ceae8d6ffa621ecf7e925c3c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 420 zcmebD)M8*_WMF8pe-L1yJdc;H$tf{F-CELXO3;xcp67e?gucfex%0l_j;Y3!bk~Iw z*}inn73j9T)O}-3=fCGcYZHT(zR^l}-s<&G=c&#%w(qtbzQr9{)4X|tE-LgF&v4l4 z)p%aZSR=ZsmwRfU)`umDZ@!1L>ZTZTei3kDV32yV!Q3h+-nMlqyV>lRzWV|5XS|!R zJ9po!|JC=_hMz9Ex3Ove_O<7Ki^+ZG3OW)0HK&YExa~knT17|Dw`}IsahgrSch^-` zbR3#}CTEJE3FpcFHhEeT>m*%ClD6O_#XWHUqAtUxv!lnpXbkP%`INR23xxENF% fWR5tL{SwHQVq^u|^$Ez9hO&PF*|tb}fm{Xvme+K0 diff --git a/core/docs/reference/images/admons/toc-blank.png b/core/docs/reference/images/admons/toc-blank.png deleted file mode 100644 index 6ffad17a0c7a78deaae58716e8071cc40cb0b8e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf!VDzk7iOmbDT4r?5LY1G0LBeqssYGrXgF}- zKtn^rf1vn(hW}s+NCR0w;4iG^2^42c@^*J&=wOxg0CMC!T^vIyZYBTtzyH6zKuy9A zentg0F+qV0g#~P97#OBpaJrNsxA6f`rE`gEL`iUdT1k0gQ7VIjhO(w-Zen_>Z(@38 za<+nro{^q~f~BRtfrY+-p+a&|W^qZSLvCepNoKNMYO!8QX+eHoiC%Jk?!;Y+JAlS% zfsM;d&r2*R1)7&;o@#7ik&>8{Vv?F>U|?x(ZfKHZYGz`bmXczeoR*Z-Hs=yh7cWRx f0MJ?nL(>XNZ3Ars^Rf>h;}|?${an^LB{Ts5OHX0g diff --git a/core/docs/reference/images/admons/toc-minus.png b/core/docs/reference/images/admons/toc-minus.png deleted file mode 100644 index abbb020c8e2d6705ebc2f0fc17deed30f2977a46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 259 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf0VEhsJkjh1QcOwS?k)@rt9q4-G!sMP)HD-wQzH`-1CumMgJctv6pLi@6hos# qqtv?{|7HPo@q%;(0Ig*(G_A1IHqbUOFZ%#8j=|H_&t;ucLK6V~f=xvL diff --git a/core/docs/reference/images/admons/toc-plus.png b/core/docs/reference/images/admons/toc-plus.png deleted file mode 100644 index 941312ce0dab168e0efcc5b572e387259880e541..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngf0VEhsJkjh1QcOwS?k)@rt9q49T#T`K7w7|w?rspM=lmg95OfodLFfd9rOi4*hH8wIdOfpPPHA_l1 vPBO4aOiebg{jIb=LGEI8QAA*>a1V#C72?E=bjEDjqN9qpDd4szjmF#mYJf^(P5Pk#A^PL<$Q zI+;RG?K?R>ZZ+XJpnRtJN17PRgOAG`Ypgh#KAaFZVBhwmiI3&M#ti2gFIJ`xI|LdI z)N_AywPiSv9NPY48`Fms0t^T1xjuG&jrgXxZ|i>{CW9aPigr7S6dxV77JO*m^5e&) zo(}&F0j>Y}9vSZmQL;N0Bl*v`gWrf@#t#YRf*HM~)&2b!mjeThEhE5z G!5RR%al9%3 diff --git a/core/docs/reference/images/admons/up.png b/core/docs/reference/images/admons/up.png deleted file mode 100644 index 07634de26b325b09b6686543e3743ec58426e64b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1111 zcmeAS@N?(olHy`uVBq!ia0vp^%0SG|!3-oLGuzY{7?>FXd_r6qS{MX+1QdG|HK%AA z&M|bF#=*s&OJYO?ftdq@1MW_{{H_c7!85p5(1lc z&#VJx3C1LEcNc~ZR#^`qC(YBvF{I+w)Ct~v2NXD1b6>NwI=-vFd2Ozz_LBUAZ6_V# z0_-2ED|^IRKipvRGe~yg+2{$+0#aW-GMHneR${}Twfy{=Zu8*Wewig#Kj<-8yG4i7iAWgR668V7MElu>!lX!rIZ%r=auLs=jTq` zrMLrVoEF%)%=Em(l2V{~M&{;5#umm#78a?N$;qjPhKZ(zMyW=L7Ktfo#^y-|**sf- lni%*%x&naKG8mgy7@BGuXd4LCxqSjjdAjiitKf)ghIjv$xRfA5@!fkDH{bMrpZER!`M%%z$hqF& zRTo^?=>a_=-~^4}0c5}joCOph4kUmZz-=G{VS5-sP2q6X`MO`-x!!*rW ztyZts8;wS@*(?@mpZ^}uZ$}#tfY(x3o*?Xoo>h`d8|jmC(W5ivVgErE1sEKfo%%8K zZm_%KW2+i;iCOE!&3{olD%O0Ac=Thp(EZgCUC z>m{!ZyCyqrXB4)SL^$CI^0ECR$tT=P*F@;1lfy%=Q(o%DDkk-3k1-hj`YC2`iO!;PB{{!F!o39xr+d_Vw5fMTEwpb-s#9q<5Nzz6gIepyU?Lctpr{ZK zVzWaWPAC)#17S8h%;AIuf(Q_yeIybEqS0s^i1YdJcsv0ln9M{Xkpz;-I_^=P))~D~!!Hvpq{Dl8O{rN@cECkt>#DncX%I(O&3i_YgL-$m$VU zT3cLBLS%M1`o{TBX}S|Tbhc)vk!Yp)%rdDd&my(RPsxl%lU$)tC?(1~WuEwClUQn! n$Q8O{Mxt@ukkcT{K0> diff --git a/core/docs/reference/images/admons/warning.tif b/core/docs/reference/images/admons/warning.tif deleted file mode 100644 index 7b6611ec7a1980022c11ad6877fedf32f41b3df0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1990 zcmebD)MAieXJBaHR|qhCa3Ybt#fe?OBZVhOke}_5p}~zDOYXJdOmf$P_Zjir-v(f(n1LVCeE22NskqJ)$I5g z8XP9S{LzviJ+sf*L4iXe*;u-Tjq%lq8EgzJ!Hcg+?M+EyWoUYBc3S038aqStx-zY! zDFTdKac@c|p3q>CIvAgpWRM#aTC%3+U_*~obs9PKLA zwdWf7S{m)1m+z3c?Wmx@z`-EEAipvhp!;Kbm?5X2D0kj+rcP|eW7(8DkV2Fki5IhEj=NKUH8UqO41H$KE_?`g-zXRd_Q8-9KfPnz02B(N>pejpX z>SzI`howNaA&_POrkNgK+E@xq2Mpl!zyMB5$ACOgn$iTTxCSKe0kI-51uy_p+j}7S z9f(I$z~Bf0U{v4*qwzmD;)zDC@CHUcBM`%AK8Ak`EMO6Es$gUWvn4>Pkl0L6HV06g z8Omk_ve}?)W*}RT5n>KVjVM$cWRn>L~%oSd9oTwL7T+&nxy zyu7@8e0==;`~m_3f`WoVLPEmA!XhFfqN1W=Vq)Ur;t~=Pl9G~AQc}{=(lRnKva+&r za&q$W@(KzHii(O#N=nMg$|@=KYmvnwpwgT3XuL+B!Nqy1Kf0dV2c$ z`UVCDhK7blMn=ZQ#wI2vrlzK5W@hH*<`xzfmX?-QR#w*5);2aawzjr*c6Rpm_6`mX zj*gB_PEO9w&Mq!4uCA_bZf@@G?j9ZO-;?s%`Gi0t*xzX zZEfxC?HwH*ot>RsU0vPX-90@$y}iACeSQ7?{Szikm^g9bq)C$|Po6ww%9N>7r%szT zZTj@-GiJ<~IdkT$S+i!(o;_#IoVj!7&YL%H{`~n17A#n}aN(jwixw|lykyCerAwDC zTefWZ^5rX5tXR2n<*HSyRoH%*%du|NsArKUo+Uftf%D zloLRCf`MZx!~eg#-8I=+I4mvh{{H^{{!R%71_cjB28W*F|L=~16e_0!iH^d4K?Vk| zb9al`Kw>>fAksk-B*h@W3^J6Vpa?9*ApqhqsDq^%6u@FoDMJacLWtCX7jZxbFc_?2 mWngHK`2KIMH&~K^;fMv$8T+eyk`x>!G+)|V|DTD8!5RQaJghJP diff --git a/core/docs/reference/images/callouts/1.png b/core/docs/reference/images/callouts/1.png deleted file mode 100644 index 7d473430b7bec514f7de12f5769fe7c5859e8c5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}^nQC}X^4DKU-G|w_t}fLBA)Suv#nrW z!^h2QnY_`l!BOq-UXEX{m2up>JTQkX)2m zTvF+fTUlI^nXH#utd~++ke^qgmzgTe~DWM4ffP81J diff --git a/core/docs/reference/images/callouts/10.gif b/core/docs/reference/images/callouts/10.gif deleted file mode 100644 index fb50b06d150685fbc333906361e32afbf7684993..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 968 zcmV;(12_CfNk%w1VGIBa0QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV0RR91EC2ui01N;O000Q30RR2_$0-K}2ss$t`}gnPyBrWO06>re zLJV*J{^dYWt5yncz0OHVaj#T}cmHbDss&(<}jYB?hWAjdxpF-idd;H(xSYY-?o1HkBC4gkG4 qLFjeQT8tF;{=Lfq000002mqw;_V3@nf0S|{K#+pcy?_4#0suRd diff --git a/core/docs/reference/images/callouts/10.png b/core/docs/reference/images/callouts/10.png deleted file mode 100644 index 997bbc8246a316e040e0804174ba260e219d7d33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}^nQWtZ~+OvdJMW|Y+^UT?O-M{rKJsmzxdayJ{ zDCQA!%%@7Jj$q%-wf8e0_jRx8Dqi$}^?K=?6FriQFLv>>oc^CE+aVHhW3=nZ+fQ4!M=ZC7H>3sl|FJr3LwU zC3?yExf6FO?f@F61vV}-Juk7O6lk8Yg;}bFaZ-|HQc7Azopr01?u8M*si- diff --git a/core/docs/reference/images/callouts/11.gif b/core/docs/reference/images/callouts/11.gif deleted file mode 100644 index 9f5dba4f8df99fff77747affe9c6c03492ec896b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmZ?wbhEHb*_Mn*=~*4EC>&cVUKsi~=%nVHqq z)opEU{r&yZr%#_dckZG^i`K1Mw|VpC9Xoa$IdbIe*|V1}UAley_T$Ho-@JMA;lqc2 z|Neo@1p~#OEDVf5mJWyqvXgP}^2;9)OfJm7I)A)~{gLS`_d;ZPy>0S|_X3{XE z)7O>#600DeuDZ?5tOl@ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($Cs~V(bw8rA5i93}62@ zzlJGu&d<$F%`0K}c4pdspcorSSx9C{PAbEScbC)|7#JBmT^vIy=9KoYUDZ+`aP)jU z&ny=ErrK^#Gw!AcR}pdfMERuV^@&0$@(#^6b8c@rn^6RWX3pUb z4*6@PZ+H0#u=rjsXzS?6n6*sBGbHqGTU%mCsH?n#%j;eD^2}qe=iX*J@VQ3BRpz+u z{PX#N(^9X${`$90+;!pWs>o@z_n8G)7Uo7PJz`jrS+)QE@=PWHmc~UIw=WmUe73o7 z>^bR(M752aYoNg~ozu7U7&{(U>{s!;bn#f?ItjL^o`e{*EOQHqO;ccnz9hLK5@2cAyw@AaPFL~Cp#02|E|4xeQteNtB7waMs QVCXP-y85}Sb4q9e0GRUFb^rhX diff --git a/core/docs/reference/images/callouts/12.gif b/core/docs/reference/images/callouts/12.gif deleted file mode 100644 index a373d0b4f4203dc34d00cfc337fce3c6940ac0a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmZ?wbhEHb2m08OKLyy@67BNn1 zV`M$b;Hb*j&z8jCVAzz(*|0d1*}-svnJ2^2O#T7^_7xgl3o~c6fy_O;6lj#|@c@$< P%QAt6&q75}91PX~p`BKN diff --git a/core/docs/reference/images/callouts/12.png b/core/docs/reference/images/callouts/12.png deleted file mode 100644 index 31daf4e2f25b6712499ee32de9c2e3b050b691ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 617 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1SD^YpWXnZI14-?iy0V%N{XE z)7O>#600De9$%>2LVd81Yeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($Cs~V(bw8rA5i93}62@ zzlJGu&d<$F%`0K}c4pdspcorSSx9C{PAbEScbC)|7#JBmT^vIy=Cn>wTzx1(qV@bS z0hYvspf(--lM>otrqbK$7p{3DzJ|+KN8%5ows)AI?zWk_n>jwEHXrTJecpEW_0xL= z?}N`*R`T~d2{AN${y8T#GEn4hUb&52^}Op@TW4{oc)A6)%$5=G}h# z?O{QLj@aRcAIf&y&OiUN=H2gq=_}V|pWfuReDV|{jwXw~>#w)I|9$3x|moMMCb?eciM{nM|`S|hUzkmNgCL#gF zpDYZFK)w!03}hz*YvF=rnZlC|CNImJwM-Kz+OQ~d)-w*#q=p-*7PHz|r?uJeim=Ww zV{C0@=>Ntrnaz(OL9u;eM8lFu#sozHRo??kGr1dh7*7~9Ey|P%1DVSLG^)+=Sc1ij PWtl+3XQ84f4hCxgsBBm& diff --git a/core/docs/reference/images/callouts/13.png b/core/docs/reference/images/callouts/13.png deleted file mode 100644 index 14021a89c2ed3d4881afea6e3a315bce4f95efce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 623 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1SD^YpWXnZI14-?iy0V%N{XE z)7O>#600Dep5bGK9wD%hYeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($Cs~V(bw8rA5i93}62@ zzlJGu&d<$F%`0K}c4pdspcorSSx9C{PAbEScbC)|7#JBmT^vIy=Cn>w>~AWNX^a2R zbkveVY|45D7UnZ&JtjPwvdCCscZp0EA*0()#GOw)UH4-^&)y^E*4%UC)*|J}q_Ss;tN`nd8$>x9$_Xb^O2EpX&@C ZI46EzbLxq-voTO7gQu&X%Q~loCIF_C`w;*D diff --git a/core/docs/reference/images/callouts/14.gif b/core/docs/reference/images/callouts/14.gif deleted file mode 100644 index 6d6642ee96d73aa5b2efe17277f15c63e15ff643..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmZ?wbhEHbgv_2w{G2f{P^+Pw{Jgw{P^$RKag>#K=CIF z10zsK2P6!#lYzA`VOnY=t7jyToEFN;z;JkSYGfEE2V(<6l11b+S?_5KEX!CT+8F(( zvRqlp;LjGuAfVc->c}`bkwHN5baLRK$*JrYWEePfJPT4IRYB%D08MZc1e)(ZEfr|E OB-C)A`C!DsU=08}Mo-uP diff --git a/core/docs/reference/images/callouts/14.png b/core/docs/reference/images/callouts/14.png deleted file mode 100644 index 64014b75fe2e84d45ed861974c72462727979360..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 411 zcmV;M0c8G(P)!ax*-PXaQ9e~6^e1gu=a6a&KSz}bR`+prYG9ayB$BDjWGfIE;t#wl!+ zR3S(jA%y#i_@eOOedXoc%RQe%L;wH~k+s%ZI~)!<=dD%?4MaplaU9QPGski2q3`>r z(}{j@0a$CLl+)={2vLWml*i-oa5#J}DW$gCZB~Z!(!M#)2St|1_V^0qpmCrBof=Y&NUas@LmfSw=)4B4f;8Fu)(eFsv24 zJzXxBrayquXcR?Ji+1bU# z#kIAy&CSg{Jw1~rPo6n*=86?7wrtt5XV0EPhYnr2a^>dDn-3m5c>DJ4moH!b{rd+p z6b2N3vM?|LIXWN#kev*yg%7sn&Q|rkxh?nhwpdmMhK9|#x2N%XFg5sYwz$1bx0{Xk z_GO0a+gN$Os>~K+Jja&BAYj`ToN;JVE|Y+*Pie-X&AB`WbeJq+xeIcm-9YAoOlVUC XntyRyF3|Aku*lmW!=WgegTWdA>{?yt diff --git a/core/docs/reference/images/callouts/15.png b/core/docs/reference/images/callouts/15.png deleted file mode 100644 index 0d65765fcf13dcfd87914744dec8bda115e4adf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 640 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1SD^YpWXnZI14-?iy0V%N{XE z)7O>#600De0j~t#c`vY#Yeb1-X-P(Y5yQ%LXFPyHJS9LOm(=3qqRfJl%=|nCVNOM5 zpg0#u+&RCXvM4h>ql94%{~0TwC?8m~C^ZqJRG}m@H-L1 z5L@scq?{XUcxG{OP9jig5ySQaTl#^*93bKF#G<^+ymW>G($Cs~V(bw8rA5i93}62@ zzlJGu&d<$F%`0K}c4pdspcorSSx9C{PAbEScbC)|7#JBmT^vIy=9Eq_Jl&Ka(%QdX zh{H8O%#_7)Tc@t$mM`p4(Ne7omR*~(>gd8_8AZH{=3ms$Fmzm^yL@_+(#aQQ5>7QW z>3g2fIsH(ugM)!V$x4Rr_+!J_XU%4xbz0aE;^N{m@42Z|@0S@TQ=WbP`TMV5Ok;<| z^Ihv+@6tQ{sciRF9dD7Nr=KobwJJ68zJK$<1Pd9rz%4O)*;}Jzj&~nTGMecz>B%lV zK|`fmIc8mp-h8iSXiGFW=C(L+XH4DRxZQX87^-dLuD>odo6YLT@Sw)dfBEIG)v2@6 zR)%mL7GRj1x-&v&+2q@A%a&h0`Lw7|#(w_!tgT!PoJ|+re`l6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV0RR91EC2ui01N;O000Q30RR2FM=1vc2st?2`}gnPxflQdqzC~3 zK#X($?!^EQ!rHla#vlNQagPxI0Hv$}2yu@Q004|)006*f4*&q(Y5@Qc0|5X40001p zac>R)001^@s67~R_g00000F&F^=u;$*F7%?ya0Kn*83;>+Y qojZ4K4}ci={+){f00000006`|_wV1odyHZrK#+sdy?_4#0suS0gSs35 diff --git a/core/docs/reference/images/callouts/2.png b/core/docs/reference/images/callouts/2.png deleted file mode 100644 index 5d09341b2f6d2ea2d1d5dad5d980f14b4b05dfd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}^nQxaY7e*=hH)_rZeB4|imU1$R#1`!P>&$poQl;nzm}mD5ZFopaX|GsS%q*{P~< z;WtmO%lhToBL0i}yfkaOt?EN=nkLNGuU`ywhI5H)L`iUdT1k0gQ7VIjhO(w-Zen_> zZ(@38a<+nro{^q~f~BRtfrY+-p+a&|W^qZSLvCepNoKNMYO!8QX+eHoiC%Jk?!;Y+ zJAlS%fsM;d&r2*R1)67JkeZlkYGj#gX_9E3W@4U_nw*@Ln38B@k(iuhnUeN2e6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV0RR91EC2ui01N;O000Q30RR2FM=1vc2st?2`}gnPxflQtl zK#X($?!^EA!J9R2&L9AYagPxI0CUbEfbee(004|)0000X1po;D)&Kwy0|5X4006W) zXAJ=W001^@tB7y$s_tQG(OF&F^=!026!9PbDL0Kn*83;+;X q-MiNc0e~3y{+&w!00062006`|_wV1odyHZrfDnVyy?_4#0suROfV)2c diff --git a/core/docs/reference/images/callouts/3.png b/core/docs/reference/images/callouts/3.png deleted file mode 100644 index ef7b70047158970cf4e09f1bab2954d39c2d596b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}^nQF0kK0(Y1u|9Rc(19XFPiEBhjaDG}zd16s2gM)^$re|(qda7?? zdS-IAf{C7yo`r&?rM`iMzJZ}aa#3b+Nu@(>WpPPnvR-PjUP@^}eqM=Qa(?c_U5Yz^ z#%Y0#%S_KpEGY$=XJL?(l#*ybuErX#^g`ttQfwn6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV0RR91EC2ui01N;O000Q30RR2_*Gfu?6iQ0{`}gnPJtY7D07wA= zK#p_&{wVRjGG#0000G0|Nj6TFybZ zHwOR!00=Mu2=Q)CihGPO004kM34k&G{{8#+uM_|PF-idd0001hdvgE)0Kn*84gdfE q0Pwa30Du(t{=Lfq00000005-$_V3@ndz@lGKoEn`y?_4#0suSSP`y|H diff --git a/core/docs/reference/images/callouts/4.png b/core/docs/reference/images/callouts/4.png deleted file mode 100644 index adb8364eb5d21ecdd4086e16110b62ddcb42aa4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}^nQ3r>K)tuC)r#2`iJ>Prt42#Ndx#Uc~1)>aw z3jE@Q4|!9Z%lVv}- zc=48cF7H)t`(Ck`^+mtha~Np7bBSw2NpOBzNqJ&XDuaWDvZiNlVtT4?VtQtBwt|VC zk)DNurKP@sg}#BILUK`NaY>~^Ze?*vX0l#tv0h4PL4IC|UUGi!#9fLzfW~Qojmu2W zODrh`nrE42VU(7fm~5G9U~HM3l#*m_WNcxOXkuz6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV0RR91EC2ui01N;O000Q30RR2_$0-K}2ss$t`}gnPyBr8oqzI7$ zK@4yI{^bCW<{Pv;Y7==^Ow6F-idd5aXYc5Z)*O0Kn*94gdfM qy}MTm0)Q0v{=Lfq00066005-$_V3@nf0S|{KoEn`y?_4#0suQhF}%G1 diff --git a/core/docs/reference/images/callouts/5.png b/core/docs/reference/images/callouts/5.png deleted file mode 100644 index 4d7eb460021e845981861d77614539314f553993..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}^nQEX4g z+-vfUhb0A>b04=Im{6XiQd1v%r%>h0$G8U7E1If8OQ!N~xOYY5h0NDT$p9(iZ?Q&e z18-(+l~J8O`)kc}e&uL$eW&>P-#`~Qm$*ih1m~xflqVLYGB{``YkKA;rl!p+yCFkc(+@-h!Xq*<< zxXkpt#FA2=d1VEBsYynrsitN|Y01eJ$;p;U#>wWX2KP5v&I9V=1L+C? fTFYQ)RAFeOZJ=$?lDoSWD8u0C>gTe~DWM4f^}upZ diff --git a/core/docs/reference/images/callouts/6.gif b/core/docs/reference/images/callouts/6.gif deleted file mode 100644 index d39640707444f5f67b2cd324143c2d6b40d27a40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 968 zcmV;(12_CfNk%w1VGIBa0QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV0RR91EC2ui01N;O000Q30RR2_*Gfu?6iQ0{`}gnPJtY7DU`PP~ zK#p_&{wV<}SN&x`ij1T|-F-iddu;yKe5ciY-0Kn*84gdfs q-MdE!0Du(t{=Lfq00066005-$_V3@ndz^A0KoEn`y?_4#0suR2o4}_4 diff --git a/core/docs/reference/images/callouts/6.png b/core/docs/reference/images/callouts/6.png deleted file mode 100644 index 0ba694af6c07d947d219b45a629bd32c60a0f5fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}^nQ*)Bra@SU# zmiz#bR~{$s2si{S(aY|Z}Vd7tb ouUmn-_&~Y>fYve?8dVq?X&Y!8wB+ut16ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV0RR91EC2ui01N;O000Q30RR2_S4&EY6iQm%`}gnPJt+_{K)?V2 zLXLC){%HZw>fgVA|EvLsajzEu00000z;I3r005M<000000DxM(0001xBL)Bf002n2 z7XttQ00?3L0001hwORlG004kM3jhEBa{QA500000F=_z-0D#dw1ONa40Kn*<5&!^d q)dBzj0Du(t{=E|d00000005*o_wV1of1Gk4K#+pby?_4#0suR4=(v0U diff --git a/core/docs/reference/images/callouts/7.png b/core/docs/reference/images/callouts/7.png deleted file mode 100644 index 472e96f8ac36862c5645732f2fff19d06ee11a8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}^nQu%w%U~xZhnMEEs6JbBSw2NpOBzNqJ&XDuaWDvZiNlVtT4?VtQtBwt|VC zk)DNurKP@sg}#BILUK`NaY>~^Ze?*vX0l#tv0h4PL4IC|UUGi!#9fLzfW~Qojmu2W zODrh`nrCEbVQgk$XkwI@Y+{_8nv`N>YGIaQkz#0QY@Te9lBQ<)awbq0A4pdK&{_sV bqY6VKZ3AtCmfYR7Kp6&4S3j3^P66ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV0RR91EC2ui01N;O000Q30RR2_*Gfu?5K>D0`}gnPJ0$=BKnMW< zK#p_&{s{p9pp-Xjy&wRHajz5r07~vb0B~*&005Mf001E59s~sM)&Kwy0|Nj60BW7{ zW(@%V00=Mu0HEcb6eaK0004kM2><}4dI12?suutNF-iddFy~#05a$R106^)V5C8}$ qoqIu&S`V$cAh@R~F=4@V4jxkzlaQrcFYWK{)(`o5XZnut z=nE4SU2g1ZW%;@@I$>_e3F8a=8WK~|CVXt1DqisQxtIX|`YW_n&?Nh#1gQ}d)$LrYTw(_{nVG)tp2V+#}WG*e^KRLdkoLz7g? qn(IA84Qgo42`r6v<+Hvch>@C7(8A5T-G@yGywn*$#_oy diff --git a/core/docs/reference/images/callouts/9.gif b/core/docs/reference/images/callouts/9.gif deleted file mode 100644 index bc5c8125b03849986c2df04f65f7406235c700a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 968 zcmV;(12_CfNk%w1VGIBa0QUd@000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^8LV0RR91EC2ui01N;O000Q30RR2_*Gfu?5K>y*`}gnPJs|)9K!5-M zK#q6+{wV=~pp~_Ar2qiPajz8s0CT({z;I6s005Mf002;`6#xL%N&x_n0|Nj6d%PjQ zaIY5t00=Mu005!ayL0Di0RVtN2mk;85FkKcjS>I=F-iddAmm;MCI4~&0Kn*84gdgJ q{d>0t0Du(t{=JI<00062006}B_V3@nf0SZCKoEn`y?_4#0suSwcfTJ1 diff --git a/core/docs/reference/images/callouts/9.png b/core/docs/reference/images/callouts/9.png deleted file mode 100644 index a0676d26cc2ff1de12c4ecdeefb44a0d71bc6bde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^JRr;gBp8b2n5}^nQNRqa;^5&H%t0&v*|C|wdb9$wI zR@+N9#RIowg@Uqn&z-__Tzhhz!sG|vTxA7?=O|Y?u(d4T{!RM9c7chr6d%1?R=i16 z?@Ic{f32YJFJnVhX)qGzOMplv!L->5yAlT#}irms+fsQd*FoSE84k zpF44v;trs3T43Wc)AJHbN`dAXo0u6Hr<$gkq?lM38ycjV7+5A5Sr{ayr5c%-n;95g pF*H#D>f!_G3IJNmU}#ifXryhRZP1dtyA~+J;OXk;vd$@?2>@J{cB%jX diff --git a/core/docs/reference/readme.txt b/core/docs/reference/readme.txt deleted file mode 100644 index 6280723d..00000000 --- a/core/docs/reference/readme.txt +++ /dev/null @@ -1,20 +0,0 @@ -This project uses the 'DocBook XSL distribution' for HTML and PDF -generation of project reference documentation. - -This project's build.xml file contains targets to generate the -project reference documentation. - -To generate project documentation, execute one of the following -build targets: - -* doc-all - generate documentation in all supported formats -* doc-pdf - generate the PDF documentation -* doc-html - generate the HTML documentation -* doc-htmlsingle - generate single page HTML documentation -* doc-clean - clean any output directories for docs - -For generation to complete successfully, you must have first extracted -the .jar libraries contained in this archive: - - http://static.springframework.org/spring/files/docbook-reference-libs.zip -... to ${basedir}/docs/reference. If you have not yet done so, download this file -and unzip the contents of the archive into ${basedir}/docs/reference. \ No newline at end of file diff --git a/core/docs/reference/src/basic.xml b/core/docs/reference/src/basic.xml deleted file mode 100644 index c6e0f552..00000000 --- a/core/docs/reference/src/basic.xml +++ /dev/null @@ -1,385 +0,0 @@ - - - Basic Operations - - - Search and Lookup Using AttributesMapper - - In this example we will use an AttributesMapper - to easily build a List of all common names of all person objects. - - - AttributesMapper that returns a single attribute - - package com.example.dao; - -public class PersonDaoImpl implements PersonDao { - private LdapTemplate ldapTemplate; - - public void setLdapTemplate(LdapTemplate ldapTemplate) { - this.ldapTemplate = ldapTemplate; - } - - public List getAllPersonNames() { - return ldapTemplate.search( - "", "(objectclass=person)", - new AttributesMapper() { - public Object mapFromAttributes(Attributes attrs) - throws NamingException { - return attrs.get("cn").get(); - } - }); - } -} - - - The inline implementation of AttributesMapper - just gets the desired attribute value from the - Attributes and returns it. Internally, - LdapTemplate iterates over all entries found, calling - the given AttributesMapper for each entry, and collects - the results in a list. The list is then returned by the - search method. - - Note that the AttributesMapper implementation - could easily be modified to return a full Person - object: - - - AttributesMapper that returns a Person object - - package com.example.dao; - -public class PersonDaoImpl implements PersonDao { - private LdapTemplate ldapTemplate; - ... - private class PersonAttributesMapper implements AttributesMapper { - public Object mapFromAttributes(Attributes attrs) throws NamingException { - Person person = new Person(); - person.setFullName((String)attrs.get("cn").get()); - person.setLastName((String)attrs.get("sn").get()); - person.setDescription((String)attrs.get("description").get()); - return person; - } - } - - public List getAllPersons() { - return ldapTemplate.search("", "(objectclass=person)", new PersonAttributesMapper()); - } -} - - - If you have the distinguished name (dn) that - identifies an entry, you can retrieve the entry directly, without - searching for it. This is called a lookup in Java - LDAP. The following example shows how a lookup results in a Person - object: - - - A lookup resulting in a Person object - - package com.example.dao; - -public class PersonDaoImpl implements PersonDao { - private LdapTemplate ldapTemplate; - ... - public Person findPerson(String dn) { - return (Person) ldapTemplate.lookup(dn, new PersonAttributesMapper()); - } -} - - - This will look up the specified dn and pass the - found attributes to the supplied AttributesMapper, in - this case resulting in a Person object. - - - - Building Dynamic Filters - - We can build dynamic filters to use in searches, using the classes - from the org.springframework.ldap.filter - package. Let's say that we want the following filter: - (&(objectclass=person)(sn=?)), where we want the - ? to be replaced with the value of the parameter - lastName. This is how we do it using the filter support - classes: - - - Building a search filter dynamically - - package com.example.dao; - -public class PersonDaoImpl implements PersonDao { - private LdapTemplate ldapTemplate; - ... - public List getPersonNamesByLastName(String lastName) { - AndFilter filter = new AndFilter(); - filter.and(new EqualsFilter("objectclass", "person")); - filter.and(new EqualsFilter("sn", lastName)); - return ldapTemplate.search( - "", filter.encode(), - new AttributesMapper() { - public Object mapFromAttributes(Attributes attrs) - throws NamingException { - return attrs.get("cn").get(); - } - }); - } -} - - - To perform a wildcard search, it's possible to use the - WhitespaceWildcardsFilter: - - - Building a wildcard search filter - - AndFilter filter = new AndFilter(); -filter.and(new EqualsFilter("objectclass", "person")); -filter.and(new WhitespaceWildcardsFilter("cn", cn)); - - - - - In addition to simplifying building of complex search filters, - the Filter classes also provide proper escaping - of any unsafe characters. This prevents "ldap injection", - where a user might use such characters to inject unwanted operations - into your LDAP operations. - - - - - - Building Dynamic Distinguished Names - - The standard Name - interface represents a generic name, which is basically an ordered - sequence of components. The Name interface also - provides operations on that sequence; e.g., add or - remove. LdapTemplate provides an implementation of the - Name interface: DistinguishedName. - Using this class will greatly simplify building distinguished names, - especially considering the sometimes complex rules regarding escapings and - encodings. As with the Filter classes this helps preventing - potentially malicious data being injected into your LDAP operations. - - - The following example illustrates how - DistinguishedName can be used to dynamically construct - a distinguished name: - - - Building a distinguished name dynamically - - package com.example.dao; - -import org.springframework.ldap.core.support.DistinguishedName; -import javax.naming.Name; - -public class PersonDaoImpl implements PersonDao { - public static final String BASE_DN = "dc=example,dc=com"; - ... - protected Name buildDn(Person p) { - DistinguishedName dn = new DistinguishedName(BASE_DN); - dn.add("c", p.getCountry()); - dn.add("ou", p.getCompany()); - dn.add("cn", p.getFullname()); - return dn; - } -} - - - Assuming that a Person has the following attributes: - - - - - - country - - Sweden - - - - company - - Some Company - - - - fullname - - Some Person - - - - - - The code above would then result in the following distinguished - name: - - cn=Some Person, ou=Some Company, c=Sweden, dc=example, dc=com - - In Java 5, there is an implementation of the Name interface: LdapName. - If you are in the Java 5 world, you might as well use - LdapName. However, you may still use - DistinguishedName if you so wish. - - - - Binding and Unbinding - - - Binding Data - - Inserting data in Java LDAP is called binding. In order to do - that, a distinguished name that uniquely identifies the new entry is - required. The following example shows how data is bound using - LdapTemplate: - - - Binding data using Attributes - - package com.example.dao; - -public class PersonDaoImpl implements PersonDao { - private LdapTemplate ldapTemplate; - ... - public void create(Person p) { - Name dn = buildDn(p); - ldapTemplate.bind(dn, null, buildAttributes(p)); - } - - private Attributes buildAttributes(Person p) { - Attributes attrs = new BasicAttributes(); - BasicAttribute ocattr = new BasicAttribute("objectclass"); - ocattr.add("top"); - ocattr.add("person"); - attrs.put(ocattr); - attrs.put("cn", "Some Person"); - attrs.put("sn", "Person"); - return attrs; - } -} - - - The Attributes building is--while dull and verbose--sufficient for - many purposes. It is, however, possible to simplify the binding - operation further, which will be described in . - - - - Unbinding Data - - Removing data in Java LDAP is called unbinding. A distinguished - name (dn) is required to identify the entry, just as in the binding - operation. The following example shows how data is unbound using - LdapTemplate: - - - Unbinding data - - package com.example.dao; - -public class PersonDaoImpl implements PersonDao { - private LdapTemplate ldapTemplate; - ... - public void delete(Person p) { - Name dn = buildDn(p); - ldapTemplate.unbind(dn); - } -} - - - - - - Modifying - - In Java LDAP, data can be modified in two ways: either using - rebind or - modifyAttributes. - - - Modifying using <literal>rebind</literal> - - A rebind is a very crude way to modify data. - It's basically an unbind followed by a - bind. It looks like this: - - - Modifying using rebind - - package com.example.dao; - -public class PersonDaoImpl implements PersonDao { - private LdapTemplate ldapTemplate; - ... - public void update(Person p) { - Name dn = buildDn(p); - ldapTemplate.rebind(dn, null, buildAttributes(p)); - } -} - - - - - Modifying using <literal>modifyAttributes</literal> - - If only the modified attributes should be replaced, there is a - method called modifyAttributes that takes an array of - modifications: - - - Modifying using modifyAttributes - - package com.example.dao; - -public class PersonDaoImpl implements PersonDao { - private LdapTemplate ldapTemplate; - ... - public void updateDescription(Person p) { - Name dn = buildDn(p); - Attribute attr = new BasicAttribute("description", p.getDescription()) - ModificationItem item = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, attr); - ldapTemplate.modifyAttributes(dn, new ModificationItem[] {item}); - } -} - - - Building Attributes and - ModificationItem arrays is a lot of work, but as you - will see in , the update operations - can be simplified. - - - - - Sample applications - - It is recommended that you review the Spring LDAP sample - applications included in the release distribution for best-practice - illustrations of the features of this library. A description of each - sample is provided below: - - - - spring-ldap-person - the sample demonstrating most - features. - - - - spring-ldap-article - the sample application that was written - to accompany a java.net - article about Spring LDAP. - - - - \ No newline at end of file diff --git a/core/docs/reference/src/configuration.xml b/core/docs/reference/src/configuration.xml deleted file mode 100644 index 9555a24f..00000000 --- a/core/docs/reference/src/configuration.xml +++ /dev/null @@ -1,259 +0,0 @@ - - - Configuration - - - ContextSource Configuration - - There are several properties in AbstractContextSource - (superclass of DirContextSource and LdapContextSource) - that can be used to modify its behaviour. - - - LDAP Server URLs - - The URL of the LDAP server is specified using the url property. - The URL should be in the format ldap://myserver.example.com:389. - For SSL access, use the ldaps protocol and the appropriate port, e.g. - ldaps://myserver.example.com:636 - It is possible to configure multiple alternate LDAP servers using the - urls property. In this case, supply all server urls in a String - array to the urls property. - - - - Base LDAP path - - It is possible to specify the root context for all LDAP operations using the - base property of AbstractContextSource. - When a value has been specified to this property, all Distinguished Names supplied to and received from LDAP operations - will be relative to the LDAP path supplied. This can significantly simplify working against the LDAP - tree; however there are several occations when you will need to have access to the base path. - For more information on this, please refer to - - - - Authentication - - Authenticated contexts are created for both read-only and - read-write operations by default. You specify - userDn and password of the LDAP - user to be used for authentication on the - ContextSource. - - - The userDn needs to be the full - Distinguished Name (DN) of the user. - - - Some LDAP server setups allow anonymous read-only access. If you - want to use anonymous Contexts for read-only operations, set the - anonymousReadOnly property to - true. - - - Custom Authentication Using Acegi - - While the user name (i.e. user DN) and password used for - creating an authenticated Context are static by - default - the ones set on the ContextSource on - startup will be used throughout the lifetime of the - ContextSource - there are however several cases in - which this is not the desired behaviour. A common scenario is that the - principal and credentials of the current user should be used when - executing LDAP operations for that user. The default behaviour can be - modified by supplying a custom AuthenticationSource - implementation to the ContextSource on startup, - instead of explicitly specifying the userDn and - password. The - AuthenticationSource will be queried by the - ContextSource for principal and credentials each - time an authenticated Context is to be - created. - - To use the authentication information of the currently logged in - user using Acegi - Security, use the - AcegiAuthenticationSource: - - - The Spring bean definition for an - AcegiAuthenticationSource - - <beans> - ... - <bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource"> - <property name="url" value="ldap://localhost:389" /> - <property name="base" value="dc=example,dc=com" /> - <property name="authenticationSource" ref="acegiAuthenticationSource" /> - </bean> - - <bean id="acegiAuthenticationSource" - class="org.springframework.ldap.authentication.AcegiAuthenticationSource" /> - ... -</beans> - - - - We don't specify any userDn or - password to our ContextSource - when using an AuthenticationSource - these - properties are needed only when the default behaviour is - used. - - - - When using the AcegiAuthenticationSource - you need to use Acegi's - LdapAuthenticationProvider to authenticate the - users against LDAP. - - - - - Default Authentication - - When using AcegiAuthenticationSource, - authenticated contexts will only be possible to create once the user - is logged in using Acegi. To use default authentication information - when no user is logged in, use the - DefaultValuesAuthenticationSourceDecorator: - - - Configuring a - DefaultValuesAuthenticationSourceDecorator - - <beans> - ... - <bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource"> - <property name="url" value="ldap://localhost:389" /> - <property name="base" value="dc=example,dc=com" /> - <property name="authenticationSource" ref="authenticationSource" /> - </bean> - - <bean id="authenticationSource" - class="org.springframework.ldap.authentication.DefaultValuesAuthenticationSourceDecorator"> - <property name="target" ref="acegiAuthenticationSource" /> - <property name="defaultUser" value="cn=myDefaultUser" /> - <property name="defaultPassword" value="pass" /> - </bean> - - <bean id="acegiAuthenticationSource" - class="org.springframework.ldap.authentication.AcegiAuthenticationSource" /> - ... -</beans> - - - - - - Pooling - - LDAP connection pooling can be turned on/off using the - pooled flag. Default is true. The - configuration of LDAP connection pooling is managed using - System properties, so this needs to be handled - manually. Details of pooling configuration can be found here. - - - - Advanced ContextSource Configuration - - Alternate ContextFactory - - It is possible to configure the ContextFactory that the - ContextSource is to use when creating Contexts using the - contextFactory property. The default value is - com.sun.jndi.ldap.LdapCtxFactory. - - - Custom DirObjectFactory - - As described in , a DirObjectFactory - can be used to translate the Attributes of found Contexts - to a more useful DirContext implementation. This can be - configured using the dirObjectFactory property. You can use - this property if you have your own, custom DirObjectFactory implementation. - The default value is DefaultDirObjectFactory. - - - Custom DirContext Environment Properties - - In some cases the user might want to specify additional environment setup properties - in addition to the ones directly configurable from AbstractContextSource. - Such properties should be set in a Map and supplied to - the baseEnvironmentProperties property. - - - - - LdapTemplate Configuration - - - Ignoring PartialResultExceptions - - Some Active Directory (AD) servers are unable to automatically following - referrals, which often leads to a PartialResultException being - thrown in searches. You can specify that PartialResultException - is to be ignored by setting the ignorePartialResultException - property to true. - This causes all referrals to be ignored, and no notice will be given that - a PartialResultException has been encountered. - There is currently no way of manually following referrals using LdapTemplate. - - - - Obtaining a reference to the base LDAP path - As described above, a base LDAP path may be supplied to the ContextSource, - specifying the root in the LDAP tree to which all operations will be relative. This means that - you will only be working with relative distinguished names throughout your system, which is - typically rather handy. There are however some cases in which you will need to have access - to the base path in order to be able to construct full DNs, relative to the actual root of the LDAP tree. - One example would be when working with LDAP groups (e.g. groupOfNames objectclass), - in which case each group member attribute value will need to be the full DN of the referenced member. - For that reason, Spring LDAP has a mechanism by which any Spring controlled bean may be supplied - the base path on startup. For beans to be notified of the base path, two things need to be in place: - First of all, the bean that wants the base path reference needs to implement the - BaseLdapPathAware interface. Secondly, a BaseLdapPathBeanPostProcessor - needs to be defined in the application context - - Implementing <literal>BaseLdapPathAware</literal> - - package com.example.service; - -public class PersonService implements PersonService, BaseLdapPathAware { - ... - private DistinguishedName basePath; - - public void setBaseLdapPath(DistinguishedName basePath) { - this.basePath = basePath; - } - ... - private DistinguishedName getFullPersonDn(Person person) { - return new DistinguishedName(basePath).append(person.getDn()); - } - ... -} - - - Specifying a <literal>BaseLdapPathBeanPostProcessor</literal> in your <literal>ApplicationContext</literal> - - <beans> - ... - <bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource"> - <property name="url" value="ldap://localhost:389" /> - <property name="base" value="dc=example,dc=com" /> - <property name="acegiAuthenticationSource" ref="authenticationSource" /> - </bean> - ... - <bean class="org.springframework.ldap.core.support.BaseLdapPathBeanPostProcessor" /> -</beans> - - - The default behaviour of the BaseLdapPathBeanPostProcessor is to use the base path of the single - defined BaseLdapPathSource (AbstractContextSource )in the ApplicationContext. - If more than one BaseLdapPathSource is defined, you will need to specify which one to use with the - baseLdapPathSourceName property. - - \ No newline at end of file diff --git a/core/docs/reference/src/contextprocessor.xml b/core/docs/reference/src/contextprocessor.xml deleted file mode 100644 index 9f8bf51c..00000000 --- a/core/docs/reference/src/contextprocessor.xml +++ /dev/null @@ -1,200 +0,0 @@ - - - Processing the DirContext - - - Custom DirContext Pre/Postprocessing - - In some situations, one would like to perform operations on the - DirContext before and after the search operation. The - interface that is used for this is called - DirContextProcessor: - - - public interface DirContextProcessor { - public void preProcess(DirContext ctx) throws NamingException; - public void postProcess(DirContext ctx) throws NamingException; -} - - - The LdapTemplate class has a search method that - takes a DirContextProcessor: - - - public void search(SearchExecutor se, NameClassPairCallbackHandler handler, - DirContextProcessor processor) throws DataAccessException; - - - Before the search operation, the preProcess - method is called on the given DirContextProcessor - instance. After the search has been executed and the resulting - NamingEnumeration has been processed, the - postProcess method is called. This enables a user to - perform operations on the DirContext to be used in the - search, and to check the DirContext when the search has - been performed. This can be very useful for example when handling request - and response controls. - - There are also a few convenience methods for those that don't need a - custom SearchExecutor: - - - public void search(Name base, String filter, - SearchControls controls, NameClassPairCallbackHandler handler, DirContextProcessor processor) - -public void search(String base, String filter, - SearchControls controls, NameClassPairCallbackHandler handler, DirContextProcessor processor) - -public void search(Name base, String filter, - SearchControls controls, AttributesMapper mapper, DirContextProcessor processor) - -public void search(String base, String filter, - SearchControls controls, AttributesMapper mapper, DirContextProcessor processor) - -public void search(Name base, String filter, - SearchControls controls, ContextMapper mapper, DirContextProcessor processor) - -public void search(String base, String filter, - SearchControls controls, ContextMapper mapper, DirContextProcessor processor) - - - - - Implementing a Request Control DirContextProcessor - - The LDAPv3 protocol uses Controls to send and receive additional - data to affect the behavior of predefined operations. In order to simplify - the implementation of a request control - DirContextProcessor, Spring LDAP provides the base - class AbstractRequestControlDirContextProcessor. This - class handles the retrieval of the current request controls from the - LdapContext, calls a template method for creating a - request control, and adds it to the LdapContext. All - you have to do in the subclass is to implement the template method - createRequestControl, and of course the - postProcess method for performing whatever you need to - do after the search. - - - public abstract class AbstractRequestControlDirContextProcessor implements - DirContextProcessor { - - public void preProcess(DirContext ctx) throws NamingException { - ... - } - - public abstract Control createRequestControl(); -} - - A typical DirContextProcessor will be similar to the following: - - - - A request control DirContextProcessor implementation - - package com.example.control; - -public class MyCoolRequestControl extends AbstractRequestControlDirContextProcessor { - private static final boolean CRITICAL_CONTROL = true; - private MyCoolCookie cookie; - ... - public MyCoolCookie getCookie() { - return cookie; - } - - public Control createRequestControl() { - return new SomeCoolControl(cookie.getCookie(), CRITICAL_CONTROL); - } - - public void postProcess(DirContext ctx) throws NamingException { - LdapContext ldapContext = (LdapContext) ctx; - Control[] responseControls = ldapContext.getResponseControls(); - - for (int i = 0; i < responseControls.length; i++) { - if (responseControls[i] instanceof SomeCoolResponseControl) { - SomeCoolResponseControl control = (SomeCoolResponseControl) responseControls[i]; - this.cookie = new MyCoolCookie(control.getCookie()); - } - } - } -} - - - - Make sure you use LdapContextSource when you - use Controls. The Control - interface is specific for LDAPv3 and requires that - LdapContext is used instead of - DirContext. If an - AbstractRequestControlDirContextProcessor subclass is - called with an argument that is not an LdapContext, - it will throw an IllegalArgumentException. - - - - - Paged Search Results - - Some searches may return large numbers of results. When there is no - easy way to filter out a smaller amount, it would be convenient to have - the server return only a certain number of results each time it is called. - This is known as paged search results. Each "page" of - the result could then be displayed at the time, with links to the next and - previous page. Without this functionality, the client must either manually - limit the search result into pages, or retrieve the whole result and then - chop it into pages of suitable size. The former would be rather - complicated, and the latter would be consuming unnecessary amounts of - memory. - - Some LDAP servers have support for the - PagedResultsControl, which requests that the results of - a search operation are returned by the LDAP server in pages of a specified - size. The user controls the rate at which the pages are returned, simply - by the rate at which the searches are called. However, the user must keep - track of a cookie between the calls. The server uses - this cookie to keep track of where it left off the previous time it was - called with a paged results request. - - Spring LDAP provides support for paged results by leveraging the - concept for pre- and postprocessing of an LdapContext that was discussed - in the previous sections. It does so by providing two classes: - PagedResultsRequestControl and - PagedResultsCookie. The - PagedResultsRequestControl class creates a - PagedResultsControl with the requested page size and - adds it to the LdapContext. After the search, it gets - the PagedResultsResponseControl and retrieves two - pieces of information from it: the estimated total result size and a - cookie. This cookie is a byte array containing information that the server - needs the next time it is called with a - PagedResultsControl. In order to make it easy to store - this cookie between searches, Spring LDAP provides the wrapper class - PagedResultsCookie. - - Below is an example of how the paged search results functionality may - be used: - - - Paged results using <literal>PagedResultsRequestControl</literal> - - public PagedResult getAllPersons(PagedResultsCookie cookie) { - PagedResultsRequestControl control = new PagedResultsRequestControl(PAGE_SIZE, cookie); - SearchControls searchControls = new SearchControls(); - searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE); - - List persons = ldapTemplate.search("", "objectclass=person", searchControls, control); - - return new PagedResult(persons, control.getCookie()); - } - - - In the first call to this method, null will be supplied as - the cookie parameter. On subsequent calls the client will need to supply the cookie from - the last search (returned wrapped in the PagedResult) each time the - method is called. When the actual cookie is null (i.e. - pagedResult.getCookie().getCookie() returns null), - the last batch has been returned from the search. - - - \ No newline at end of file diff --git a/core/docs/reference/src/dirobjectfactory.xml b/core/docs/reference/src/dirobjectfactory.xml deleted file mode 100644 index 0892ccc9..00000000 --- a/core/docs/reference/src/dirobjectfactory.xml +++ /dev/null @@ -1,341 +0,0 @@ - - - Simpler Attribute Access and Manipulation with DirContextAdapter - - - Introduction - - A little-known--and probably underestimated--feature of the Java - LDAP API is the ability to register a DirObjectFactory - to automatically create objects from found contexts. One of the reasons - why it is seldom used is that you will need an implementation of - DirObjectFactory that creates instances of a meaningful - implementation of DirContext. The Spring LDAP library - provides the missing pieces: a default implementation of - DirContext called DirContextAdapter, - and a corresponding implementation of DirObjectFactory - called DefaultDirObjectFactory. Used together with - DefaultDirObjectFactory, the - DirContextAdapter can be a very powerful tool. - - - - Search and Lookup Using ContextMapper - - The DefaultDirObjectFactory is registered with - the ContextSource by default, which means that whenever - a context is found in the LDAP tree, its Attributes and - Distinguished Name (DN) will be used to construct a - DirContextAdapter. This enables us to use a - ContextMapper instead of an - AttributesMapper to transform found values: - - - Searching using a ContextMapper - - package com.example.dao; - -public class PersonDaoImpl implements PersonDao { - ... - private static class PersonContextMapper implements ContextMapper { - public Object mapFromContext(Object ctx) { - DirContextAdapter context = (DirContextAdapter)ctx; - Person p = new Person(); - p.setFullName(context.getStringAttribute("cn")); - p.setLastName(context.getStringAttribute("sn")); - p.setDescription(context.getStringAttribute("description")); - return p; - } - } - - public Person findByPrimaryKey( - String name, String company, String country) { - Name dn = buildDn(name, company, country); - return ldapTemplate.lookup(dn, new PersonContextMapper()); - } -} - - - The above code shows that it is possible to retrieve the attributes - directly by name, without having to go through the - Attributes and BasicAttribute - classes. This is particularly useful when working with multi-value attributes. Extracting values from - multi-value attributes normally requires looping through a NamingEnumeration of - attribute values returned from the Attributes implementation. The - DirContextAdapter can do this for you, using the getStringAttributes() - or getObjectAttributes() methods: - - Getting multi-value attribute values using <literal>getStringAttributes()</literal> - - private static class PersonContextMapper implements ContextMapper { - public Object mapFromContext(Object ctx) { - DirContextAdapter context = (DirContextAdapter)ctx; - Person p = new Person(); - p.setFullName(context.getStringAttribute("cn")); - p.setLastName(context.getStringAttribute("sn")); - p.setDescription(context.getStringAttribute("description")); - // The roleNames property of Person is an String array - p.setRoleNames(context.getStringAttributes("roleNames")); - return p; - } -} - - - - - The AbstractContextMapper - Spring LDAP provides an abstract base implementation of ContextMapper, - AbstractContextMapper. This automatically takes care of the casting of the supplied - Object parameter to DirContexOperations. - The PersonContextMapper above can thus be re-written as follows: - - - Using an AbstractContextMapper - - - private static class PersonContextMapper extends AbstractContextMapper { - public Object doMapFromContext(DirContextOperations ctx) { - Person p = new Person(); - p.setFullName(context.getStringAttribute("cn")); - p.setLastName(context.getStringAttribute("sn")); - p.setDescription(context.getStringAttribute("description")); - return p; - } - } - - - - - - - Binding and Modifying Using DirContextAdapter - - While very useful when extracting attribute values, DirContextAdapter is even more - powerful for hiding attribute details when binding and modifying data. - - - Binding - - This is an example of an improved implementation of the create DAO - method. Compare it with the previous implementation in . - - - Binding using <literal>DirContextAdapter</literal> - - package com.example.dao; - -public class PersonDaoImpl implements PersonDao { - ... - public void create(Person p) { - Name dn = buildDn(p); - DirContextAdapter context = new DirContextAdapter(dn); - - context.setAttributeValues("objectclass", new String[] {"top", "person"}); - context.setAttributeValue("cn", p.getFullname()); - context.setAttributeValue("sn", p.getLastname()); - context.setAttributeValue("description", p.getDescription()); - - ldapTemplate.bind(dn, context, null); - } -} - - - Note that we use the DirContextAdapter instance - as the second parameter to bind, which should be a Context. - The third parameter is null, since we're not using any - Attributes. - Also note the use of the setAttributeValues() method when setting the - objectclass attribute values. The objectclass attribute is - multi-value, and similar to the troubles of extracting muti-value attribute data, building multi-value - attributes is tedious and verbose work. Using the setAttributeValues() mehtod you can - have DirContextAdapter handle that work for you. - - - - Modifying - - The code for a rebind would be pretty much - identical to , except - that the method called would be rebind. As we saw in - a more correct approach would be to - build a ModificationItem array containing the actual - modifications you want to do. This would require you to determine the actual - modifications compared to the data present in the LDAP tree. Again, this - is something that DirContextAdapter can help you with; the - DirContextAdapter has the ability to keep track of - its modified attributes. The following example takes advantage of this - feature: - - - Modifying using <literal>DirContextAdapter</literal> - - package com.example.dao; - -public class PersonDaoImpl implements PersonDao { - ... - public void update(Person p) { - Name dn = buildDn(p); - DirContextOperations context = ldapTemplate.lookupContext(dn); - - context.setAttributeValues("objectclass", new String[] {"top", "person"}); - context.setAttributeValue("cn", p.getFullname()); - context.setAttributeValue("sn", p.getLastname()); - context.setAttributeValue("description", p.getDescription()); - - ldapTemplate.modifyAttributes(context); - } -} - - When no mapper is passed to a ldapTemplate.lookup() operation, - the result will be a DirContextAdapter instance. - While the lookup method returns an Object, the convenience - method lookupContext method automatically casts the return value to - a DirContextOperations (the interface that DirContextAdapter implements. - The observant reader will see that we have duplicated code in the - create and update methods. This - code maps from a domain object to a context. It can be extracted to a - separate method: - - - Binding and modifying using DirContextAdapter - - package com.example.dao; - -public class PersonDaoImpl implements PersonDao { - private LdapTemplate ldapTemplate; - - ... - public void create(Person p) { - Name dn = buildDn(p); - DirContextAdapter context = new DirContextAdapter(dn); - mapToContext(p, context); - ldapTemplate.bind(dn, context, null); - } - - public void update(Person p) { - Name dn = buildDn(p); - DirContextOperations context = ldapTemplate.lookupContext(dn); - mapToContext(person, context); - ldapTemplate.modifyAttributes(context); - } - - protected void mapToContext (Person p, DirContextOperations context) { - context.setAttributeValues("objectclass", new String[] {"top", "person"}); - context.setAttributeValue("cn", p.getFullName()); - context.setAttributeValue("sn", p.getLastName()); - context.setAttributeValue("description", p.getDescription()); - } -} - - - - - - A Complete PersonDao Class - - To illustrate the power of Spring LDAP, here is a complete Person - DAO implementation for LDAP in just 68 lines: - - - A complete PersonDao class - - package com.example.dao; - -import java.util.List; - -import javax.naming.Name; -import javax.naming.NamingException; -import javax.naming.directory.Attributes; - -import org.springframework.ldap.core.AttributesMapper; -import org.springframework.ldap.core.ContextMapper; -import org.springframework.ldap.core.LdapTemplate; -import org.springframework.ldap.core.DirContextAdapter; -import org.springframework.ldap.core.support.DistinguishedName; -import org.springframework.ldap.filter.EqualsFilter; - -public class PersonDaoImpl implements PersonDao { - private LdapTemplate ldapTemplate; - - public void setLdapTemplate(LdapTemplate ldapTemplate) { - this.ldapTemplate = ldapTemplate; - } - - public void create(Person person) { - DirContextAdapter context = new DirContextAdapter(); - mapToContext(person, context); - ldapTemplate.bind(buildDn(person), context, null); - } - - public void update(Person person) { - Name dn = buildDn(person); - DirContextOperations context = ldapTemplate.lookupContext(dn); - mapToContext(person, context); - ldapTemplate.modifyAttributes(context); - } - - public void delete(Person person) { - ldapTemplate.unbind(buildDn(person)); - } - - public Person findByPrimaryKey(String name, String company, String country) { - Name dn = buildDn(name, company, country); - return (Person) ldapTemplate.lookup(dn, getContextMapper()); - } - - public List findAll() { - EqualsFilter filter = new EqualsFilter("objectclass", "person"); - return ldapTemplate.search(DistinguishedName.EMPTY_PATH, filter.encode(), getContextMapper()); - } - - protected ContextMapper getContextMapper() { - return new PersonContextMapper(); - } - - protected Name buildDn(Person person) { - return buildDn(person.getFullname(), person.getCompany(), person.getCountry()); - } - - protected Name buildDn(String fullname, String company, String country) { - DistinguishedName dn = new DistinguishedName(); - dn.add("c", country); - dn.add("ou", company); - dn.add("cn", fullname); - return dn; - } - - protected void mapToContext(Person person, DirContextOperations context) { - context.setAttributeValues("objectclass", new String[] {"top", "person"}); - context.setAttributeValue("cn", person.getFullName()); - context.setAttributeValue("sn", person.getLastName()); - context.setAttributeValue("description", person.getDescription()); - } - - private static class PersonContextMapper extends AbstractContextMapper { - public Object doMapFromContext(DirContextOperations context) { - Person person = new Person(); - person.setFullName(context.getStringAttribute("cn")); - person.setLastName(context.getStringAttribute("sn")); - person.setDescription(context.getStringAttribute("description")); - return person; - } - } -} - - - - In several cases the Distinguished Name (DN) of an object is - constructed using properties of the object. E.g. in the above example, - the country, company and full name of the Person are - used in the DN, which means that updating any of these properties will - actually require moving the entry in the LDAP tree using the - rename() operation in addition to updating the - Attribute values. Since this is highly implementation - specific this is something you'll need to keep track of yourself - - either by disallowing the user to change these properties or performing - the rename() operation in your - update() method if needed. - - - \ No newline at end of file diff --git a/core/docs/reference/src/executors.xml b/core/docs/reference/src/executors.xml deleted file mode 100644 index cadc78e8..00000000 --- a/core/docs/reference/src/executors.xml +++ /dev/null @@ -1,148 +0,0 @@ - - - Adding Missing Overloaded API Methods - - - Implementing Custom Search Methods - - While LdapTemplate contains several overloaded - versions of the most common operations in DirContext, - we have not provided an alternative for each and every method signature, - mostly because there are so many of them. We have, however, provided a - means to call whichever DirContext method you want - and still get the benefits that LdapTemplate provides. - - Let's say that you want to call the following DirContext - method: - - NamingEnumeration search(Name name, String filterExpr, Object[] filterArgs, SearchControls ctls) - - There is no corresponding overloaded method in LdapTemplate. The way to solve - this is to use a custom SearchExecutor implementation: - - - public interface SearchExecutor { - public NamingEnumeration executeSearch(DirContext ctx) throws NamingException; -} - - - In your custom executor, you have access to a DirContext - object, which you use to call the method you want. You then provide a handler - that is responsible for mapping attributes and collecting the results. You can - for example use one of the available implementations of - CollectingNameClassPairCallbackHandler, which will collect - the mapped results in an internal list. In order to - actually execute the search, you call the search - method in LdapTemplate that takes an executor and a handler as arguments. Finally, - you return whatever your handler has collected. - - - A custom search method using SearchExecutor and - AttributesMapper - - package com.example.dao; - -public class PersonDaoImpl implements PersonDao { - ... - public List search(final Name base, final String filter, final String[] params, - final SearchControls ctls) { - SearchExecutor executor = new SearchExecutor() { - public NamingEnumeration executeSearch(DirContext ctx) { - return ctx.search(base, filter, params, ctls); - } - }; - - CollectingNameClassPairCallbackHandler handler = - new AttributesMapperCallbackHandler(new PersonAttributesMapper()); - - ldapTemplate.search(executor, handler); - return handler.getList(); - } -} - - - If you prefer the ContextMapper to the - AttributesMapper, this is what it would look - like: - - - A custom search method using SearchExecutor and - ContextMapper - - package com.example.dao; - -public class PersonDaoImpl implements PersonDao { - ... - public List search(final Name base, final String filter, final String[] params, - final SearchControls ctls) { - SearchExecutor executor = new SearchExecutor() { - public NamingEnumeration executeSearch(DirContext ctx) { - return ctx.search(base, filter, params, ctls); - } - }; - - CollectingNameClassPairCallbackHandler handler = - new ContextMapperCallbackHandler(new PersonContextMapper()); - - ldapTemplate.search(executor, handler); - return handler.getList(); - } -} - - - - When using the - ContextMapperCallbackHandler you must - make sure that you have called - setReturningObjFlag(true) on your - SearchControls instance. - - - - - Implementing Other Custom Context Methods - - In the same manner as for custom search methods, - you can actually execute any method in DirContext by - using a ContextExecutor. - - - public interface ContextExecutor { - public Object executeWithContext(DirContext ctx) throws NamingException; -} - - When implementing a custom ContextExecutor, you - can choose between using the executeReadOnly() or the - executeReadWrite() method. Let's say that we want to - call this method: - - - Object lookupLink(Name name) - - It's available in DirContext, but there is no - matching method in LdapTemplate. It's a lookup method, - so it should be read-only. We can implement it like this: - - - A custom DirContext method using ContextExecutor - - package com.example.dao; - -public class PersonDaoImpl implements PersonDao { - ... - public Object lookupLink(final Name name) { - ContextExecutor executor = new ContextExecutor() { - public Object executeWithContext(DirContext ctx) { - return ctx.lookupLink(name); - } - }; - - return ldapTemplate.executeReadOnly(executor); - } -} - - In the same manner you can execute a read-write operation using - the executeReadWrite() method. - - - \ No newline at end of file diff --git a/core/docs/reference/src/images/NamingException.png b/core/docs/reference/src/images/NamingException.png deleted file mode 100644 index 8042b84e0cb8de38b32f00ea8e84810ba8ddbcf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64786 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 l&ocQzY?HljSpcAP` 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

bT!>#wxmfe0(bKhNh;x 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 dUT5C;E5h&9dQ)R - - - - - - - - - - -]> - - - - - - Spring LDAP - Reference Documentation - Version 1.2.1 - December 2007 - - - Mattias - Arthursson - - - Ulrik - Sandberg - - - Eric - Dalquist - - - - - - Copies of this document may be made for your own use and - for distribution to others, provided that you do not - charge any fee for such copies and further provided that - each copy contains this Copyright Notice, whether - distributed in print or electronically. - - - - - - - &preface; - &overview; - &basic; - &dirobjectfactory; - &transactions; - &executors; - &contextprocessor; - &simple; - &configuration; - &pooling; - - \ No newline at end of file diff --git a/core/docs/reference/src/overview.xml b/core/docs/reference/src/overview.xml deleted file mode 100644 index dbd53f14..00000000 --- a/core/docs/reference/src/overview.xml +++ /dev/null @@ -1,417 +0,0 @@ - - - Introduction - - - Overview - - Spring-LDAP (http://www.springframework.org/ldap) - is a library for simpler LDAP programming in Java, built on the same - principles as the JdbcTemplate - in Spring JDBC. It completely eliminates the need to worry about creating - and closing LdapContext and looping through - NamingEnumeration. It also provides a more - comprehensive unchecked Exception hierarchy, built on Spring's - DataAccessException. As a bonus, it also contains - classes for dynamically building LDAP filters and DNs (Distinguished - Names), LDAP attribute management, and client-side LDAP transaction management. - - Consider, for example, a method that should search some storage for - all persons and return their names in a list. Using JDBC, we would create - a connection and execute a query - using a statement. We would then loop over the - result set and retrieve the - column we want, adding it to a list. In contrast, - using Java LDAP, we would create a context and - perform a search using a search - filter. We would then loop over the resulting naming - enumeration and retrieve the attribute we - want, adding it to a list. - - The traditional way of implementing this person name search method - in Java LDAP looks like this, where the code marked as bold actually - performs tasks related to the business purpose of the method: - - - package com.example.dao; - -public class TraditionalPersonDaoImpl implements PersonDao { - public List getAllPersonNames() { - Hashtable env = new Hashtable(); - env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); - env.put(Context.PROVIDER_URL, "ldap://localhost:389/dc=example,dc=com"); - - DirContext ctx; - try { - ctx = new InitialDirContext(env); - } catch (NamingException e) { - throw new RuntimeException(e); - } - - LinkedList list = new LinkedList(); - NamingEnumeration results = null; - try { - SearchControls controls = new SearchControls(); - controls.setSearchScope(SearchControls.SUBTREE_SCOPE); - results = ctx.search("", "(objectclass=person)", controls); - - while (results.hasMore()) { - SearchResult searchResult = (SearchResult) results.next(); - Attributes attributes = searchResult.getAttributes(); - Attribute attr = attributes.get("cn"); - String cn = (String) attr.get(); - list.add(cn); - } - } catch (NameNotFoundException e) { - // The base context was not found. - // Just clean up and exit. - } catch (NamingException e) { - throw new RuntimeException(e); - } finally { - if (results != null) { - try { - results.close(); - } catch (Exception e) { - // Never mind this. - } - } - if (ctx != null) { - try { - ctx.close(); - } catch (Exception e) { - // Never mind this. - } - } - } - return list; - } -} - - - By using the Spring LDAP classes AttributesMapper - and LdapTemplate, we get the exact same functionality - with the following code: - - - package com.example.dao; - -public class PersonDaoImpl implements PersonDao { - private LdapTemplate ldapTemplate; - - public void setLdapTemplate(LdapTemplate ldapTemplate) { - this.ldapTemplate = ldapTemplate; - } - - public List getAllPersonNames() { - return ldapTemplate.search( - "", "(objectclass=person)", - new AttributesMapper() { - public Object mapFromAttributes(Attributes attrs) - throws NamingException { - return attrs.get("cn").get(); - } - }); - } -} - - - The amount of boiler-plate code is significantly less than in the - traditional example. The LdapTemplate version of the - search method performs the search, maps the attributes to a string using - the given AttributesMapper, collects the strings in an - internal list, and finally returns the list. - - Note that the PersonDaoImpl code simply assumes - that it has an LdapTemplate instance, rather than - looking one up somewhere. It provides a set method for this purpose. There - is nothing Spring-specific about this "Inversion of Control". Anyone that - can create an instance of PersonDaoImpl can also set - the LdapTemplate on it. However, Spring provides a very - flexible and easy way of achieving - this. The Spring container can be told to wire up an instance of - LdapTemplate with its required dependencies and inject - it into the PersonDao instance. This wiring can be - defined in various ways, but the most common is through XML: - - - <beans> - <bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource"> - <property name="url" value="ldap://localhost:389" /> - <property name="base" value="dc=example,dc=com" /> - <property name="userDn" value="cn=Manager" /> - <property name="password" value="secret" /> - </bean> - - <bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate"> - <constructor-arg ref="contextSource" /> - </bean> - - <bean id="personDao" class="com.example.dao.PersonDaoImpl"> - <property name="ldapTemplate" ref="ldapTemplate" /> - </bean> -</beans> - - - - - Packaging overview - - At a minimum, to use Spring LDAP you need: - - - - spring-ldap (the Spring LDAP library) - - - - spring-core (miscellaneous utility classes used internally by - the framework) - - - - spring-beans (contains interfaces and classes for manipulating - Java beans) - - - - commons-logging (a simple logging facade, used - internally) - - - - commons-lang (misc utilities, used internally) - - - - - In addition to the required dependencies the following optional dependencies - are required for certain functionality: - - - - acegi-security (For Acegi security integration using AcegiAuthenticationSource) - - - spring-context (If your application is wired up using the Spring Application Context - - adds the ability for application objects to obtain resources using a consistent API. Definitely needed if you are - planning on using the BaseLdapPathBeanPostProcessor.) - - - spring-dao (If you are planning to use the client side compensating transaction support) - - - spring-jdbc (If you are planning to use the client side compensating transaction support) - - - ldapbp (Sun LDAP Booster Pack - if you will use the LDAP v3 Server controls integration) - - - commons-pool (If you are planning to use the pooling functionality) - - - - - - - Package structure - - This section provides an overview of the logical package structure - of the Spring LDAP codebase. The dependencies for each package are clearly - noted. A package dependency noted as (optional) means - that the dependency is needed to compile the package but is optionally - needed at runtime (depending on your use of the package). For example, use - of Spring LDAP together with Acegi Security entails use of the - org.acegisecurity package. - -

- Spring LDAP package structure - - - - - - -
- - - org.springframework.transaction.compensating - - The transaction.compensating package contains - the generic compensating transaction support. This is not LDAP-specific - or JNDI-specific in any way. - - - - Dependencies: commons-logging - - - - - - org.springframework.ldap - - The ldap package contains the exceptions of - the library. These exceptions form an unchecked hierarchy that mirrors - the NamingException hierarchy. - - - - Dependencies: spring-core - - - - - - org.springframework.ldap.core - - The ldap.core package contains the central - abstractions of the library. These abstractions include - AuthenticationSource, ContextSource, DirContextProcessor, and - NameClassPairCallbackHandler. This package also contains the central - class LdapTemplate, plus various mappers and executors. - - - - Dependencies: ldap, ldap.support, spring-beans, - commons-lang, commons-logging - - - - - - org.springframework.ldap.core.support - - The ldap.core.support package contains - supporting implementations of some of the core interfaces. - - - - Dependencies: ldap.core, ldap.support, spring-core, - spring-beans, spring-context (optional), commons-lang, commons-logging - - - - - - org.springframework.ldap.support - - The ldap.support package contains supporting - utilities, like the exception translation mechanism. - - - - Dependencies: ldap, spring-core, commons-logging - - - - - - org.springframework.ldap.authentication - - The ldap.authentication package contains an - implementation of the AuthenticationSource interface that can be used - with Acegi Security, - as well as related helper classes. - - - - Dependencies: ldap.core, acegi-security (optional), - spring-beans, commons-lang, commons-logging - - - - - - org.springframework.ldap.control - - The ldap.control package contains an abstract - implementation of the DirContextProcessor interface that can be used as - a basis for processing RequestControls and ResponseControls. There is - also a concrete implementation that handles paged search results. The - LDAP Booster - Pack is used to get support for controls. - - - - Dependencies: ldap, ldap.core, LDAP booster pack (optional), spring-core, - commons-lang, commons-logging - - - - - - org.springframework.ldap.filter - - The ldap.filter package contains the Filter - abstraction and several implementations of it. - - - - Dependencies: ldap.core, commons-lang - - - - - - org.springframework.ldap.transaction.compensating - - The ldap.transaction.compensating package contains the - core LDAP-specific implementation of compensating transactions. - - - - Dependencies: ldap, ldap.core, transaction.compensating, - spring-core, commons-lang, commons-logging - - - - - - org.springframework.ldap.transaction.compensating.manager - - The ldap.transaction.compensating.manager package contains the - core implementation classes for client-side compensating transactions. - - - - Dependencies: ldap, ldap.core, ldap.transaction.compensating, - ldap.transaction.compensating.support, transaction.compensating, - spring-dao (optional), spring-jdbc (optional), commons-logging - - - - - - org.springframework.ldap.transaction.compensating.support - - The ldap.transaction.compensating.support package contains - useful helper classes for client-side compensating transactions. - - - - Dependencies: ldap.core, ldap.transaction.compensating - - - - - For the exact list of jar dependencies, see the Spring LDAP Ivy dependency manager descriptor - located within the Spring LDAP distribution at - spring-ldap/ivy.xml - - - - Support - - Spring LDAP 1.2.1 is supported on Spring 1.2.8 or later, including - 2.0.x. - - The community support forum is located at http://forum.springframework.org, - and the project web page is http://www.springframework.org/ldap. - - \ No newline at end of file diff --git a/core/docs/reference/src/pooling.xml b/core/docs/reference/src/pooling.xml deleted file mode 100644 index 2df9a509..00000000 --- a/core/docs/reference/src/pooling.xml +++ /dev/null @@ -1,550 +0,0 @@ - - - - Pooling Support - - - Introduction - - - Pooling LDAP connections helps mitigate the overhead of - creating a new LDAP connection for each LDAP interaction. - While - - Java LDAP pooling support - - exists it is limited in its configuration options and - features, such as connection validation and pool - maintenance. Spring LDAP provides support for detailed pool - configuration on a per- - ContextSource - basis. - - - - Pooling support is provided by - PoolingContextSource - which can wrap any - ContextSource - and pool both read-only and read-write - DirContext - objects. - - Jakarta Commons-Pool - - is used to provide the underlying pool implementation. - - - - - DirContext Validation - - - Validation of pooled connections is the primary motivation - for using a custom pooling library versus the JDK provided - LDAP pooling functionality. Validation allows pooled - DirContext - connections to be checked to ensure they are still properly - connected and configured when checking them out of the pool, - in to the pool or while idle in the pool - - - - The - DirContextValidator - interface is used by the - PoolingContextSource - for validation and - DefaultDirContextValidator - is provided as the default validation implementation. - DefaultDirContextValidator - does a - - DirContext.search(String, String, SearchControls) - - , with an empty name, a filter of - "objectclass=*" - and - SearchControls - set to limit a single result with the only the objectclass - attribute and a 500ms timeout. If the returned - NamingEnumeration - has results the - DirContext - passes validation, if no results are returned or an - exception is thrown the - DirContext - fails validation. The - DefaultDirContextValidator - should work with no configuration changes on most LDAP - servers and provide the fastest way to validate the - DirContext - . - - - - - Pool Properties - - - The following properties are available on the - PoolingContextSource - for configuration of the DirContext pool. The - contextSource - property must be set and the - dirContextValidator - property must be set if validation is enabled, all other - properties are optional. - - - - Pooling Configuration Properties - - - - - - - - - - Parameter - - Default - - Description - - - - - - - contextSource - - - - null - - - - The - ContextSource - implementation to get - DirContext - s from to populate the pool. - - - - - - dirContextValidator - - - - null - - - - The - DirContextValidator - implementation to use when validating - connections. This is required if - testOnBorrow - , - testOnReturn - , or - testWhileIdle - options are set to - true - . - - - - - - maxActive - - - - 8 - - - - The maximum number of active connections of - each type (read-only|read-write) that can be - allocated from this pool at the same time, - or non-positive for no limit. - - - - - - maxTotal - - - - -1 - - - - The overall maximum number of active - connections (for all types) that can be - allocated from this pool at the same time, - or non-positive for no limit. - - - - - - maxIdle - - - - 8 - - - - The maximum number of active connections of - each type (read-only|read-write) that can - remain idle in the pool, without extra ones - being released, or non-positive for no - limit. - - - - - - minIdle - - - - 0 - - - - The minimum number of active connections of - each type (read-only|read-write) that can - remain idle in the pool, without extra ones - being created, or zero to create none. - - - - - - maxWait - - - - -1 - - - - The maximum number of milliseconds that the - pool will wait (when there are no available - connections) for a connection to be returned - before throwing an exception, or - non-positive to wait indefinitely. - - - - - - whenExhaustedAction - - - - 1 (BLOCK) - - - - Specifies the behaviour when the pool is - exhausted. - - - - The - FAIL (0) - option will throw a - - NoSuchElementException - - when the pool is exhausted. - - - - - - The - BLOCK (1) - option will wait until a new - object is available. If - maxWait - is positive a - - NoSuchElementException - - is thrown if no new object is - available after the - maxWait - time expires. - - - - - - The - GROW (2) - option will create and return a - new object (essentially making - maxActive - meaningless). - - - - - - - - - testOnBorrow - - - - false - - - - The indication of whether objects will be - validated before being borrowed from the - pool. If the object fails to validate, it - will be dropped from the pool, and an - attempt to borrow another will be made. - - - - - - testOnReturn - - - - false - - - - The indication of whether objects will be - validated before being returned to the pool. - - - - - - testWhileIdle - - - - false - - - - The indication of whether objects will be - validated by the idle object evictor (if - any). If an object fails to validate, it - will be dropped from the pool. - - - - - - - timeBetweenEvictionRunsMillis - - - - - -1 - - - - The number of milliseconds to sleep between - runs of the idle object evictor thread. When - non-positive, no idle object evictor thread - will be run. - - - - - - numTestsPerEvictionRun - - - - 3 - - - - The number of objects to examine during each - run of the idle object evictor thread (if - any). - - - - - - - minEvictableIdleTimeMillis - - - - - 1000 * 60 * 30 - - - - The minimum amount of time an object may sit - idle in the pool before it is eligible for - eviction by the idle object evictor (if - any). - - - - -
-
- - - Configuration - - - Configuring pooling should look very familiar if you're used - to Jakarta Commons-Pool or Commons-DBCP. You will first - create a normal - ContextSource - then wrap it in a - PoolingContextSource - . - - - ... - - - - - - - - - - - - ... - -]]> - - In a real world example you would probably configure the - pool options and enable connection validation; the above - serves as an example to demonstrate the general idea. - - - Ensure that the - pooled - property is set to - false - on any - ContextSource - that will be wrapped in a - PoolingContextSource - . The - PoolingContextSource - must be able to create new connections when needed - and if - pooled - is set to - true - that may not be possible. - - - - - You'll notice that the actual - ContextSource - gets an id with a "Target" suffix. The bean you will - actually refer to is the - PoolingContextSource - that wraps the target - contextSource - - - - - - Validation Configuration - - - Adding validation and a few pool configuration tweaks to - the above example is straight forward. Inject a - DirContextValidator - and set when validation should occur and the pool is - ready to go. - - - ... - - - - - - - - - - - - - - - - - ... - -]]> - - The above example will test each - DirContext - before it is passed to the client application and test - DirContext - s that have been sitting idle in the pool. - - - - - - Known Issues - - - Custom Authentication - - - The PoolingContextSource assumes that all - DirContext objects retrieved from - ContextSource.getReadOnlyContext() will have - the same environment and likewise that all - DirContext objects retrieved from - ContextSource.getReadWriteContext() will - have the same environment. This means that wrapping a - LdapContextSource configured with an - AuthenticationSource in a - PoolingContextSource will not function - as expected. The pool would be populated using the credentials - of the first user and unless new connections were needed - subsequent context requests would not be filled for the user - specified by the AuthenticationSource for - the requesting thread. - - - -
\ No newline at end of file diff --git a/core/docs/reference/src/preface.xml b/core/docs/reference/src/preface.xml deleted file mode 100644 index b0a97605..00000000 --- a/core/docs/reference/src/preface.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - Preface - - The Java Naming and Directory Interface (JNDI) is for LDAP programming - what Java Database Connectivity (JDBC) is for SQL programming. There are - several similarities between JDBC and JNDI/LDAP (Java LDAP). Despite - being two completely different APIs with different pros and cons, they - share a number of less flattering characteristics: - - - - They require extensive plumbing code, even to perform the simplest of tasks. - - - All resources need to be correctly closed, no matter what happens. - - - Exception handling is difficult. - - - - The above points often lead to massive code duplication in common usages - of the APIs. As we all know, code duplication is one of the worst code smells. - All in all, it boils down to this: JDBC and LDAP programming in Java are both - incredibly dull and repetitive. - - - Spring JDBC, a part of the Spring framework, provides excellent utilities for - simplifying SQL programming. We need a similar framework for Java LDAP programming. - - diff --git a/core/docs/reference/src/simple.xml b/core/docs/reference/src/simple.xml deleted file mode 100644 index 967cbe71..00000000 --- a/core/docs/reference/src/simple.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - Java 5 Support - - - SimpleLdapTemplate - - As of version 1.3 Spring LDAP includes the spring-ldap-core-tiger.jar distributable, which adds - a thin layer of Java 5 functionality on top of Spring LDAP. - - The SimpleLdapTemplate class adds search and lookup methods that take a - ParameterizedContextMapper, adding generics support to these methods. - - ParametrizedContextMapper is a typed version of ContextMapper, - which simplifies working with searches and lookups: - - Using <literal>ParameterizedContextMapper</literal> - public List<Person> getAllPersons(){ - return simpleLdapTemplate.search("", "(objectclass=person)", - new ParameterizedContextMapper<Person>() { - public Person mapFromContext(Object ctx) { - DirContextAdapter adapter = (DirContextAdapter) ctx; - Person person = new Person(); - // Fill the domain object with data from the DirContextAdapter - - return person; - } - }; -} - - - - - diff --git a/core/docs/reference/src/transactions.xml b/core/docs/reference/src/transactions.xml deleted file mode 100644 index 4a6952fd..00000000 --- a/core/docs/reference/src/transactions.xml +++ /dev/null @@ -1,223 +0,0 @@ - - - - Transaction Support - - - Introduction - - Programmers used to working with relational databases coming to the LDAP - world often express surprise to the fact that there is no notion of transactions. - It is not specified in the protocol, and thus no servers support it. - Recognizing that this may be a major problem, Spring LDAP provides support for client-side, - compensating transactions on LDAP resources. - - LDAP transaction support is provided by ContextSourceTransactionManager, a - PlatformTransactionManager implementation that manages Spring transaction - support for LDAP operations. Along with its collaborators it keeps track of the LDAP operations - performed in a transaction, making record of the state before each operation and taking steps to - restore the initial state should the transaction need to be rolled back. - In addition to the actual transaction management, Spring LDAP transaction support also - makes sure that the same DirContext instance will be used throughout the same transaction, - i.e. the DirContext will not actually be closed until the transaction is finished, - allowing for more efficient resources usage. - - It is important to note that while the approach used by Spring LDAP to provide transaction support - is sufficient for many cases it is by no means "real" transactions in the traditional sense. - The server is completely unaware of the transactions, so e.g. if the connection is broken there will - be no hope to rollback the transaction. While this should be carefully considered it should also be noted - that the alternative will be to operate without any transaction support whatsoever; this is pretty much - as good as it gets. - The client side transaction support will add some overhead in addition to the work required - by the original operations. While this overhead should not be something to worry about in most cases, - if your application will not perform several LDAP operations within the same - transaction (e.g. a modifyAttributes followed by a rebind), or - if transaction synchronization with a JDBC data source is not required (see below) there will be nothing to gain - by using the LDAP transaction support. - - - - - Configuration - - Configuring Spring LDAP transactions should look very familiar if you're used to configuring Spring transactions. - You will create a TransactionManager instance and wrap your target object using a - TransactionProxyFactoryBean. In addition to this, you will also need to wrap your - ContextSource in a TransactionAwareContextSourceProxy. - - <beans> - ... - <bean id="contextSourceTarget" class="org.springframework.ldap.core.support.LdapContextSource"> - <property name="url" value="ldap://localhost:389" /> - <property name="base" value="dc=example,dc=com" /> - <property name="userDn" value="cn=Manager" /> - <property name="password" value="secret" /> - </bean> - - <bean id="contextSource" - class="org.springframework.ldap.transaction.compensating.manager.TransactionAwareContextSourceProxy"> - <constructor-arg ref="contextSourceTarget" /> - </bean> - - <bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate"> - <constructor-arg ref="contextSource" /> - </bean> - - <bean id="transactionManager" - class="org.springframework.ldap.transaction.compensating.manager.ContextSourceTransactionManager"> - <constructor-arg ref="contextSource" /> - </bean> - - <bean id="myDataAccessObjectTarget" class="com.example.MyDataAccessObject"> - <property name="ldapTemplate" ref="ldapTemplate" /> - </bean> - - <bean id="myDataAccessObject" - class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> - <property name="transactionManager" ref="transactionManager" /> - <property name="target" ref="myDataAccessObjectTarget" /> - <property name="transactionAttributes"> - <props> - <prop key="*">PROPAGATION_REQUIRES_NEW</prop> - </props> - </property> - </bean> - ... - - In a real world example you would probably apply the transactions on the service object level - rather than the DAO level; the above serves as an example to demonstrate the general idea. - You'll notice that the actual ContextSource and DAO instances get ids with a - "Target" suffix. The beans you will actually refer to are the Proxies that are created - around the targets; contextSource and myDataAccessObject - - - - JDBC Transaction Integration - A common use case when working against LDAP is that some of the data is stored in the LDAP tree, but - other data is stored in a relational database. In this case, transaction support becomes even more important, - since the update of the different resources should be synchronized. - While actual XA transactions is not supported, support is provided to conceptually wrap JDBC and LDAP - access within the same transaction using the ContextSourceAndDataSourceTransactionManager. - A DataSource and a ContextSource is supplied to the - ContextSourceAndDataSourceTransactionManager, which will then manage the two transactions, - virtually as if they were one. When performing a commit, the JDBC part of the operation will always - be performed first, allowing both transactions to be rolled back should the JDBC commit fail. The JDBC - part of the transaction is managed exactly as in DataSourceTransactionManager, except that - nested transactions is not supported. - Once again it should be noted that the provided support is all client side. The wrapped transaction is not - an XA transaction. No two-phase as such commit is performed, as the LDAP server will be unable to vote on its outcome. - Once again, however, for the majority of cases the supplied support will be sufficient. - - - Hibernate Transaction Integration - If Hibernate is used for relational database persistence, transansaction integration can be achieved using - ContextSourceAndHibernateTransactionManager. The general idea is exactly the same - as for JDBC integration, only integratino is made against an underlying HibernateTransactionManager - rather than a DataSourceTransactionManager. - - - LDAP Compensating Transactions Explained - Spring LDAP manages compensating transactions by making record of the state in the LDAP tree - before each modifying operation (bind, unbind, rebind, - modifyAttributes, and rename). - This enables the system - to perform compensating operations should the transaction need to be rolled back. In many cases the - compensating operation is pretty straightforward. E.g. the compensating rollback operation for a - bind operation will quite obviously be to unbind the entry. Other operations however require - a different, more complicated approach because of some particular characteristics of LDAP databases. Specifically, - it is not always possible to get the values of all Attributes of an entry, making the above - strategy insufficient for e.g. an unbind operation. - This is why each modifying operation performed within a Spring LDAP managed transaction is internally - split up in four distinct operations - a recording operation, a preparation operation, a commit operation, - and a rollback operation. The specifics for each LDAP operation is described in the table below: - - - - - - - - - - LDAP Operation - Recording - Preparation - Commit - Rollback - - - - - bind - Make record of the DN of the entry to bind. - Bind the entry. - No operation. - Unbind the entry using the recorded DN. - - - rename - Make record of the original and target DN. - Rename the entry. - No operation. - Rename the entry back to its original DN. - - - unbind - Make record of the original DN and calculate a temporary DN. - Rename the entry to the temporary location. - Unbind the temporary entry. - Rename the entry from the temporary location back to its original DN. - - - rebind - Make record of the original DN and the new Attributes, and calculate a temporary DN. - Rename the entry to a temporary location. - Bind the new Attributes at the original DN, and unbind the original entry - from its temporary location. - Rename the entry from the temporary location back to its original DN. - - - modifyAttributes - Make record of the DN of the entry to modify and calculate compensating ModificationItems - for the modifications to be done. - Perform the modifyAttributes operation. - No operation. - Perform a modifyAttributes operation using the calculated compensating - ModificationItems. - - - -
- A more detailed description of the internal workings of the Spring LDAP transaction support is available in the - javadocs. - - Renaming Strategies - As described in the table above, the transaction management of some operations require the original entry affected - by the operation to be temporarily renamed before the actual modification can be made in the commit. - The manner in which the temporary DN of the entry is calculated is managed by a TempEntryRenamingStrategy - supplied to the ContextSourceTransactionManager. Two implementations are supplied with Spring LDAP, - but if specific behaviour is required a custom implementation can easily be implemented by the user. The - provided TempEntryRenamingStrategy implementations are: - - DefaultTempEntryRenamingStrategy (the default). Adds a suffix to the least significant - part of the entry DN. E.g. for the DN cn=john doe, ou=users, this strategy would return the - temporary DN cn=john doe_temp, ou=users. The suffix is configurable using the tempSuffix - property - DifferentSubtreeTempEntryRenamingStrategy. Takes the least significant part of the DN - and appends a subtree DN to this. This makes all temporary entries be placed at a specific location in the LDAP tree. - The temporary subtree DN is configured using the subtreeNode property. E.g., if - subtreeNode is ou=tempEntries and the original DN of the entry is - cn=john doe, ou=users, the temporary DN will be cn=john doe, ou=tempEntries. - Note that the configured subtree node needs to be present in the LDAP tree. - - - There are some situations where the DefaultTempEntryRenamingStrategy will not work. E.g. if your are planning - to do recursive deletes you'll need to use DifferentSubtreeTempEntryRenamingStrategy. This is because - the recursive delete operation actually consists of a depth-first delete of each node in the sub tree individually. - Since it is not allowed to rename an entry that has any children, and DefaultTempEntryRenamingStrategy would - leave each node in the same subtree (with a different name) in stead of actually removing it, this operation would fail. - When in doubt, use DifferentSubtreeTempEntryRenamingStrategy. - - -
-
\ No newline at end of file diff --git a/core/docs/reference/styles/fopdf.xsl b/core/docs/reference/styles/fopdf.xsl deleted file mode 100644 index d47be44b..00000000 --- a/core/docs/reference/styles/fopdf.xsl +++ /dev/null @@ -1,475 +0,0 @@ - - - - - - - -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Copyright ©right; 2005-2006 - - - , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -5em - -5em - - - - - - - - - - - Spring LDAP () - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bold - - - - - - - - - - - - - - - - - - - - - - - - - - - 1 - 0 - 1 - - 1 - - - - - - book toc - - - - 2 - - - - - - - - - - 0 - 0 - 0 - - - 5mm - 10mm - 10mm - - 15mm - 10mm - 0mm - - 18mm - 18mm - - - 0pc - - - - - justify - false - - - 11 - 8 - - - 1.4 - - - - - - - 0.8em - - - - - - 17.4cm - - - - 4pt - 4pt - 4pt - 4pt - - - - 0.1pt - 0.1pt - - - - - 1 - - - - - - - - left - bold - - - pt - - - - - - - - - - - - - - - 0.8em - 0.8em - 0.8em - - - pt - - 0.1em - 0.1em - 0.1em - - - 0.6em - 0.6em - 0.6em - - - pt - - 0.1em - 0.1em - 0.1em - - - 0.4em - 0.4em - 0.4em - - - pt - - 0.1em - 0.1em - 0.1em - - - - - bold - - - pt - - false - 0.4em - 0.6em - 0.8em - - - - - - - - - pt - - - - - 1em - 1em - 1em - #444444 - solid - 0.1pt - 0.5em - 0.5em - 0.5em - 0.5em - 0.5em - 0.5em - - - - 1 - - #F0F0F0 - - - - - - 0 - 1 - - - 90 - - - - - '1' - &admon_gfx_path; - - - - - - figure after - example before - equation before - table before - procedure before - - - - 1 - - - - 0.8em - 0.8em - 0.8em - 0.1em - 0.1em - 0.1em - - - - - - - - - - - - - - - - - diff --git a/core/docs/reference/styles/html.css b/core/docs/reference/styles/html.css deleted file mode 100644 index c603be90..00000000 --- a/core/docs/reference/styles/html.css +++ /dev/null @@ -1,270 +0,0 @@ -BODY { - text-align: justify; - margin-right: 2em; - margin-left: 2em; -} - -A[accesskey^="p"] { - font-family: Verdana, Arial, helvetica, sans-serif; - font-size: 12px; - color: #003399; -} - -A[accesskey^="u"] { - font-family: Verdana, Arial, helvetica, sans-serif; - font-size: 12px; - color: #003399; -} - -A[accesskey^="h"] { - font-family: Verdana, Arial, helvetica, sans-serif; - font-size: 12px; - color: #003399; -} - -A[accesskey^="n"] { - font-family: Verdana, Arial, helvetica, sans-serif; - font-size: 12px; - color: #003399; -} - -A { - color: #003399; - font-family: Verdana, Arial, helvetica, sans-serif; - font-size: 12px; -} - -A:active { - color: #003399; -} - -A:visited { - color: #888888; -} - -P { - font-family: Verdana, Arial; -} - -DT { - font-family: Verdana, Arial; - font-size: 12px; -} - -P, DL, DT, DD, BLOCKQUOTE { - color: #000000; - margin-bottom: 3px; - margin-top: 3px; - padding-top: 0px; -} - -OL, UL, P { - margin-top: 6px; - margin-bottom: 6px; -} - -P, BLOCKQUOTE { - font-size: 90%; -} - -P.releaseinfo { - font-size: 100%; - font-weight: bold; - font-family: Verdana, Arial, helvetica, sans-serif; - padding-top: 10px; -} - -P.pubdate { - font-size: 120%; font-weight: bold; - font-family: Verdana, Arial, helvetica, sans-serif; -} - -td { - font-size: 80%; -} - -TD, TH, SPAN { - color: #000000; -} - -TD[width^="40%"] { - font-family: Verdana, Arial, helvetica, sans-serif; - font-size: 12px; - color: #003399; -} - -TABLE[summary^="Navigation header"] tbody tr th[colspan^="3"] { - font-family: Verdana, Arial, helvetica, sans-serif; -} - -BLOCKQUOTE { - margin-right: 0px; -} - -H1, H2, H3, H4, H5, H6 { - color: #000000; - font-weight:500; - margin-top:0px; - padding-top:14px; - font-family: Verdana, Arial, helvetica, sans-serif; - margin-bottom: 0px; -} - -H2.title { - font-weight:800; - margin-bottom: 8px; -} - -H2.subtitle { - font-weight:800; - margin-bottom: 20px; -} - -.firstname, .surname { - font-size: 12px; - font-family: Verdana, Arial, helvetica, sans-serif; -} - -TABLE { - border-collapse: collapse; - border-spacing:0; - border: 1px thin black; - empty-cells: hide; - margin: 10px 0px 30px 50px; - width: 90%; -} - -div.table { - margin: 30px 0 30 0; - border: 1px dashed gray; - padding: 10px; -} - -div.table > p.title { - padding-left: 10px; -} - -table[summary^="Navigation footer"] { - border-collapse: collapse; - border-spacing:0; - border: 1px thin black; - empty-cells: hide; - margin: 0px; - width: 100%; -} - -table[summary^="Note"], table[summary^="Warning"], table[summary^="Tip"] { - border-collapse: collapse; - border-spacing:0; - border: 1px thin black; - empty-cells: hide; - margin: 10px 0 10 -20; - width: 100%; -} - -TD { - padding: 4pt; - font-family: Verdana, Arial, helvetica, sans-serif; -} - -div.warning TD { - text-align: justify; -} - -H1 { - font-size: 150%; -} -H2 { - font-size: 110%; -} -H3 { - font-size: 100%; font-weight: bold; -} -H4 { - font-size: 90%; font-weight: bold; -} -H5 { - font-size: 90%; font-style: italic; -} -H6 { - font-size: 100%; font-style: italic; -} - -TT { - font-size: 110%; - font-family: "Courier New", Courier, monospace; - color: #000000; -} - -.navheader, .navfooter { - background-color: #e4eff3; -} - -PRE { - font-size: 110%; - padding: 5px; - border-style: solid; - border-width: 1px; - border-color: #CCCCCC; - background-color: #F4F4F4; -} - -UL, OL, LI { - list-style: disc; -} - -HR { - width: 100%; - height: 1px; - background-color: #CCCCCC; - border-width: 0px; - padding: 0px; - color: #CCCCCC; -} - -.variablelist { - padding-top: 10; - padding-bottom:10; - margin:0; -} - -.term { - font-weight:bold; -} - -.mediaobject { - padding-top: 30px; - padding-bottom: 30px; -} - -.legalnotice { - font-family: Verdana, Arial, helvetica, sans-serif; - font-size: 12px; - font-style: italic; -} - -.sidebar { - float: right; - margin: 10px 0px 10px 30px; - padding: 10px 20px 20px 20px; - width: 33%; - border: 1px solid black; - background-color: #F4F4F4; - font-size: 14px; -} - -.programlisting * .classname { - font-size: 95%; -} - -.programlisting * .interfacename { - font-size: 95%; -} - -.programlisting * .literal { - font-size: 95%; -} - -.property { - font-family: "Courier New", Courier, monospace; -} diff --git a/core/docs/reference/styles/html.xsl b/core/docs/reference/styles/html.xsl deleted file mode 100644 index 0b35acad..00000000 --- a/core/docs/reference/styles/html.xsl +++ /dev/null @@ -1,100 +0,0 @@ - - - - - -]> - - - - - - - - ../styles/html.css - - - 1 - 0 - 1 - 0 - - - - - - book toc - - - - 3 - - - - - 1 - - - - - - - 1 - &callout_gfx_path; - - - 90 - - - - - '1' - &admon_gfx_path; - - - - - figure after - example before - equation before - table before - procedure before - - - - , - - - - - - - - -
-

Authors

-

- -

-
- -
diff --git a/core/docs/reference/styles/html_chunk.xsl b/core/docs/reference/styles/html_chunk.xsl deleted file mode 100644 index 258b97ce..00000000 --- a/core/docs/reference/styles/html_chunk.xsl +++ /dev/null @@ -1,103 +0,0 @@ - - - - - -]> - - - - '5' - '1' - ../styles/html.css - - 1 - 0 - 1 - 0 - - - - book toc - - - 3 - - - 1 - - - - - 1 - &callout_gfx_path; - - 90 - - - '1' - &admon_gfx_path; - - - - figure after - example before - equation before - table before - procedure before - - - - , - - - - - - - - -
-

Authors

-

- -

-
- - - - -
- - - - - 1 - - diff --git a/core/docs/reference/styles/tld.to.docbook.xsl b/core/docs/reference/styles/tld.to.docbook.xsl deleted file mode 100644 index b0823a14..00000000 --- a/core/docs/reference/styles/tld.to.docbook.xsl +++ /dev/null @@ -1,197 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - -intro - - Introduction - - - - This appendix describes the - - - - tag library descriptor. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The - - - - tag - - - - - - - Attributes - - - - 4 - - - - center - - - - - center - - - - - center - - - - - center - - - - - - - center - - Attribute - - - - center - - Required? - - - - center - - Runtime Expression? - - - - center - - Description - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . - - - diff --git a/core/docs/reference/styles/xsd.to.docbook.xsl b/core/docs/reference/styles/xsd.to.docbook.xsl deleted file mode 100644 index 4a9bb86d..00000000 --- a/core/docs/reference/styles/xsd.to.docbook.xsl +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - -intro - - - Introduction - - - - - This appendix describes the - - - - schema. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The - - - - element - - - [TODO : insert the description of the element here] - - - - - - - . - - - diff --git a/core/docs/upgrade/src/readme.txt b/core/docs/upgrade/src/readme.txt deleted file mode 100644 index fecf1c5c..00000000 --- a/core/docs/upgrade/src/readme.txt +++ /dev/null @@ -1,19 +0,0 @@ -This project uses the 'DocBook XSL distribution' for HTML and PDF -generation of project upgrade documentation. - -This project's build.xml file contains targets to generate the -project upgrade documentation. - -To generate project documentation, execute one of the following -build targets: - -* upgrade-all - generate documentation in all supported formats -* upgrade-pdf - generate the PDF documentation -* upgrade-html - generate the HTML documentation -* upgrade-clean - clean any output directories for docs - -For generation to complete successfully, you must have first extracted -the .jar libraries contained in this archive: - - http://static.springframework.org/spring/files/docbook-reference-libs.zip -... to ${basedir}/docs/reference. If you have not yet done so, download this file -and unzip the contents of the archive into ${basedir}/docs/reference. diff --git a/core/docs/upgrade/src/upgrade.xml b/core/docs/upgrade/src/upgrade.xml deleted file mode 100644 index 4c131aa2..00000000 --- a/core/docs/upgrade/src/upgrade.xml +++ /dev/null @@ -1,460 +0,0 @@ - - -
- Upgrade Guide - - The base package for Spring LDAP is - org.springframework.ldap. In this document, we will refer - to this package as ldap. - - - Upgrading from 1.1.x to 1.2 - - In 1.2, there are a couple of major changes: - - - - Transaction support added - - - - Exception hierarchy changed - - - - Package structure changed - - - - The transaction support is entirely new and should not affect users of - previous releases. - - The exception hierarchy was previously based on the Spring - DataAccessException hierarchy, but is now an unchecked - mirror of the JNDI NamingException hierarchy. The fact - that it is unchecked like DataAccessException makes - migration less troublesome. However, note that - ContextSource and its implementations now throw - org.springframework.ldap.NamingException, not - DataAccessException. - - In release 1.1.x, there were two cyclic dependencies. The first one - was between ldap.support and - ldap.support.parser, while the other one was between - ldap and ldap.support. - - The first cycle was easily solved by changing the generation of the - parser to generate code into ldap.support rather than - into a separate package. - - The second cycle was slightly more complicated. To sort it out, some major - restructuring was needed, as documented in the following sections. - - While the package restructuring is rather extensive, no classes have - changed names - this means that for the most cases a simple import resolve operation - (such as "Ctrl+Shift-O" in Eclipse) should sort things out. - You will still need to change the package names manually in your configuration files - - this should be a simple find/replace operation based on the information below. - - - Moved core classes from ldap to ldap.core - - The core classes listed below were moved to a subpackage called - ldap.core. - - - - - - - - Class - - Before - - After - - - - - - AttributesMapper - - ldap - - ldap.core - - - - AuthenticationSource - - ldap - - ldap.core - - - - CollectingNameClassPair- CallbackHandler - - ldap - - ldap.core - - - - ContextAssembler - - ldap - - ldap.core - - - - ContextExecutor - - ldap - - ldap.core - - - - ContextMapper - - ldap - - ldap.core - - - - ContextSource - - ldap - - ldap.core - - - - DefaultNameClassPairMapper - - ldap - - ldap.core - - - - DirContextProcessor - - ldap - - ldap.core - - - - LdapOperations - - ldap - - ldap.core - - - - LdapTemplate - - ldap - - ldap.core - - - - NameClassPairCallbackHandler - - ldap - - ldap.core - - - - NameClassPairMapper - - ldap - - ldap.core - - - - SearchExecutor - - ldap - - ldap.core - - - - - - - - Moved subpackages of ldap.support to ldap - - The various packages for authentication, controls and filters were - moved to the top level ldap package. - - - - - - - - Class - - Before - - After - - - - - - * - - ldap.support.authentication - - ldap.authentication - - - - * - - ldap.support.control - - ldap.control - - - - * - - ldap.support.filter - - ldap.filter - - - - - - - - Moved most classes in ldap.support to ldap.core or - ldap.core.support - - The classes in ldap.support that are directly - referenced from the core classes were moved to - ldap.core, while various support classes not directly - referenced were moved to ldap.core.support. - - - - - - - - Class - - Before - - After - - - - - - AbstractContextSource - - ldap.support - - ldap.core.support - - - - AggregateDirContextProcessor - - ldap.support - - ldap.core.support - - - - AttributeModificationsAware - - ldap.support - - ldap.core - - - - CountNameClassPair- CallbackHandler - - ldap.support - - ldap.core.support - - - - DefaultDirObjectFactory - - ldap.support - - ldap.core - - - - DefaultDnParserFactory - - ldap.support - - ldap.core - - - - DirContextAdapter - - ldap.support - - ldap.core - - - - DirContextOperations - - ldap.support - - ldap.core - - - - DirContextSource - - ldap.support - - ldap.core.support - - - - DistinguishedName - - ldap.support - - ldap.core - - - - DnParser - - ldap.support - - ldap.core - - - - LdapContextSource - - ldap.support - - ldap.core.support - - - - LdapEncoder - - ldap.support - - ldap.core - - - - LdapRdn - - ldap.support - - ldap.core - - - - LdapRdnComponent - - ldap.support - - ldap.core - - - - - - - - Moved classes in ldap and ldap.util to ldap.support - - The ldap.util package has been removed. The - classes in ldap.util were moved to - ldap.support. Also, the classes in - ldap related to exception translation were moved to - ldap.support. - - - The translation classes are deprecated. Instead, the static - method LdapUtils.convertLdapException should be - used. - - - - - - - - - Class - - Before - - After - - - - - - DefaultNamingExceptionTranslator - - ldap - - ldap.support - - - - LdapUtils - - - - - ldap.support - - - - ListComparator - - ldap.util - - ldap.support - - - - NamingExceptionTranslator - - ldap - - ldap.support - - - - - - -
diff --git a/core/itest-openldap-targets.xml b/core/itest-openldap-targets.xml deleted file mode 100644 index 09e00cbc..00000000 --- a/core/itest-openldap-targets.xml +++ /dev/null @@ -1,234 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - compiling itest-openldap sources - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Integration test report has been generated. -The HTML report is ${target.itest.openldap.results.html.dir}/index.html - - - - - diff --git a/core/ivy.xml b/core/ivy.xml deleted file mode 100644 index 899e1aef..00000000 --- a/core/ivy.xml +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/core/license.txt b/core/license.txt deleted file mode 100644 index 0c8a028d..00000000 --- a/core/license.txt +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2006 Mattias Arthursson and Ulrik Sandberg - - Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/core/notice.txt b/core/notice.txt deleted file mode 100644 index eab6e896..00000000 --- a/core/notice.txt +++ /dev/null @@ -1,16 +0,0 @@ - ====================================================================== - == NOTICE file corresponding to section 4 d of the Apache License, == - == Version 2.0, for the Spring LDAP distribution. == - ====================================================================== - - This product includes software developed by - the Apache Software Foundation (http://www.apache.org). - - The end-user documentation included with a redistribution, if any, - must include the following acknowledgement: - - "This product includes software developed by the Spring LDAP - Project (http://www.springframework.org/ldap)." - - Alternately, this acknowledgement may appear in the software itself, - if and wherever such third-party acknowledgements normally appear. diff --git a/core/project.properties b/core/project.properties deleted file mode 100644 index 1b09ab76..00000000 --- a/core/project.properties +++ /dev/null @@ -1,17 +0,0 @@ -# properties defined in this file are overridable by a local build.properties in this project dir - -# The location of the common build system -common.build.dir=${basedir}/../common-build - -src.javacc.dir=${basedir}/src/main/javacc -javacc.home.dir=c:/java/javacc-4.0 - -project.base.version=1.2.2-SNAPSHOT -#project.version=${project.base.version} -#ivy.status=release - -javac.source=1.3 -javac.target=1.3 - -# extend common-build with source capability -main.build.configs=global,buildtime,test,source diff --git a/core/readme.txt b/core/readme.txt deleted file mode 100644 index b58d4657..00000000 --- a/core/readme.txt +++ /dev/null @@ -1,87 +0,0 @@ -Spring-LDAP 1.2 (Oct 2007) ------------------------------ -http://www.springframework.org/ldap - -1. INTRODUCTION - -Spring-LDAP is a library to simplify LDAP programming in Java, built on the same -principles as Spring Jdbc. - -The LdapTemplate class encapsulates all the plumbing work involved in traditional LDAP -programming, such as creating, looping through NamingEnumerations, handling Exceptions -and cleaning up resources. This leaves the programmer to handle the important stuff - -where to find data (DNs and Filters) and what do do with it (map to and from domain -objects, bind, modify, unbind, etc.), in the same way that JdbcTemplate relieves the -programmer of all but the actual SQL and how the data maps to the domain model. - -In addition to this, Spring-LDAP provides Exception translation from NamingExceptions -to an unchecked exception hirearchy, as well as several utilities for working with filters, -LDAP paths and Attributes. - -As of version 1.2, support for client-side compensating transaction is provided, as well as -Java 5 generics support with the SimpleLdapTemplate. - -2. RELEASE INFO - -Spring LDAP requires J2SE 1.4 for running. -J2SE 1.4, and javacc version 4.0 is required for building the Spring LDAP distributables from source code. -J2EE 1.4 (Servlet 2.3, JSP 1.2) is required for running the example. - -The Spring-LDAP release comes in three different distributables: -* spring-ldap-bin-x.x.zip - ** readme.txt - this readme file. - ** license.txt - terms and conditions for use, reproduction and distribution - ** dist/spring-ldap-x.x.jar - the library - ** dist/spring-ldap-src-x.x.zip - the source code of the library - ** dist/ivys - ivy configuration - ** doc/api - api javadoc documentation - ** doc/reference - full project reference documentation - ** doc/upgrade - Upgrade guide from 1.1.2 - -* spring-ldap-bin-with-dependencies-x.x.zip - ** readme.txt - this readme file. - ** license.txt - terms and conditions for use, reproduction and distribution - ** dist/spring-ldap-x.x.jar - the library - ** dist/spring-ldap-src-x.x.zip - the source code of the library - ** dist/ivys - ivy configuration - ** lib - all referenced libraries necessary to use spring-LDAP - ** doc/api - api javadoc documentation - ** doc/reference - full project reference documentation - ** doc/upgrade - Upgrade guide from 1.1.2 - -The sources included in the distributables are for reference use only, however buildable -sources are available in svn on sourceforge on the following URLs: -Sources for this release (1.2 tag): -https://springframework.svn.sourceforge.net/svnroot/springframework/spring-ldap/tags/1.2 -Latest sources (trunk): -https://springframework.svn.sourceforge.net/svnroot/springframework/spring-ldap/trunk - -Nightly builds are available for download from: -http://static.springframework.org/downloads/nightly/snapshot-download.php?project=LDAP - -Spring-LDAP is released under the terms of the Apache Software License (see license.txt). - -3. DISTRIBUTION JAR FILES - -The following distinct jar files are included in the distribution. This list -specifies the respective contents and third-party dependencies. - -* spring-ldap-x.x.jar -- Contents: The Spring-LDAP library -- Dependencies: Commons Logging, Commons Lang, spring-beans, - spring-core, spring-context, spring-dao, ldapbp, commons-pool - -* spring-ldap-tiger-x.x.jar -- Contents: The Spring-LDAP Java 5 support library -- Dependencies: Commons Logging, Commons Lang, spring-beans, - spring-core, spring-context, spring-dao, ldapbp, commons-pool - -4. WHERE TO START - -The distribution contains extensive JavaDoc documentation as well as full reference -documentation and a sample application illustrating different ways to use Spring-LDAP. -The Spring-LDAP homepage can be found at the following URL: - -http://www.springframework.org/ldap - -There you will find resources related to the project. diff --git a/core/src/main/java/org/springframework/transaction/compensating/support/AbstractCompensatingTransactionManagerDelegate.java b/core/src/main/java/org/springframework/transaction/compensating/support/AbstractCompensatingTransactionManagerDelegate.java index 7a4d588b..648aabc6 100644 --- a/core/src/main/java/org/springframework/transaction/compensating/support/AbstractCompensatingTransactionManagerDelegate.java +++ b/core/src/main/java/org/springframework/transaction/compensating/support/AbstractCompensatingTransactionManagerDelegate.java @@ -17,8 +17,6 @@ package org.springframework.transaction.compensating.support; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.springframework.ldap.NamingException; -import org.springframework.ldap.support.LdapUtils; import org.springframework.transaction.CannotCreateTransactionException; import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.TransactionException; @@ -89,7 +87,7 @@ public abstract class AbstractCompensatingTransactionManagerDelegate { TransactionSynchronizationManager.bindResource(getTransactionSynchronizationKey(), contextHolder); } } - catch (NamingException e) { + catch (Exception e) { throw new CannotCreateTransactionException("Could not create DirContext instance for transaction", e); } } diff --git a/readme.txt b/readme.txt index b58d4657..c9460557 100644 --- a/readme.txt +++ b/readme.txt @@ -1,4 +1,4 @@ -Spring-LDAP 1.2 (Oct 2007) +Spring-LDAP 1.3-RC1 (Oct 2008) ----------------------------- http://www.springframework.org/ldap @@ -21,38 +21,18 @@ LDAP paths and Attributes. As of version 1.2, support for client-side compensating transaction is provided, as well as Java 5 generics support with the SimpleLdapTemplate. +See changelog for detailed information on the thanges included in the current release. + 2. RELEASE INFO -Spring LDAP requires J2SE 1.4 for running. -J2SE 1.4, and javacc version 4.0 is required for building the Spring LDAP distributables from source code. +Spring LDAP requires J2SE 1.4 and Spring 2.x for running. +J2SE 1.5, and javacc version 4.0 is required for building the Spring LDAP distributables from source code. J2EE 1.4 (Servlet 2.3, JSP 1.2) is required for running the example. -The Spring-LDAP release comes in three different distributables: -* spring-ldap-bin-x.x.zip - ** readme.txt - this readme file. - ** license.txt - terms and conditions for use, reproduction and distribution - ** dist/spring-ldap-x.x.jar - the library - ** dist/spring-ldap-src-x.x.zip - the source code of the library - ** dist/ivys - ivy configuration - ** doc/api - api javadoc documentation - ** doc/reference - full project reference documentation - ** doc/upgrade - Upgrade guide from 1.1.2 - -* spring-ldap-bin-with-dependencies-x.x.zip - ** readme.txt - this readme file. - ** license.txt - terms and conditions for use, reproduction and distribution - ** dist/spring-ldap-x.x.jar - the library - ** dist/spring-ldap-src-x.x.zip - the source code of the library - ** dist/ivys - ivy configuration - ** lib - all referenced libraries necessary to use spring-LDAP - ** doc/api - api javadoc documentation - ** doc/reference - full project reference documentation - ** doc/upgrade - Upgrade guide from 1.1.2 - The sources included in the distributables are for reference use only, however buildable sources are available in svn on sourceforge on the following URLs: -Sources for this release (1.2 tag): -https://springframework.svn.sourceforge.net/svnroot/springframework/spring-ldap/tags/1.2 +Sources for this release (1.3-rc1 tag): +https://springframework.svn.sourceforge.net/svnroot/springframework/spring-ldap/tags/1.3-rc1 Latest sources (trunk): https://springframework.svn.sourceforge.net/svnroot/springframework/spring-ldap/trunk @@ -66,17 +46,58 @@ Spring-LDAP is released under the terms of the Apache Software License (see lice The following distinct jar files are included in the distribution. This list specifies the respective contents and third-party dependencies. -* spring-ldap-x.x.jar +* spring-ldap-core-x.x.jar - Contents: The Spring-LDAP library -- Dependencies: Commons Logging, Commons Lang, spring-beans, - spring-core, spring-context, spring-dao, ldapbp, commons-pool +- Dependencies: Commons Logging, Commons Lang, Commons Pool, spring-beans, + spring-core, spring-context, spring-jdbc, spring-tx, ldapbp -* spring-ldap-tiger-x.x.jar +* spring-ldap-core-tiger-x.x.jar - Contents: The Spring-LDAP Java 5 support library -- Dependencies: Commons Logging, Commons Lang, spring-beans, - spring-core, spring-context, spring-dao, ldapbp, commons-pool +- Dependencies: Commons Logging, Commons Lang, Commons Pool, spring-beans, + spring-core, spring-context, spring-jdbc, spring-tx, ldapbp -4. WHERE TO START +* spring-ldap-test-x.x.jar +- Contents: Support classes that helps LDAP withintegration testing. +- Dependencies: Commons Logging, Commons Lang, Commons Pool, spring-beans, + spring-core, spring-context, spring-jdbc, spring-tx, ldapbp +4. MAVEN USERS + +All major releases of this library are available in the central maven repository. Note that the artifacts +have changed names between the 1.2.x and 1.3 releases: +spring-ldap is now spring-ldap-core +spring-ldap-tiger is now spring-ldap-core-tiger + +Milestone releases (such as release candidates) are available from the spring framework milestone repo: + + spring-milestone + Spring Portfolio Milestone Repository + http://s3.amazonaws.com/maven.springframework.org/milestone + + +This means that in order to use the latest release (1.3-rc1), you need to specify the +repository above and include the following dependencies: + + org.springframework.ldap + spring-ldap-core + 1.3-rc1 + + +For java 1.5 support: + + org.springframework.ldap + spring-ldap-core-tiger + 1.3-rc1 + + +Nighly builds are published to the snapshot repository: + + + spring-snapshot + Spring Portfolio Snapshot Repository + http://s3.amazonaws.com/maven.springframework.org/snapshot + + +5. WHERE TO START The distribution contains extensive JavaDoc documentation as well as full reference documentation and a sample application illustrating different ways to use Spring-LDAP. diff --git a/src/assembly/with-dependencies.xml b/src/assembly/with-dependencies.xml index cc9ed071..2a5fb1d7 100644 --- a/src/assembly/with-dependencies.xml +++ b/src/assembly/with-dependencies.xml @@ -14,7 +14,6 @@ org.springframework.ldap:spring-ldap-core org.springframework.ldap:spring-ldap-core-tiger org.springframework.ldap:spring-ldap-test - org.springframework.ldap:spring-ldap-acegi-support false

xIMXTzCz!PWHf;k0AKWz0 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 z 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 ZS8OItGvK?g2SfIM{e>0(*I)Sc{{bz;*^&SN diff --git a/core/docs/reference/src/images/bannerR.gif b/core/docs/reference/src/images/bannerR.gif deleted file mode 100644 index 548ab8848daf59ca783e1a21d131d7af7a71ff68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7949 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 diff --git a/core/docs/reference/src/images/logo.png b/core/docs/reference/src/images/logo.png deleted file mode 100644 index 31396b8a49cd65687bce18f95777cd610d195c5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23834 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