You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by rj...@apache.org on 2009/06/09 14:50:47 UTC

svn commit: r782980 [6/8] - in /directory/sandbox/slp/src/main/java/org/apache/directory/slp: ./ codec/ extensions/ impl/ impl/da/ impl/filter/ messages/

Modified: directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/SLPUtils.java
URL: http://svn.apache.org/viewvc/directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/SLPUtils.java?rev=782980&r1=782979&r2=782980&view=diff
==============================================================================
--- directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/SLPUtils.java (original)
+++ directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/SLPUtils.java Tue Jun  9 12:50:45 2009
@@ -32,7 +32,6 @@
 
 import org.apache.directory.slp.OpaqueValue;
 
-
 /**
  * Utility class.
  * 
@@ -41,33 +40,33 @@
 public final class SLPUtils {
 
 	public static final String KEYWORD_STRING = "jslpkeyword";
-	
-	
+
 	/**
 	 * hidden constructor.
 	 */
-	private  SLPUtils() {
+	private SLPUtils() {
 
 	}
 
 	/**
-	 * get a <code>List</code> of attribute/value pairs in String
-	 * representation from a <code>Dictionary</code>.
+	 * get a <code>List</code> of attribute/value pairs in String representation
+	 * from a <code>Dictionary</code>.
 	 * 
 	 * @param attributes
 	 *            the <code>Dictionary</code>
 	 * @return the <code>List</code>.
 	 */
 	public static List<String> dictToAttrList(final Dictionary attributes) {
-		List<String> attList = new ArrayList<String>();
+		final List<String> attList = new ArrayList<String>();
 		if (attributes != null) {
-			for (Enumeration keys = attributes.keys(); keys.hasMoreElements();) {
-				Object key = keys.nextElement();
-				if (attributes.get(key).equals(KEYWORD_STRING)){
+			for (final Enumeration keys = attributes.keys(); keys
+					.hasMoreElements();) {
+				final Object key = keys.nextElement();
+				if (attributes.get(key).equals(KEYWORD_STRING)) {
 					attList.add(key.toString());
 					continue;
 				}
-				StringBuffer buffer = new StringBuffer();
+				final StringBuffer buffer = new StringBuffer();
 				buffer.append("(");
 				buffer.append(key);
 				buffer.append("=");
@@ -78,9 +77,9 @@
 		}
 		return attList;
 	}
-	
-	
-	public static String dictToString(final Dictionary<String,String> attributes){
+
+	public static String dictToString(
+			final Dictionary<String, String> attributes) {
 		return listToString(dictToAttrList(attributes), ",");
 	}
 
@@ -93,16 +92,16 @@
 	 *            the attribute list.
 	 * @return the <code>Dictionary</code>.
 	 */
-	static Dictionary<String,Object> attrListToDict(final List<String> attrList) {
-		Dictionary<String,Object> dict = new Hashtable<String,Object>();
+	static Dictionary<String, Object> attrListToDict(final List<String> attrList) {
+		final Dictionary<String, Object> dict = new Hashtable<String, Object>();
 
-		for (Iterator iter = attrList.iterator(); iter.hasNext();) {
+		for (final Iterator iter = attrList.iterator(); iter.hasNext();) {
 			String attrStr = (String) iter.next();
 			attrStr = attrStr.substring(1, attrStr.length() - 1);
-			int pos = attrStr.indexOf("=");
+			final int pos = attrStr.indexOf("=");
 			if (pos > -1) {
-				String key = attrStr.substring(0, pos).trim();
-				String value = attrStr.substring(pos + 1).trim();
+				final String key = attrStr.substring(0, pos).trim();
+				final String value = attrStr.substring(pos + 1).trim();
 				dict.put(key, value);
 			}
 		}
@@ -111,94 +110,99 @@
 	}
 
 	/**
-	 * This is the most important method of the class. It is used to parse the 
-	 * attribute lists from their string form as received in messages to their typed
-	 * form in the Service object.
+	 * This is the most important method of the class. It is used to parse the
+	 * attribute lists from their string form as received in messages to their
+	 * typed form in the Service object.
 	 * 
 	 * @param arr
-	 * 		The attributes as an array of string representations
+	 *            The attributes as an array of string representations
 	 * @return
 	 */
-	public static Dictionary<String,Object> stringArrayToDict(final String[] arr){
-		Dictionary<String,Object> dict = new Hashtable<String,Object>();
-		for (int i=0;i<arr.length;i++){
+	public static Dictionary<String, Object> stringArrayToDict(
+			final String[] arr) {
+		final Dictionary<String, Object> dict = new Hashtable<String, Object>();
+		for (int i = 0; i < arr.length; i++) {
 			String attrStr = arr[i];
-			attrStr = attrStr.substring(1,attrStr.length()-1);
-			int pos = attrStr.indexOf("=");
-			if (pos>-1){
-				String key = attrStr.substring(0, pos).trim();
-				String value = attrStr.substring(pos+1).trim();
-				//added by Lorenz to support multivalued attributes
-				String valueRep = value.replace("\\,", "SLP_ESCAPED_COMMA");
-				String[] valuesRep = valueRep.split(",");
-				String[] valuesFixed = new String[valuesRep.length];
+			attrStr = attrStr.substring(1, attrStr.length() - 1);
+			final int pos = attrStr.indexOf("=");
+			if (pos > -1) {
+				final String key = attrStr.substring(0, pos).trim();
+				final String value = attrStr.substring(pos + 1).trim();
+				// added by Lorenz to support multivalued attributes
+				final String valueRep = value.replace("\\,",
+						"SLP_ESCAPED_COMMA");
+				final String[] valuesRep = valueRep.split(",");
+				final String[] valuesFixed = new String[valuesRep.length];
 				int k = 0;
-				for (String s: valuesRep){
-					valuesFixed[k++] = s.replace("SLP_ESCAPED_COMMA", "\\,").trim();
+				for (final String s : valuesRep) {
+					valuesFixed[k++] = s.replace("SLP_ESCAPED_COMMA", "\\,")
+							.trim();
 				}
-				
-				if (valuesFixed.length==1){
-					if (value.toLowerCase().equals("true") || value.toLowerCase().equals("false")) {
-						dict.put(key, new Boolean(value) );
+
+				if (valuesFixed.length == 1) {
+					if (value.toLowerCase().equals("true")
+							|| value.toLowerCase().equals("false")) {
+						dict.put(key, new Boolean(value));
 					} else if (value.startsWith("\\FF")) {
-						dict.put(key, new OpaqueValue(value) );
+						dict.put(key, new OpaqueValue(value));
 					} else {
 						try {
-							int v = Integer.parseInt(value);
+							final int v = Integer.parseInt(value);
 							dict.put(key, v);
-						} catch (NumberFormatException e){
+						} catch (final NumberFormatException e) {
 							dict.put(key, value);
-						} 
+						}
 					}
 
 					continue;
 				}
-				
+
 				Object[] values;
 				String type;
-				String value1 = valuesFixed[0];
-				if (value1.startsWith("\\FF")){
+				final String value1 = valuesFixed[0];
+				if (value1.startsWith("\\FF")) {
 					values = new OpaqueValue[valuesFixed.length];
-					values[0]=new OpaqueValue(value1);
-					type="opaque";
-				} else if (value1.toLowerCase().equals("true") || value1.toLowerCase().equals("false")){
+					values[0] = new OpaqueValue(value1);
+					type = "opaque";
+				} else if (value1.toLowerCase().equals("true")
+						|| value1.toLowerCase().equals("false")) {
 					values = new Boolean[valuesFixed.length];
-					values[0]= Boolean.valueOf(value1);
-					type="boolean";
+					values[0] = Boolean.valueOf(value1);
+					type = "boolean";
 				} else {
 					try {
-						int v = Integer.parseInt(value1);
+						final int v = Integer.parseInt(value1);
 						values = new Number[valuesFixed.length];
 						values[0] = v;
-						type="integer";
-					} catch (NumberFormatException e){
+						type = "integer";
+					} catch (final NumberFormatException e) {
 						values = new String[valuesFixed.length];
-						values[0]=value1;
-						type="string";
+						values[0] = value1;
+						type = "string";
 					}
 				}
-				for (int j=1;j<values.length;j++){
-					if (type.equals("opaque")){
+				for (int j = 1; j < values.length; j++) {
+					if (type.equals("opaque")) {
 						values[j] = new OpaqueValue(valuesFixed[j]);
-					} else if (type.equals("string")){
-						values[j]=valuesFixed[j];
-					} else if (type.equals("boolean")){
-						values[j]=Boolean.valueOf(valuesFixed[j]);
+					} else if (type.equals("string")) {
+						values[j] = valuesFixed[j];
+					} else if (type.equals("boolean")) {
+						values[j] = Boolean.valueOf(valuesFixed[j]);
 					} else {
-						values[j]=Integer.parseInt(valuesFixed[j]);
+						values[j] = Integer.parseInt(valuesFixed[j]);
 					}
 
 				}
 				dict.put(key, values);
 			} else {
-				// this is a keyword attribute, Lorenz decided to handle it as a string
-				dict.put(attrStr,KEYWORD_STRING);
+				// this is a keyword attribute, Lorenz decided to handle it as a
+				// string
+				dict.put(attrStr, KEYWORD_STRING);
 			}
 		}
 		return dict;
 	}
-	
-	
+
 	/**
 	 * transforms a Java list to string list.
 	 * 
@@ -224,7 +228,7 @@
 			return buffer.toString();
 		}
 	}
-	
+
 	/**
 	 * transforms a String-array to a string list.
 	 * 
@@ -260,54 +264,51 @@
 	 * @return the List.
 	 */
 	public static List<String> stringToList(final String str, final String delim) {
-		List<String> result = new ArrayList<String>();
-		String strFixed = str.replace("\\"+delim, "SLP_ESCAPED_DELIM");
-		StringTokenizer tokenizer = new StringTokenizer(strFixed, delim);
+		final List<String> result = new ArrayList<String>();
+		final String strFixed = str.replace("\\" + delim, "SLP_ESCAPED_DELIM");
+		final StringTokenizer tokenizer = new StringTokenizer(strFixed, delim);
 		while (tokenizer.hasMoreTokens()) {
-			result.add(tokenizer.nextToken().replace("SLP_ESCAPED_DELIM", "\\"+delim));
+			result.add(tokenizer.nextToken().replace("SLP_ESCAPED_DELIM",
+					"\\" + delim));
 		}
 		return result;
 	}
-	
-	public static List<String> arrayToList(final String[] arr){
-		List<String> result = new ArrayList<String>();
-		for (int i=0;i< arr.length;i++){
+
+	public static List<String> arrayToList(final String[] arr) {
+		final List<String> result = new ArrayList<String>();
+		for (int i = 0; i < arr.length; i++) {
 			result.add(arr[i]);
 		}
-			
+
 		return result;
 	}
-	
-	public static String[] listToStringArray(final List list){
-		if (list==null){
-			return new String[]{};
-		}
-		if (list.isEmpty()){
-			return new String[]{};
-		}
-		String[] result = new String[list.size()];
-		for (int i = 0;i<result.length;i++){
-			result[i]=(String) list.get(i);
+
+	public static String[] listToStringArray(final List list) {
+		if (list == null) {
+			return new String[] {};
+		}
+		if (list.isEmpty()) {
+			return new String[] {};
+		}
+		final String[] result = new String[list.size()];
+		for (int i = 0; i < result.length; i++) {
+			result[i] = (String) list.get(i);
 		}
 		return result;
 	}
-	
-	
-	
-	
-	
-	public static String[] stringToStringArray(String string, String delim){
-		List<String> result = new ArrayList<String>();
-		String strFixed = string.replace("\\"+delim, "SLP_ESCAPED_DELIM");
-		StringTokenizer tokenizer = new StringTokenizer(strFixed, delim);
+
+	public static String[] stringToStringArray(final String string,
+			final String delim) {
+		final List<String> result = new ArrayList<String>();
+		final String strFixed = string.replace("\\" + delim,
+				"SLP_ESCAPED_DELIM");
+		final StringTokenizer tokenizer = new StringTokenizer(strFixed, delim);
 		while (tokenizer.hasMoreTokens()) {
-			result.add(tokenizer.nextToken().replace("SLP_ESCAPED_DELIM","\\"+delim));
+			result.add(tokenizer.nextToken().replace("SLP_ESCAPED_DELIM",
+					"\\" + delim));
 		}
-		return result.toArray(new String[]{});
+		return result.toArray(new String[] {});
 	}
-	
-	
-
 
 	/**
 	 * add a value to a value list in a Map.
@@ -366,7 +367,7 @@
 	static void removeValueFromAll(final Map map, final Object value) {
 		final Object[] keys = map.keySet().toArray();
 		for (int i = 0; i < keys.length; i++) {
-			List list = (List) map.get(keys[i]);
+			final List list = (List) map.get(keys[i]);
 			list.remove(value);
 			if (list.isEmpty()) {
 				map.remove(keys[i]);
@@ -395,13 +396,14 @@
 	 *            the attribute Dictionary.
 	 * @return a List of matches.
 	 */
-	public static List<String> findMatches(final List keyList, final Dictionary<String,String> attributes) {
-		List<String> results = new ArrayList<String>();
-		Set<String> caseInsensitiveKeyList = new HashSet<String>();
-		List<String> wildcards = new ArrayList<String>();
+	public static List<String> findMatches(final List keyList,
+			final Dictionary<String, String> attributes) {
+		final List<String> results = new ArrayList<String>();
+		final Set<String> caseInsensitiveKeyList = new HashSet<String>();
+		final List<String> wildcards = new ArrayList<String>();
 		if (!keyList.isEmpty()) {
-			for (Iterator keys = keyList.iterator(); keys.hasNext();) {
-				String key = (String) keys.next();
+			for (final Iterator keys = keyList.iterator(); keys.hasNext();) {
+				final String key = (String) keys.next();
 				if (key.indexOf("*") == -1) {
 					caseInsensitiveKeyList.add(key.toLowerCase());
 				} else {
@@ -410,16 +412,16 @@
 			}
 		}
 
-		for (Enumeration keys = attributes.keys(); keys.hasMoreElements();) {
-			String key = (String) keys.nextElement();
+		for (final Enumeration keys = attributes.keys(); keys.hasMoreElements();) {
+			final String key = (String) keys.nextElement();
 			if (keyList.isEmpty()
 					|| caseInsensitiveKeyList.contains(key.toLowerCase())) {
 				results.add("(" + key + "=" + attributes.get(key).toString()
 						+ ")");
 				continue;
 			}
-			for (Iterator iter = wildcards.iterator(); iter.hasNext();) {
-				String wildcard = (String) iter.next();
+			for (final Iterator iter = wildcards.iterator(); iter.hasNext();) {
+				final String wildcard = (String) iter.next();
 				if (equalsWithWildcard(wildcard.toCharArray(), 0, key
 						.toCharArray(), 0)) {
 					results.add("(" + key + "="
@@ -445,8 +447,8 @@
 	 *            the current position within the attribute.
 	 * @return true if equals.
 	 */
-	private static boolean equalsWithWildcard(char[] val, int valIndex,
-			char[] attr, int attrIndex) {
+	private static boolean equalsWithWildcard(final char[] val, int valIndex,
+			final char[] attr, int attrIndex) {
 		if (val.length == valIndex) {
 			return attr.length == attrIndex;
 		}
@@ -460,108 +462,113 @@
 			} while (attr.length - attrIndex > -1);
 			return false;
 		} else {
-			return (attr.length == attrIndex || attr[attrIndex] != val[valIndex]) ? false
+			return attr.length == attrIndex || attr[attrIndex] != val[valIndex] ? false
 					: equalsWithWildcard(val, ++valIndex, attr, ++attrIndex);
 		}
 	}
 
-
 	/**
-	 * Merges the SLP attribute-list by merging multiple attributes with the same name and type into one
+	 * Merges the SLP attribute-list by merging multiple attributes with the
+	 * same name and type into one
 	 * 
 	 * @param atts
-	 * 			The atttribute list as a a list of SLP atribute strings (name=value)
-	 * @return
-	 * 			The merged attributes as an array
-	 */
-	public static String[] mergeAttributes(List<String> atts){
-		Map<String,List<String>> ad = new Hashtable<String, List<String>>();
-		List<String> keywords = new ArrayList<String>();
-		
-		for (String s : atts){
-			String[] fields = s.split("=");
+	 *            The atttribute list as a a list of SLP atribute strings
+	 *            (name=value)
+	 * @return The merged attributes as an array
+	 */
+	public static String[] mergeAttributes(final List<String> atts) {
+		final Map<String, List<String>> ad = new Hashtable<String, List<String>>();
+		final List<String> keywords = new ArrayList<String>();
+
+		for (final String s : atts) {
+			final String[] fields = s.split("=");
 			String at_name = fields[0];
-			if (at_name.startsWith("(")){
-				at_name=at_name.substring(1);
+			if (at_name.startsWith("(")) {
+				at_name = at_name.substring(1);
 			}
-			if (at_name.endsWith(")")){
-				at_name=at_name.substring(0, at_name.length()-1);
+			if (at_name.endsWith(")")) {
+				at_name = at_name.substring(0, at_name.length() - 1);
 			}
-			if (fields.length==1 && !keywords.contains(at_name)){
+			if (fields.length == 1 && !keywords.contains(at_name)) {
 				keywords.add(at_name);
 				continue;
 			}
-			if (ad.keySet().contains(at_name)){
-				for (String s2:stringToList(fields[1].substring(0, fields[1].length()-1), ",")){
-					List<String> current = ad.get(at_name);
-					if (!current.contains(s2)){
+			if (ad.keySet().contains(at_name)) {
+				for (final String s2 : stringToList(fields[1].substring(0,
+						fields[1].length() - 1), ",")) {
+					final List<String> current = ad.get(at_name);
+					if (!current.contains(s2)) {
 						current.add(s2);
 					}
 				}
 				continue;
 			}
-			ad.put(at_name, stringToList(fields[1].substring(0, fields[1].length()-1), ","));
+			ad.put(at_name, stringToList(fields[1].substring(0, fields[1]
+					.length() - 1), ","));
 		}
-		
-		List<String> result = new ArrayList<String>();
-		Set<String> keys = ad.keySet();
-		for (String k:keys){
-			result.add("("+k+"="+listToString(ad.get(k), ",")+")");
+
+		final List<String> result = new ArrayList<String>();
+		final Set<String> keys = ad.keySet();
+		for (final String k : keys) {
+			result.add("(" + k + "=" + listToString(ad.get(k), ",") + ")");
 		}
-		for (String kw:keywords){
+		for (final String kw : keywords) {
 			result.add(kw);
 		}
 		return listToStringArray(result);
-		
+
 	}
-	
+
 	/**
-	 * Merges the SLP attribute-list by merging multiple attributes with the same name and type into one
+	 * Merges the SLP attribute-list by merging multiple attributes with the
+	 * same name and type into one
 	 * 
 	 * @param atts
-	 * 			The atttribute list as a an array of SLP atribute strings (name=value)
-	 * @return
-	 * 			The merged attributes as an array
-	 */
-	public static String[] mergeAttributes(String[] atts){
-		Map<String,List<String>> ad = new Hashtable<String, List<String>>();
-		List<String> keywords = new ArrayList<String>();
-		
-		for (String s : atts){
-			String[] fields = s.split("=");
+	 *            The atttribute list as a an array of SLP atribute strings
+	 *            (name=value)
+	 * @return The merged attributes as an array
+	 */
+	public static String[] mergeAttributes(final String[] atts) {
+		final Map<String, List<String>> ad = new Hashtable<String, List<String>>();
+		final List<String> keywords = new ArrayList<String>();
+
+		for (final String s : atts) {
+			final String[] fields = s.split("=");
 			String at_name = fields[0];
-			if (at_name.startsWith("(")){
-				at_name=at_name.substring(1);
+			if (at_name.startsWith("(")) {
+				at_name = at_name.substring(1);
 			}
-			if (at_name.endsWith(")")){
-				at_name=at_name.substring(0, at_name.length()-1);
+			if (at_name.endsWith(")")) {
+				at_name = at_name.substring(0, at_name.length() - 1);
 			}
-			if (fields.length==1 && !keywords.contains(at_name)){
+			if (fields.length == 1 && !keywords.contains(at_name)) {
 				keywords.add(at_name);
 				continue;
 			}
-			if (ad.keySet().contains(at_name)){
-				for (String s2:stringToList(fields[1].substring(0, fields[1].length()-1), ",")){
-					List<String> current = ad.get(at_name);
-					if (!current.contains(s2)){
+			if (ad.keySet().contains(at_name)) {
+				for (final String s2 : stringToList(fields[1].substring(0,
+						fields[1].length() - 1), ",")) {
+					final List<String> current = ad.get(at_name);
+					if (!current.contains(s2)) {
 						current.add(s2);
 					}
 				}
 				continue;
 			}
-			ad.put(at_name, stringToList(fields[1].substring(0, fields[1].length()-1), ","));
+			ad.put(at_name, stringToList(fields[1].substring(0, fields[1]
+					.length() - 1), ","));
 		}
-		
-		List<String> result = new ArrayList<String>();
-		Set<String> keys = ad.keySet();
-		for (String k:keys){
-			result.add("("+k+"="+listToString(ad.get(k), ",")+")");
+
+		final List<String> result = new ArrayList<String>();
+		final Set<String> keys = ad.keySet();
+		for (final String k : keys) {
+			result.add("(" + k + "=" + listToString(ad.get(k), ",") + ")");
 		}
-		for (String kw:keywords){
+		for (final String kw : keywords) {
 			result.add(kw);
 		}
 		return listToStringArray(result);
-		
+
 	}
 
 }

Modified: directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/ServiceLocationEnumerationImpl.java
URL: http://svn.apache.org/viewvc/directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/ServiceLocationEnumerationImpl.java?rev=782980&r1=782979&r2=782980&view=diff
==============================================================================
--- directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/ServiceLocationEnumerationImpl.java (original)
+++ directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/ServiceLocationEnumerationImpl.java Tue Jun  9 12:50:45 2009
@@ -26,7 +26,6 @@
 import org.apache.directory.slp.ServiceLocationEnumeration;
 import org.apache.directory.slp.ServiceLocationException;
 
-
 /**
  * the implementation of a ServiceLocationEnumeration.
  * 
@@ -37,12 +36,12 @@
 	/**
 	 * a list of results.
 	 */
-	private List<String> list;
+	private final List<String> list;
 
 	/**
 	 * internal Iterator over the elements of the list.
 	 */
-	private Iterator iterator;
+	private final Iterator iterator;
 
 	/**
 	 * creates a new ServiceLocationEnumerationImpl.
@@ -52,7 +51,7 @@
 	 */
 	ServiceLocationEnumerationImpl(final List<String> resultList) {
 		list = resultList != null ? resultList : new ArrayList<String>();
-		this.iterator = list.iterator();
+		iterator = list.iterator();
 	}
 
 	/**
@@ -66,7 +65,7 @@
 	public synchronized Object next() throws ServiceLocationException {
 		try {
 			return iterator.next();
-		} catch (Exception e) {
+		} catch (final Exception e) {
 			throw new ServiceLocationException(
 					ServiceLocationException.INTERNAL_SYSTEM_ERROR, e
 							.getMessage());
@@ -90,7 +89,7 @@
 	public synchronized Object nextElement() {
 		try {
 			return next();
-		} catch (ServiceLocationException sle) {
+		} catch (final ServiceLocationException sle) {
 			return null;
 		}
 	}

Modified: directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/ServiceReplyFutureImpl.java
URL: http://svn.apache.org/viewvc/directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/ServiceReplyFutureImpl.java?rev=782980&r1=782979&r2=782980&view=diff
==============================================================================
--- directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/ServiceReplyFutureImpl.java (original)
+++ directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/ServiceReplyFutureImpl.java Tue Jun  9 12:50:45 2009
@@ -59,7 +59,7 @@
 	 * @param lifetime
 	 *            The time until the ReplyFuture is considered done in ms
 	 */
-	public ServiceReplyFutureImpl(long lifetime) {
+	public ServiceReplyFutureImpl(final long lifetime) {
 		super(lifetime);
 	}
 
@@ -73,12 +73,12 @@
 	 *            The scopes for which replies are expected. used for completion
 	 *            checks
 	 */
-	public ServiceReplyFutureImpl(long lifetime, List<String> scopes) {
+	public ServiceReplyFutureImpl(final long lifetime, final List<String> scopes) {
 		super(lifetime, scopes);
 	}
 
 	@Override
-	public void add(AbstractSLPReplyMessage reply) {
+	public void add(final AbstractSLPReplyMessage reply) {
 
 		if (reply == null || reply.getErrorCode() != 0) {
 			return;
@@ -97,14 +97,14 @@
 		}
 
 		if (reply instanceof ServiceReplyMessage) {
-			for (String s : reply.getResult()) {
+			for (final String s : reply.getResult()) {
 				try {
-					Service srv = new Service(new ServiceURL(s, 0));
+					final Service srv = new Service(new ServiceURL(s, 0));
 					synchronized (services) {
 						services.add(srv);
 					}
 
-				} catch (ServiceLocationException sle) {
+				} catch (final ServiceLocationException sle) {
 					continue;
 				}
 			}
@@ -114,10 +114,10 @@
 
 		// stick to the basic behaviour...
 		synchronized (responses) {
-			List<String> res = reply.getResultAsList();
+			final List<String> res = reply.getResultAsList();
 			if (res != null && res.size() > 0) {
-				List<String> resp = reply.getResultAsList();
-				for (String s : resp) {
+				final List<String> resp = reply.getResultAsList();
+				for (final String s : resp) {
 					if (!responses.contains(s)) {
 						responses.add(s);
 					}
@@ -135,21 +135,21 @@
 	 *            The reply message possibly containing extensions
 	 * 
 	 */
-	private void processExtensions(AbstractSLPReplyMessage reply) {
-		for (AbstractExtension ae : reply.getExtensions()) {
+	private void processExtensions(final AbstractSLPReplyMessage reply) {
+		for (final AbstractExtension ae : reply.getExtensions()) {
 			if (ae instanceof UnsupportedExtension) {
 				return;
 			}
 			switch (ae.getId()) {
 			case AbstractExtension.ATTRIBUTE_LIST_EXTENSION:
-				AttributeListExtension ale = (AttributeListExtension) ae;
+				final AttributeListExtension ale = (AttributeListExtension) ae;
 				if (SLPCore.CONFIG.getSecurityEnabled()) {
 					if (!ale.verify()) {
 						return;
 					}
 				}
 				synchronized (services) {
-					for (Service srv : services) {
+					for (final Service srv : services) {
 						if (srv.toString().toLowerCase().equals(
 								ale.getUrl().toLowerCase())) {
 							srv.setAttributes(SLPUtils
@@ -176,7 +176,7 @@
 				}
 				try {
 					services.wait(timeout - System.currentTimeMillis() + 1000);
-				} catch (InterruptedException e) {
+				} catch (final InterruptedException e) {
 
 				}
 			}
@@ -197,7 +197,7 @@
 			synchronized (donelock) {
 				try {
 					donelock.wait();
-				} catch (InterruptedException ie) {
+				} catch (final InterruptedException ie) {
 
 				}
 			}

Modified: directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/ThreadedReplyFuture.java
URL: http://svn.apache.org/viewvc/directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/ThreadedReplyFuture.java?rev=782980&r1=782979&r2=782980&view=diff
==============================================================================
--- directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/ThreadedReplyFuture.java (original)
+++ directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/ThreadedReplyFuture.java Tue Jun  9 12:50:45 2009
@@ -26,241 +26,252 @@
 import org.apache.directory.slp.messages.AbstractSLPReplyMessage;
 
 /**
- * The future returned when performing SLP lookups. It can be accessed while results still come in using next(),
- * or after all results have arrived using getResult().
+ * The future returned when performing SLP lookups. It can be accessed while
+ * results still come in using next(), or after all results have arrived using
+ * getResult().
  * 
  * @author Lorenz Breu
- *
+ * 
  */
 public class ThreadedReplyFuture implements ReplyFuture {
 
 	// used to wait for done status
 	protected final Object donelock = new Object();
-	
-	//List of responses (i.e. message results)
+
+	// List of responses (i.e. message results)
 	protected final List<String> responses = new ArrayList<String>();
-	
-	// List of responders, used to build initial list of previous responders for multicast convergence
+
+	// List of responders, used to build initial list of previous responders for
+	// multicast convergence
 	protected final List<String> responders = new ArrayList<String>();
-	
+
 	// point when reply future is closed automatically
 	protected long timeout;
-	
+
 	// set to true when all operations producing results have completed
 	protected boolean done = false;
-	
+
 	// the next position to be returned using the next() method.
 	// currently a future object is read by only one consumer.
 	private int nextPosition = 0;
-	
-	// the list of scopes this future has to cover, used to control correct closure.
+
+	// the list of scopes this future has to cover, used to control correct
+	// closure.
 	private List<String> unhandledScopes = new ArrayList<String>();
-	
+
 	// used to close the future when lifetime expires
-	private Thread timeoutThread;
-	
+	private final Thread timeoutThread;
+
 	/**
-	 * Basic constructor, sets a default timeout value and uses all scopes definied in CONFIG
+	 * Basic constructor, sets a default timeout value and uses all scopes
+	 * definied in CONFIG
 	 */
-	public ThreadedReplyFuture(){
-		//TODO: which wait time should we use here? has to be larger than the time it takes to start and end the multicast convergence
-		this(SLPCore.CONFIG.getWaitTime()*5);
-	}
-	
-	
-	
-	
+	public ThreadedReplyFuture() {
+		// TODO: which wait time should we use here? has to be larger than the
+		// time it takes to start and end the multicast convergence
+		this(SLPCore.CONFIG.getWaitTime() * 5);
+	}
+
 	/**
-	 * Constructor with a specific lifetime. The future expects to handle all scopes defined in CONFIG
+	 * Constructor with a specific lifetime. The future expects to handle all
+	 * scopes defined in CONFIG
 	 * 
 	 * @param lifetime
-	 * 				Number of milliseconds this future should remain open to receive results.
+	 *            Number of milliseconds this future should remain open to
+	 *            receive results.
 	 */
-	public ThreadedReplyFuture(long lifetime){
-		unhandledScopes = SLPUtils.stringToList(SLPCore.CONFIG.getScopes().toLowerCase(), ",");
-		timeout = System.currentTimeMillis()+lifetime;
+	public ThreadedReplyFuture(final long lifetime) {
+		unhandledScopes = SLPUtils.stringToList(SLPCore.CONFIG.getScopes()
+				.toLowerCase(), ",");
+		timeout = System.currentTimeMillis() + lifetime;
 		timeoutThread = new TimeoutThread();
 	}
-	
-	
+
 	/**
 	 * Detailed constructor.
 	 * 
 	 * @param lifetime
-	 * 			Number of milliseconds this future should remain open to receive results.
+	 *            Number of milliseconds this future should remain open to
+	 *            receive results.
 	 * @param scopes
-	 * 			List of scopes to be handled.
+	 *            List of scopes to be handled.
 	 */
-	public ThreadedReplyFuture(long lifetime,List<String> scopes){
-		for (String s : scopes){
+	public ThreadedReplyFuture(final long lifetime, final List<String> scopes) {
+		for (final String s : scopes) {
 			unhandledScopes.add(s.toLowerCase());
 		}
-		timeout = System.currentTimeMillis()+lifetime;
+		timeout = System.currentTimeMillis() + lifetime;
 		timeoutThread = new TimeoutThread();
 	}
-	
-	
-	
+
 	/**
-	 * Adds the result of an SLP reply message to the list of responses and the sender of the 
-	 * reply to the list of responders, if the error code is 0. 
+	 * Adds the result of an SLP reply message to the list of responses and the
+	 * sender of the reply to the list of responders, if the error code is 0.
 	 * 
 	 * @param reply
-	 * 			An AbstractSLPReplyMessage obtained through unicast or multicast
+	 *            An AbstractSLPReplyMessage obtained through unicast or
+	 *            multicast
 	 */
-	public void add(AbstractSLPReplyMessage reply){
+	public void add(final AbstractSLPReplyMessage reply) {
 
-		if (reply==null || reply.getErrorCode()!=0){
+		if (reply == null || reply.getErrorCode() != 0) {
 			return;
 		}
-		if (done){
+		if (done) {
 			// this reply is coming in too late...
 			return;
 		}
-		
-		synchronized (responders){
+
+		synchronized (responders) {
 			if (!responders.contains(reply.getSource())) {
 				responders.add(reply.getSource());
 			} else {
 				return;
 			}
 		}
-		
-		synchronized(responses){
-			List<String> res = reply.getResultAsList();
-			if (res!=null && res.size()>0){
-				List<String> resp = reply.getResultAsList();
-				for (String s: resp){
-					if (!responses.contains(s)){
+
+		synchronized (responses) {
+			final List<String> res = reply.getResultAsList();
+			if (res != null && res.size() > 0) {
+				final List<String> resp = reply.getResultAsList();
+				for (final String s : resp) {
+					if (!responses.contains(s)) {
 						responses.add(s);
 					}
 				}
 				responses.notifyAll();
 			}
 		}
-		
+
 	}
-	
+
 	/**
-	 * Close the future.
-	 * If the override flag is set, the future will be closed directly.
-	 * If override is false, then the defined scopes will be removed from the list of unhandled scopes
-	 * and the future will be closed only if no scopes remain unhandled. Else it will remain open.
+	 * Close the future. If the override flag is set, the future will be closed
+	 * directly. If override is false, then the defined scopes will be removed
+	 * from the list of unhandled scopes and the future will be closed only if
+	 * no scopes remain unhandled. Else it will remain open.
 	 * 
 	 * @param scopes
-	 * 			The scopes to mark as done.
+	 *            The scopes to mark as done.
 	 * @param override
-	 * 			Set to true if the future should be closed even if scopes remain unhandled (e.g. timeout)
+	 *            Set to true if the future should be closed even if scopes
+	 *            remain unhandled (e.g. timeout)
 	 */
-	public synchronized void setDone(String[] scopes, boolean override){
-		synchronized (unhandledScopes){
-			for (String s: scopes){
+	public synchronized void setDone(final String[] scopes,
+			final boolean override) {
+		synchronized (unhandledScopes) {
+			for (final String s : scopes) {
 				unhandledScopes.remove(s.toLowerCase());
 			}
 		}
-		
-		if (!unhandledScopes.isEmpty() && !override){
-			//oops, not all scopes that were expected to be handled actually were handled, so keep waiting
+
+		if (!unhandledScopes.isEmpty() && !override) {
+			// oops, not all scopes that were expected to be handled actually
+			// were handled, so keep waiting
 			return;
 		}
-		if (!done){
-			done=true;
-			synchronized(donelock){
+		if (!done) {
+			done = true;
+			synchronized (donelock) {
 				donelock.notifyAll();
 			}
-			synchronized(responses){
+			synchronized (responses) {
 				responses.notifyAll();
 			}
 		}
 		try {
 			timeoutThread.interrupt();
-		} catch (Exception e){
+		} catch (final Exception e) {
 			System.out.println("oops");
 		}
 	}
-	
-	/* (non-Javadoc)
+
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see ch.ethz.iks.slp.ServiceLocationEnumeration#next()
 	 */
-	public String next(){
-		// NOTE: a future is currently only read by one consumer (i.e. LocatorImpl) and therefor a single
-		// position marker is sufficient. Also the data containers holding responses must add new elements to the end.
-		synchronized(responses){
-			while (!done){
-				if (responses.size()>nextPosition){
+	public String next() {
+		// NOTE: a future is currently only read by one consumer (i.e.
+		// LocatorImpl) and therefor a single
+		// position marker is sufficient. Also the data containers holding
+		// responses must add new elements to the end.
+		synchronized (responses) {
+			while (!done) {
+				if (responses.size() > nextPosition) {
 					return responses.get(nextPosition++);
 				}
-				try{
-					responses.wait(timeout-System.currentTimeMillis()+1000);
-				} catch (InterruptedException e){
-					
+				try {
+					responses.wait(timeout - System.currentTimeMillis() + 1000);
+				} catch (final InterruptedException e) {
+
 				}
 			}
-			if (responses.size()>nextPosition){
+			if (responses.size() > nextPosition) {
 				return responses.get(nextPosition++);
 			}
 			return null;
 		}
 	}
-	
-	
+
 	/**
 	 * Returns the status of the future.
 	 * 
-	 * @return
-	 * 		True if done, false if results can still be added.
+	 * @return True if done, false if results can still be added.
 	 */
-	public synchronized boolean isDone(){
+	public synchronized boolean isDone() {
 		return done;
 	}
-	
-	
+
 	/**
-	 * Blocking call that waits until the future is marked as "done" before returning all available responses.
+	 * Blocking call that waits until the future is marked as "done" before
+	 * returning all available responses.
 	 * 
-	 * @return
-	 * 		A list of all results obtained during the unicast or multicast SLP operation in the form of Strings.
+	 * @return A list of all results obtained during the unicast or multicast
+	 *         SLP operation in the form of Strings.
 	 */
-	public List<String> getResult(){
-		while (!done){
-			synchronized (donelock){
+	public List<String> getResult() {
+		while (!done) {
+			synchronized (donelock) {
 				try {
 					donelock.wait();
-				} catch (InterruptedException ie){
-					
+				} catch (final InterruptedException ie) {
+
 				}
 			}
 		}
 		return responses;
 	}
-	
-	
+
 	/**
-	 * Returns the sources of all reply messages with error code 0 passed on to this future. 
+	 * Returns the sources of all reply messages with error code 0 passed on to
+	 * this future.
 	 * 
-	 * @return
-	 * 		Array of IP addresses as Strings in dot notation of the sources of reply messages.
+	 * @return Array of IP addresses as Strings in dot notation of the sources
+	 *         of reply messages.
 	 */
-	public synchronized String[] getResponders(){
+	public synchronized String[] getResponders() {
 		return SLPUtils.listToStringArray(responders);
 	}
-	
-	/* (non-Javadoc)
+
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see java.util.Enumeration#hasMoreElements()
 	 */
 	public synchronized boolean hasMoreElements() {
-		return (responses.size()>nextPosition);
+		return responses.size() > nextPosition;
 	}
 
-	/* (non-Javadoc)
+	/*
+	 * (non-Javadoc)
+	 * 
 	 * @see java.util.Enumeration#nextElement()
 	 */
 	public String nextElement() {
 		return next();
 	}
-	
-	
-	
+
 	/**
 	 * setup a new thread to close this future when it times out.
 	 * 
@@ -268,34 +279,26 @@
 	private class TimeoutThread extends Thread {
 
 		public TimeoutThread() {
-			this.start();
+			start();
 		}
 
+		@Override
 		public void run() {
 
 			long remain;
 
 			// while lifetime is not expired
-			while (((remain=timeout-System.currentTimeMillis())>0) && !isDone()){
+			while ((remain = timeout - System.currentTimeMillis()) > 0
+					&& !isDone()) {
 				try {
 					Thread.sleep(remain);
-				} catch (InterruptedException ie){
+				} catch (final InterruptedException ie) {
 					continue;
 				}
 			}
 			// close the future, even if scopes remain unhandled
-			setDone(new String[]{},true);
+			setDone(new String[] {}, true);
 		}
 	}
 
-
 }
-
-	
-	
-	
-	
-	
-	
-	
-

Modified: directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/da/DirectoryAgentDaemon.java
URL: http://svn.apache.org/viewvc/directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/da/DirectoryAgentDaemon.java?rev=782980&r1=782979&r2=782980&view=diff
==============================================================================
--- directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/da/DirectoryAgentDaemon.java (original)
+++ directory/sandbox/slp/src/main/java/org/apache/directory/slp/impl/da/DirectoryAgentDaemon.java Tue Jun  9 12:50:45 2009
@@ -31,143 +31,147 @@
 import org.apache.directory.slp.messages.ServiceDeregistrationMessage;
 import org.apache.directory.slp.messages.ServiceRegistrationMessage;
 
-
 /**
- * Internal interface of the jSLP Directory Agent. This interface is to the "daemon" that does message handling
- * and reads services from and writes them to the store. This should only be used by the jSLP machinery, not fro the outside.
- * To access the DA from a client application, or to start a standalone DA, use the DirectoryAgent interface.
+ * Internal interface of the jSLP Directory Agent. This interface is to the
+ * "daemon" that does message handling and reads services from and writes them
+ * to the store. This should only be used by the jSLP machinery, not fro the
+ * outside. To access the DA from a client application, or to start a standalone
+ * DA, use the DirectoryAgent interface.
  * 
  * @author Lorenz Breu
  */
 public interface DirectoryAgentDaemon {
 
 	/**
-	 * This does the actual message handling and controlling. Called by the SLPHandler if it receives a message
-	 * of interest.
+	 * This does the actual message handling and controlling. Called by the
+	 * SLPHandler if it receives a message of interest.
 	 * 
 	 * @param msg
-	 * 		The received AbstractSLPMessage
-	 * @return
-	 * 		The reply if the received message triggers such, null else.
+	 *            The received AbstractSLPMessage
+	 * @return The reply if the received message triggers such, null else.
 	 * @throws ServiceLocationException
 	 */
-	public AbstractSLPReplyMessage handleMessage(AbstractSLPMessage msg) throws ServiceLocationException;
-	
+	public AbstractSLPReplyMessage handleMessage(AbstractSLPMessage msg)
+			throws ServiceLocationException;
+
 	/**
 	 * Checks if the DA is set to handle requests in this specific scope.
 	 * 
 	 * @param scope
-	 * 		The scope to be checked
-	 * @return
-	 * 		True if the DA supports that scope, false otherwise
+	 *            The scope to be checked
+	 * @return True if the DA supports that scope, false otherwise
 	 */
 	public boolean isInScope(String scope);
-	
+
 	/**
 	 * Builds the DAAdvertisementMessage.
 	 * 
-	 * @return
-	 * 		A DAAdvertisementMessage
+	 * @return A DAAdvertisementMessage
 	 * @throws ServiceLocationException
 	 */
 	public DAAdvertisementMessage buildAdvert() throws ServiceLocationException;
-	
+
 	/**
 	 * Gets the statelessBootTimestamp of the DA
 	 * 
-	 * @return
-	 * 		statelessBootTimestamp
-	 * 		
+	 * @return statelessBootTimestamp
+	 * 
 	 */
 	public int getStatelessBootTimestamp();
-	
+
 	/**
 	 * Sets the store that contains the registered services
 	 * 
 	 * @param store
-	 * 		An object that implements the ServiceStore interface
+	 *            An object that implements the ServiceStore interface
 	 */
 	public void setStore(ServiceStore store);
-	
+
 	/**
 	 * Checks if a service with the given url has been registered with this DA
 	 * 
 	 * @param service
-	 * 		The service to be checked
-	 * @return
-	 * 		True if a service with that url has been found in the store
+	 *            The service to be checked
+	 * @return True if a service with that url has been found in the store
 	 */
 	public boolean isKnownService(Service service);
-	
+
 	/**
 	 * Updates a registered service entry with new attributes.
 	 * 
 	 * @param reg
-	 * 			A ServiceRegistrationMessage which doesn't have the FRESH flag set.
+	 *            A ServiceRegistrationMessage which doesn't have the FRESH flag
+	 *            set.
 	 * @throws ServiceLocationException
 	 */
-	public void updateServiceEntry(ServiceRegistrationMessage reg) throws ServiceLocationException;
-	
+	public void updateServiceEntry(ServiceRegistrationMessage reg)
+			throws ServiceLocationException;
+
 	/**
 	 * Register the service (if all checks pass) with the DA.
 	 * 
 	 * @param reg
-	 * 			A FRESH service registration message
+	 *            A FRESH service registration message
 	 * @throws ServiceLocationException
 	 */
-	public void registerService(ServiceRegistrationMessage reg) throws ServiceLocationException;
-	
+	public void registerService(ServiceRegistrationMessage reg)
+			throws ServiceLocationException;
+
 	/**
-	 * Register the service (if all checks pass) with the DA. This method does not have to perform any
-	 * checks, it just registers the service.
+	 * Register the service (if all checks pass) with the DA. This method does
+	 * not have to perform any checks, it just registers the service.
+	 * 
 	 * @param reg
-	 * 			The service to be registered
+	 *            The service to be registered
 	 * @throws ServiceLocationException
 	 */
-	public void registerService(Service service) throws ServiceLocationException;
-	
+	public void registerService(Service service)
+			throws ServiceLocationException;
+
 	/**
 	 * Deregisters a service from the DA.
 	 * 
 	 * @param dereg
-	 * 			The ServiceDeregistrationMessage asking for the deregistration.
+	 *            The ServiceDeregistrationMessage asking for the
+	 *            deregistration.
 	 * @throws ServiceLocationException
 	 */
-	public void deregisterService(ServiceDeregistrationMessage dereg) throws ServiceLocationException;
-	
+	public void deregisterService(ServiceDeregistrationMessage dereg)
+			throws ServiceLocationException;
+
 	/**
 	 * Deregisters a service from the DA.
 	 * 
 	 * @param dereg
-	 * 			The Service to be deregistered.
+	 *            The Service to be deregistered.
 	 * @throws ServiceLocationException
 	 */
-	public void deregisterService(Service service) throws ServiceLocationException;
-	
+	public void deregisterService(Service service)
+			throws ServiceLocationException;
+
 	/**
 	 * Lists all services currently registered with the DA.
 	 * 
-	 * @return
-	 * 		A List of the service urls of all registered services.
+	 * @return A List of the service urls of all registered services.
 	 */
 	public List<Service> listServices();
-	
+
 	/**
-	 * Shuts the DA down and sends a DAAdvert informing other SLP agents of this fact.
-	 * All registered services are lost on shutdown.
+	 * Shuts the DA down and sends a DAAdvert informing other SLP agents of this
+	 * fact. All registered services are lost on shutdown.
 	 */
 	public void shutdown();
-	
-	
+
 	/**
-	 * Returns the mappings of attributes of specific abstract SLP service types to their type (string, integer, boolean, opaquevalue or array thereof)
-	 * The method returns a copy of the actual type registry, changes made to the returned object are not
-	 * reflected in the actual type registry
+	 * Returns the mappings of attributes of specific abstract SLP service types
+	 * to their type (string, integer, boolean, opaquevalue or array thereof)
+	 * The method returns a copy of the actual type registry, changes made to
+	 * the returned object are not reflected in the actual type registry
 	 * 
-	 * @return
-	 * 		A copy of the attribute type registry
+	 * @return A copy of the attribute type registry
 	 * @throws ServiceLocationException
-	 * 		If not implemented
+	 *             If not implemented
 	 */
-	public Map<String, Integer> getAttributeTypes() throws ServiceLocationException;
+	public Map<String, Integer> getAttributeTypes()
+			throws ServiceLocationException;
 }