diff --git a/changelog.txt b/changelog.txt
index d65e644f..cdffca00 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -24,6 +24,14 @@ Changes in version 1.3.0 (Nov 2008)
* Made sure DirContextOperations#addAttributeValue(String, Object) does not add any duplicate
values per default; added alternate method: DirContextOperations#addAttributeValue(String, Object, boolean)
to enable behavior other than the default (i.e. allowing duplicates).
+
+* Made sure that DirContextAdapter#setDn() throws exception if in update mode
+ (The value is not set anyway, and this was previously silently ignored).
+
+* Made sure article sample tests are possible to run without running web
+ application (i.e. tests automatically start internal LDAP server) (LDAP-143).
+
+* Added spring-tx as required dependency (the DataAccessExceptions require this).
Changes in version 1.3.0.RC1 (Oct 2008)
-------------------------------------------
@@ -42,7 +50,7 @@ Changes in version 1.3.0.RC1 (Oct 2008)
* The hard dependency on LDAP Booster Pack has now been completely removed,
preventing NoClassDefFoundErrors when using Paged Results without that
- library on the classpath. (LDAP-110, LDAP-118)
+ library on the classpath. (LDAP-110, LDAP-118)
* The dreaded problem with '\' in Distinguished Names is now resolved.
(LDAP-50, LDAP-109)
diff --git a/core/pom.xml b/core/pom.xml
index 87ff05a5..928489f0 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -68,6 +68,10 @@
org.springframework
spring-beans
+
+ org.springframework
+ spring-tx
+
org.springframework
spring-context
diff --git a/core/src/main/java/org/springframework/ldap/core/DirContextAdapter.java b/core/src/main/java/org/springframework/ldap/core/DirContextAdapter.java
index e3b8e098..0b44fc09 100644
--- a/core/src/main/java/org/springframework/ldap/core/DirContextAdapter.java
+++ b/core/src/main/java/org/springframework/ldap/core/DirContextAdapter.java
@@ -1262,6 +1262,11 @@ public class DirContextAdapter implements DirContextOperations {
if (!updateMode) {
this.dn = new DistinguishedName(dn.toString());
}
+ else {
+ throw new IllegalStateException(
+ "Not possible to call setDn() on a DirContextAdapter in update mode");
+ }
+
}
/**
diff --git a/samples/article/src/test/resources/config/testContext.xml b/samples/article/src/test/resources/config/testContext.xml
index b9a60eea..4a762506 100644
--- a/samples/article/src/test/resources/config/testContext.xml
+++ b/samples/article/src/test/resources/config/testContext.xml
@@ -8,11 +8,14 @@
-
-
-
+
+
+
+
-
+
+
@@ -26,7 +29,7 @@
-
+
diff --git a/samples/article/src/test/resources/setup_data.ldif b/samples/article/src/test/resources/setup_data.ldif
new file mode 100644
index 00000000..e6d7dce6
--- /dev/null
+++ b/samples/article/src/test/resources/setup_data.ldif
@@ -0,0 +1,35 @@
+dn: c=Sweden,dc=jayway,dc=se
+objectclass: top
+objectclass: country
+c: Sweden
+description: The country of Sweden
+
+dn: ou=company1,c=Sweden,dc=jayway,dc=se
+objectclass: top
+objectclass: organizationalUnit
+ou: company1
+description: First company in Sweden
+
+dn: cn=Some Person,ou=company1,c=Sweden,dc=jayway,dc=se
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+uid: some.person
+userPassword: password
+cn: Some Person
+sn: Person
+description: Sweden, Company1, Some Person
+telephoneNumber: +46 555-123456
+
+dn: cn=Some Person2,ou=company1,c=Sweden,dc=jayway,dc=se
+objectclass: top
+objectclass: person
+objectclass: organizationalPerson
+objectclass: inetOrgPerson
+uid: some.person2
+userPassword: password
+cn: Some Person2
+sn: Person2
+description: Sweden, Company1, Some Person2
+telephoneNumber: +46 555-654321
diff --git a/samples/samples-utils/src/main/java/org/springframework/ldap/samples/utils/LdapTreeBuilder.java b/samples/samples-utils/src/main/java/org/springframework/ldap/samples/utils/LdapTreeBuilder.java
index 8359faa9..d06033cc 100644
--- a/samples/samples-utils/src/main/java/org/springframework/ldap/samples/utils/LdapTreeBuilder.java
+++ b/samples/samples-utils/src/main/java/org/springframework/ldap/samples/utils/LdapTreeBuilder.java
@@ -14,22 +14,24 @@ public class LdapTreeBuilder {
}
public LdapTree getLdapTree(DistinguishedName root) {
- DirContextOperations context = ldapTemplate.lookupContext(root.toString());
+ DirContextOperations context = ldapTemplate.lookupContext(root
+ .toString());
return getLdapTree(context);
}
private LdapTree getLdapTree(final DirContextOperations rootContext) {
final LdapTree ldapTree = new LdapTree(rootContext);
- ldapTemplate.listBindings(rootContext.getDn(), new AbstractContextMapper() {
- @Override
- protected Object doMapFromContext(DirContextOperations ctx) {
- DistinguishedName dn = (DistinguishedName) ctx.getDn();
- dn.prepend((DistinguishedName) rootContext.getDn());
-
- ldapTree.addSubTree(getLdapTree(ctx));
- return null;
- }
- });
+ ldapTemplate.listBindings(rootContext.getDn(),
+ new AbstractContextMapper() {
+ @Override
+ protected Object doMapFromContext(DirContextOperations ctx) {
+ DistinguishedName dn = (DistinguishedName) ctx.getDn();
+ dn.prepend((DistinguishedName) rootContext.getDn());
+ ldapTree.addSubTree(getLdapTree(ldapTemplate
+ .lookupContext(dn)));
+ return null;
+ }
+ });
return ldapTree;
}