zcommon/src/main/java/org/zkoss/util/resource/XMLResourcesLocator.java
/* XMLResourcesLocator.java
Purpose:
Description:
History:
Tue Mar 23 15:47:23 TST 2010, Created by tomyeh
Copyright (C) 2010 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.util.resource;
import java.util.Enumeration;
import java.util.List;
import java.io.IOException;
import java.net.URL;
import org.zkoss.idom.Document;
/**
* Represents a locator used to locate XML resources.
*
* @author tomyeh
* @since 6.0.0
*/
public interface XMLResourcesLocator extends Locator {
/** Returns an enumeration of resources.
* Unlike {@link #getDependentXMLResources}, it doesn't resolve the dependence
* among the resources.
*
* @param name the resource name, such as "metainfo/config.xml".
*/
public Enumeration<URL> getResources(String name) throws IOException;
/** Returns a list of resources ({@link Resource}) after resolving
* the dependence.
* The resource is returned in the format of {@link Resource}
*
* <p>To resolve the dependence, it assumes each resource has two
* element whose name is identified by elName and elDepends.
* The elName element specifies the unique name of each resource.
* The elDepends element specifies a list of names of resources
* that this resource depends on. If not found, it assumes it could
* be loaded first.
*
* @param name the resource name, such as "metainfo/config.xml".
* @param elName the element used to specify the name.
* @param elDepends the element used to specify the dependence.
* @return a list of {@link Resource} of the specified name.
*/
public List<Resource> getDependentXMLResources(String name, String elName,
String elDepends) throws IOException;
/** An item of the list returned by {@link XMLResourcesLocator#getDependentXMLResources}.
* @since 6.0.0
*/
public static class Resource {
/** The URL of the resource. */
public final URL url;
/** The content of the resource. */
public final Document document;
public Resource(URL url, Document document) {
this.url = url;
this.document = document;
}
//Object//
public int hashCode() {
return url.hashCode() ^ document.hashCode();
}
public boolean equals(Object o) {
if (this == o) return true;
return o instanceof Resource && ((Resource)o).url.equals(url)
&& ((Resource)o).document.equals(document);
}
public String toString() {
return "[res: " + url + ']';
}
}
}