Index: /main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/AbstractBrowse.java
===================================================================
--- /main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/AbstractBrowse.java	(revision 38965)
+++ /main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/AbstractBrowse.java	(revision 38966)
@@ -132,5 +132,5 @@
 		// get the display and format elements from the coll config file for
 		// the classifiers
-		extractExtraClassifierInfo(info, extra_info);
+		GSXML.extractExtraClassifierInfo(info, extra_info);
 
 		// short_service_info_ - the browse one
@@ -295,84 +295,4 @@
 	}
 
-	/**
-	 * this looks for any classifier specific display or format info from
-	 * extra_info and adds it in to the correct place in info
-	 */
-	static boolean extractExtraClassifierInfo(Element info, Element extra_info)
-	{
-		if (extra_info == null)
-		{
-			return false;
-		}
-
-		Document owner = info.getOwnerDocument();
-		// so far we have display and format elements that we need for classifiers
-		NodeList classifiers = info.getElementsByTagName(GSXML.CLASSIFIER_ELEM);
-		Element config_browse = (Element) GSXML.getChildByTagName(extra_info, GSXML.BROWSE_ELEM);
-
-		for (int i = 0; i < classifiers.getLength(); i++)
-		{
-			Element cl = (Element) classifiers.item(i);
-			String name = cl.getAttribute(GSXML.NAME_ATT);
-
-			//Element node_extra = GSXML.getNamedElement(config_browse,
-			//					       GSXML.CLASSIFIER_ELEM,
-			//					       GSXML.NAME_ATT,
-			//					       name);
-			//now use the position to get the node - CL1 
-			// assumes the same number of classifiers in collectionCOnfig as in buildConfig
-			//            int position = Integer.parseInt(name.substring(2));
-
-			Element node_extra = null;
-			NodeList cls = config_browse.getElementsByTagName(GSXML.CLASSIFIER_ELEM);
-			//if (position >0 && position <= cls.getLength()) {
-			//    node_extra  = (Element) cls.item((position -1)); 
-			//}
-			if (i < cls.getLength())
-			{
-				node_extra = (Element) cls.item(i);
-			}
-
-			if (node_extra == null)
-			{
-				logger.error("GS2REtrieve: haven't found extra info for classifier named " + name);
-				continue;
-			}
-
-                        String hidden = node_extra.getAttribute(GSXML.HIDDEN_ATT);
-                        if (!hidden.equals("")) {
-                          cl.setAttribute(GSXML.HIDDEN_ATT, hidden);
-                          
-                        }
-			// get the display elements if any - displayName
-			NodeList display_names = node_extra.getElementsByTagName(GSXML.DISPLAY_TEXT_ELEM);
-			if (display_names != null)
-			{
-				Element display = owner.createElement(GSXML.DISPLAY_ELEM);
-				for (int j = 0; j < display_names.getLength(); j++)
-				{
-					Element e = (Element) display_names.item(j);
-					cl.appendChild(owner.importNode(e, true));
-				}
-			}
-
-			// get the format element if any 
-			Element format = (Element) GSXML.getChildByTagName(node_extra, GSXML.FORMAT_ELEM);
-			if (format != null)
-			{ // append to index info
-				cl.appendChild(owner.importNode(format, true));
-			}
-			    
-		} // for each classifier
-
-		// now check for default format info
-		Element default_format = (Element) GSXML.getChildByTagName(config_browse, GSXML.FORMAT_ELEM);
-		if (default_format != null)
-		{ // append to  info
-			info.appendChild(owner.importNode(default_format, true));
-		}
-
-		return true;
-	}
 
 	protected Element processClassifierBrowse(Element request)
Index: /main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/FedoraServiceProxy.java
===================================================================
--- /main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/FedoraServiceProxy.java	(revision 38965)
+++ /main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/FedoraServiceProxy.java	(revision 38966)
@@ -197,5 +197,5 @@
 	// get the display and format elements from the coll config file for
 	// the classifiers
