--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/sf/java/core/src/com/nokia/helium/core/LDAPHelper.java Fri Aug 13 14:59:05 2010 +0300
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2010-2011 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of the License "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ *
+ */
+package com.nokia.helium.core;
+
+import java.util.Hashtable;
+
+import javax.naming.Context;
+import javax.naming.NameNotFoundException;
+import javax.naming.NamingEnumeration;
+import javax.naming.NamingException;
+import javax.naming.directory.DirContext;
+import javax.naming.directory.InitialDirContext;
+import javax.naming.directory.SearchControls;
+import javax.naming.directory.SearchResult;
+
+/**
+ * Simpler LDAP interface to retrieve user base attribute.
+ *
+ */
+public class LDAPHelper {
+ public static final String EMAIL_ATTRIBUTE_NAME = "mail";
+ private String ldapURL;
+ private String rootdn;
+
+ /**
+ * Construct a LDAP helper for a specific server.
+ * @param ldapURL the ldap url (e.g: ldap://server:389)
+ * @param rootdn the rootdn value.
+ */
+ public LDAPHelper(String ldapURL, String rootdn) {
+ if (ldapURL == null) {
+ throw new IllegalArgumentException("The ldap server url cannot be null.");
+ }
+ if (rootdn == null) {
+ throw new IllegalArgumentException("The rootdn cannot be null.");
+ }
+ this.ldapURL = ldapURL;
+ this.rootdn = rootdn;
+ }
+
+ /**
+ * Get the value of the LDAP attribute for a filter.
+ * @param filter the filter to search for
+ * @param attribute the attribute name.
+ * @return the value of the attribute as a string., if the value is not a String then it is
+ * stringify using toString. Returns null if not found.
+ * @throws LDAPException
+ */
+ public String getAttributeAsString(String filter, String attribute) throws LDAPException {
+ if (filter == null) {
+ throw new IllegalArgumentException("filter cannot be null.");
+ }
+ if (attribute == null) {
+ throw new IllegalArgumentException("attribute cannot be null.");
+ }
+ // Set up environment for creating initial context
+ Hashtable<String, String> env = new Hashtable<String, String>(11);
+ env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
+ env.put(Context.PROVIDER_URL, ldapURL + "/" + rootdn);
+
+ // Create initial context
+ try {
+ DirContext ctx = new InitialDirContext(env);
+ SearchControls controls = new SearchControls();
+ controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
+ NamingEnumeration<SearchResult> en = ctx.search("", filter, controls);
+ if (en.hasMore()) {
+ SearchResult sr = en.next();
+ if (sr.getAttributes().get(attribute) != null) {
+ Object value = sr.getAttributes().get(attribute).get();
+ if (value instanceof String) {
+ return (String)value;
+ } else {
+ return value.toString();
+ }
+ }
+ }
+ } catch (NameNotFoundException ex) {
+ throw new LDAPException("Could not find " + filter + " attribute " + attribute + " in LDAP: " + ex.getMessage(), ex);
+ } catch (NamingException ex) {
+ throw new LDAPException("Could not find " + filter + " attribute " + attribute + " in LDAP: " + ex.getMessage(), ex);
+ }
+ return null;
+ }
+
+ /**
+ * Get the value of the LDAP attribute for current user. (based on user.name).
+ * @param attribute the attribute name.
+ * @return the value of the attribute as a string., if the value is not a String then it is
+ * stringify using toString. Returns null if not found.
+ * @throws LDAPException
+ */
+ public String getUserAttributeAsString(String attribute) throws LDAPException {
+ return getUserAttributeAsString(System.getProperty("user.name"), attribute);
+ }
+
+ /**
+ * Get the value of the LDAP attribute for username.
+ * @param username the user to search for
+ * @param attribute the attribute name.
+ * @return the value of the attribute as a string., if the value is not a String then it is
+ * stringify using toString. Returns null if not found.
+ * @throws LDAPException
+ */
+ public String getUserAttributeAsString(String username, String attribute) throws LDAPException {
+ return getAttributeAsString("uid=" + username, attribute);
+ }
+
+}