Metadata support for old and new schemas, and API changes.
[java-idp.git] / src / edu / internet2 / middleware / shibboleth / metadata / RoleDescriptor.java
 package edu.internet2.middleware.shibboleth.metadata;
 
 import java.net.URL;
+import java.util.Iterator;
+
+import org.w3c.dom.Element;
 
 /**
- * <p>Corresponds loosely to SAML Metadata Schema "RoleDescriptorType".
+ * <p>Corresponds to SAML Metadata Schema "RoleDescriptorType".
  * </p><p>
  * A child of the EntityDescriptor element (the Provider object).
  * Example Roles are IDP (Identity Provider), Authentication Authority (HS),
- * Attribute Authority (AA), Attribute Requestor (SHAR), ...
- * 
- * The only role supported in the Origin is 
- * AuthenticationAssertionConsumerService (formerly know as SHIRE)
- * [not formally part of the SAML 2 Metadata standard].
- * For this there is a special extension of SPProviderRole.
+ * Attribute Authority (AA), SP
  * 
  * @author Walter Hoehn (wassa@columbia.edu)
  */
-public interface ProviderRole {
-
-       public Provider getProvider(); // find parent EntityDescriptor/Provider
+public interface RoleDescriptor {
 
-       public String[] getProtocolSupport();
+       public EntityDescriptor getEntityDescriptor(); // parent EntityDescriptor
 
-       public boolean hasSupport(final String version);
+       public Iterator /* <String> */ getProtocolSupportEnumeration();
 
-       public ContactPerson[] getContacts();
+       public boolean hasSupport(final String version);   // does role support protocol?
 
-       public KeyDescriptor[] getKeyDescriptors();
+    public boolean isValid();   // is role valid?
 
-       public Endpoint[] getDefaultEndpoints();
+    public URL getErrorURL();
+    
+    public Iterator /* <KeyDescriptor> */ getKeyDescriptors(); // direct or indirect key references 
+    
+    public Organization getOrganization(); // associated organization
 
-       public URL getErrorURL();
+       public Iterator /* <ContactPerson> */ getContactPersons();
 
+       public Element getElement(); // punch through to XML content if permitted
 }