proxy.setType((String)hash.get("type"));
	private void readCollection() throws XMLDBException {		resources = new ArrayList();		childCollections = new HashMap();		Vector params = new Vector();		params.addElement(getPath());		Hashtable collection;		try {			collection = (Hashtable) rpcClient.execute("getCollectionDesc", params);		} catch (XmlRpcException xre) {			throw new XMLDBException(ErrorCodes.VENDOR_ERROR, xre.getMessage(), xre);		} catch (IOException ioe) {			throw new XMLDBException(ErrorCodes.INVALID_COLLECTION, "an io error occurred", ioe);		}		Vector documents = (Vector) collection.get("documents");		Vector collections = (Vector) collection.get("collections");		permissions =			new Permission(				(String) collection.get("owner"),				(String) collection.get("group"),				((Integer) collection.get("permissions")).intValue());		String docName;		String childName;		Hashtable hash;		DocumentProxy proxy;		Permission perm;		int p, dsize = documents.size();		for (int i = 0; i < dsize; i++) {			hash = (Hashtable) documents.elementAt(i);			docName = (String) hash.get("name");			if ((p = docName.lastIndexOf('/')) > -1)				docName = docName.substring(p + 1);			proxy = new DocumentProxy(docName);			perm =				new Permission(					(String) hash.get("owner"),					(String) hash.get("group"),					((Integer) hash.get("permissions")).intValue());			proxy.setPermissions(perm);			resources.add(proxy);		}		for (int i = 0; i < collections.size(); i++) {			childName = (String) collections.elementAt(i);			try {				RemoteCollection child =					new RemoteCollection(rpcClient, this, null, getPath() + '/' + childName);				addChildCollection(child);			} catch (XMLDBException e) {			}		}	}