X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.security.core%2Fsrc%2Forg%2Fargeo%2Fosgi%2Fuseradmin%2FLdifWriter.java;fp=org.argeo.security.core%2Fsrc%2Forg%2Fargeo%2Fosgi%2Fuseradmin%2FLdifWriter.java;h=0000000000000000000000000000000000000000;hb=ba8f8a6fb8ad9649dd03b2ac4670d194f0e1be79;hp=ba393cad13ba1992bde1dba35a35c682ded31563;hpb=ad05df464e8135fe995f918589b763a171f0a6d4;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.security.core/src/org/argeo/osgi/useradmin/LdifWriter.java b/org.argeo.security.core/src/org/argeo/osgi/useradmin/LdifWriter.java deleted file mode 100644 index ba393cad1..000000000 --- a/org.argeo.security.core/src/org/argeo/osgi/useradmin/LdifWriter.java +++ /dev/null @@ -1,71 +0,0 @@ -package org.argeo.osgi.useradmin; - -import static org.argeo.osgi.useradmin.LdifName.dn; - -import java.io.IOException; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.io.Writer; - -import javax.naming.NamingEnumeration; -import javax.naming.NamingException; -import javax.naming.directory.Attribute; -import javax.naming.directory.Attributes; -import javax.naming.ldap.LdapName; -import javax.naming.ldap.Rdn; - -import org.apache.commons.codec.binary.Base64; - -/** Basic LDIF writer */ -class LdifWriter { - private final Writer writer; - - LdifWriter(OutputStream out) { - this.writer = new OutputStreamWriter(out); - } - - void writeEntry(LdapName name, Attributes attributes) throws IOException { - try { - // check consistency - Rdn nameRdn = name.getRdn(name.size() - 1); - Attribute nameAttr = attributes.get(nameRdn.getType()); - if (!nameAttr.get().equals(nameRdn.getValue())) - throw new UserDirectoryException("Attribute " - + nameAttr.getID() + "=" + nameAttr.get() - + " not consistent with DN " + name); - - writer.append(dn.name() + ":").append(name.toString()).append('\n'); - Attribute objectClassAttr = attributes.get("objectClass"); - if (objectClassAttr != null) - writeAttribute(objectClassAttr); - for (NamingEnumeration attrs = attributes - .getAll(); attrs.hasMore();) { - Attribute attribute = attrs.next(); - if (attribute.getID().equals(dn.name()) - || attribute.getID().equals("objectClass")) - continue;// skip DN attribute - writeAttribute(attribute); - } - writer.append('\n'); - writer.flush(); - } catch (NamingException e) { - throw new UserDirectoryException("Cannot write LDIF", e); - } - } - - private void writeAttribute(Attribute attribute) throws NamingException, - IOException { - for (NamingEnumeration attrValues = attribute.getAll(); attrValues - .hasMore();) { - Object value = attrValues.next(); - if (value instanceof byte[]) { - String encoded = Base64.encodeBase64String((byte[]) value); - writer.append(attribute.getID()).append("::").append(encoded) - .append('\n'); - } else { - writer.append(attribute.getID()).append(':') - .append(value.toString()).append('\n'); - } - } - } -}