-	AbstractBrowse.extractExtraClassifierInfo(info, extra_info);
+	GSXML.extractExtraClassifierInfo(info, extra_info);
 
 	// Copied from IViaProxy.java:
Index: /main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/GSXML.java
===================================================================
--- /main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/GSXML.java	(revision 38965)
+++ /main/trunk/greenstone3/src/java/org/greenstone/gsdl3/util/GSXML.java	(revision 38966)
@@ -1772,3 +1772,88 @@
 	}
 
+    
+	/**
+	 * this looks for any classifier specific display or format info from
+	 * extra_info and adds it in to the correct place in info.
+	 *
+	 * This was moved here from AbstractBrowse.java where this was a static method
+	 * because FedoraServiceProxy.java (which is both a Browse and Query Service) needs
+	 * to use the entire method and thus was forced to use it in a static manner.
+	 */
+	public static boolean extractExtraClassifierInfo(Element info, Element extra_info)
+	{
+		if (extra_info == null)
+		{
+			return false;
+		}
+
+		Document owner = info.getOwnerDocument();
+		// so far we have display and format elements that we need for classifiers
+		NodeList classifiers = info.getElementsByTagName(GSXML.CLASSIFIER_ELEM);
+		Element config_browse = (Element) GSXML.getChildByTagName(extra_info, GSXML.BROWSE_ELEM);
+
+		for (int i = 0; i < classifiers.getLength(); i++)
+		{
+			Element cl = (Element) classifiers.item(i);
+			String name = cl.getAttribute(GSXML.NAME_ATT);
+
+			//Element node_extra = GSXML.getNamedElement(config_browse,
+			//					       GSXML.CLASSIFIER_ELEM,
+			//					       GSXML.NAME_ATT,
+			//					       name);
+			//now use the position to get the node - CL1 
+			// assumes the same number of classifiers in collectionCOnfig as in buildConfig
+			//            int position = Integer.parseInt(name.substring(2));
+
+			Element node_extra = null;
+			NodeList cls = config_browse.getElementsByTagName(GSXML.CLASSIFIER_ELEM);
+			//if (position >0 && position <= cls.getLength()) {
+			//    node_extra  = (Element) cls.item((position -1)); 
+			//}
+			if (i < cls.getLength())
+			{
+				node_extra = (Element) cls.item(i);
+			}
+
+			if (node_extra == null)
+			{
+				logger.error("GS2REtrieve: haven't found extra info for classifier named " + name);
+				continue;
+			}
+
+                        String hidden = node_extra.getAttribute(GSXML.HIDDEN_ATT);
+                        if (!hidden.equals("")) {
+                          cl.setAttribute(GSXML.HIDDEN_ATT, hidden);
+                          
+                        }
+			// get the display elements if any - displayName
+			NodeList display_names = node_extra.getElementsByTagName(GSXML.DISPLAY_TEXT_ELEM);
+			if (display_names != null)
+			{
+				Element display = owner.createElement(GSXML.DISPLAY_ELEM);
+				for (int j = 0; j < display_names.getLength(); j++)
+				{
+					Element e = (Element) display_names.item(j);
+					cl.appendChild(owner.importNode(e, true));
+				}
+			}
+
+			// get the format element if any 
+			Element format = (Element) GSXML.getChildByTagName(node_extra, GSXML.FORMAT_ELEM);
+			if (format != null)
+			{ // append to index info
+				cl.appendChild(owner.importNode(format, true));
+			}
+			    
+		} // for each classifier
+
+		// now check for default format info
+		Element default_format = (Element) GSXML.getChildByTagName(config_browse, GSXML.FORMAT_ELEM);
+		if (default_format != null)
+		{ // append to  info
+			info.appendChild(owner.importNode(default_format, true));
+		}
+
+		return true;
+	}
 }
