public void handle(Event e){
		if(e.eventType == PrismConstants.REQUEST && e.name.equals("ProductQuery_Request")){
			
			String theProductServerID = (String)e.getParameter("productServer_id");
			String theQueryServerID = (String)e.getParameter("queryServer_id");
			
			if(theProductServerID != null){
				//make sure that this was intended for us, otherwise, don't even bother
				if(!theProductServerID.equals(name)){
					return;
				}
			}else return;
			
			
			QueryObject theQuery = (QueryObject)e.getParameter("query");
			Profile theProfile = (Profile)e.getParameter("resourceProfile");
			
			String returnClientID = (String)e.getParameter("orig_id");
			if(returnClientID == null){return;}  //if we don't know who to send the reply to, then don't bother
			
			if(theQuery != null){
				theQuery = query(theQuery);	
                
				//System.err.println(name+" sending ProductQuery_Reply to "+returnClientID);
				//System.err.println(name+" sending QueryObjet with query = "+theQuery.getQuery());
				Event n = new Event("ProductQuery_Reply");
				n.eventType = PrismConstants.REPLY;
				n.addParameter("returnedQuery",theQuery);
				n.addParameter("orig_id",returnClientID);
				n.addParameter("productServer_id",name);
				if(theProfile != null){n.addParameter("resourceProfile",theProfile);}
				if(theQueryServerID != null){n.addParameter("queryServer_id",theQueryServerID);}
				send(n);
			}
		}
		
		
	}