package com.c2kernel.lookup; import java.util.Enumeration; import com.c2kernel.process.Gateway; import com.c2kernel.utils.Logger; import com.novell.ldap.LDAPEntry; import com.novell.ldap.LDAPException; import com.novell.ldap.LDAPSearchResults; /************************************************************************** * * $Revision: 1.6 $ * $Date: 2005/12/01 14:23:14 $ * * Copyright (C) 2003 CERN - European Organization for Nuclear Research * All rights reserved. **************************************************************************/ public class LDAPPathSet implements Enumeration { LDAPSearchResults results; LDAPEntry nextEntry; public LDAPPathSet() { // empty results = null; } public LDAPPathSet(LDAPSearchResults results) { this.results = results; } @Override public boolean hasMoreElements() { if (results == null) return false; if (nextEntry != null) return true; if (results.hasMore()) try { nextEntry = results.next(); return true; } catch (LDAPException ex) { if (ex.getResultCode()!=32) {// no results Logger.error(ex); Logger.error("Error loading LDAP result set: "+ex.getMessage()); } } return false; } @Override public Path nextElement() { if (results == null) return null; try { if (nextEntry == null) nextEntry = results.next(); Path nextPath = ((LDAPLookup)Gateway.getLookup()).nodeToPath(nextEntry); nextEntry = null; return nextPath; } catch (Exception ex) { Logger.error("Error loading next path"); Logger.error(ex); nextEntry = null; if (hasMoreElements()) { Logger.error("Skipping to next entry"); return nextElement(); } else return null; } } }