diff options
| author | Thomas Lenz <tlenz@iaik.tugraz.at> | 2014-10-22 13:05:23 +0200 | 
|---|---|---|
| committer | Thomas Lenz <tlenz@iaik.tugraz.at> | 2014-10-22 13:05:23 +0200 | 
| commit | f4e83ea671c3bd743fca894f7f48a29e95dcb4dc (patch) | |
| tree | 4864adbb34edf72ace46d0cfb4dff91800ec8b2b /id/server/idserverlib/src/main/java/at | |
| parent | deebaf058efe2203f0e6844de7cb6b09374cab7c (diff) | |
| download | moa-id-spss-f4e83ea671c3bd743fca894f7f48a29e95dcb4dc.tar.gz moa-id-spss-f4e83ea671c3bd743fca894f7f48a29e95dcb4dc.tar.bz2 moa-id-spss-f4e83ea671c3bd743fca894f7f48a29e95dcb4dc.zip | |
add sequence priority to STORK attribute providers
Diffstat (limited to 'id/server/idserverlib/src/main/java/at')
8 files changed, 79 insertions, 8 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java index 456baf49f..6f29744b5 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java @@ -23,6 +23,7 @@  package at.gv.egovernment.moa.id.protocols.stork2;  import java.util.ArrayList; +import java.util.Iterator;  import java.util.List;  import at.gv.egovernment.moa.id.auth.data.AuthenticationSession; @@ -135,9 +136,11 @@ public class AttributeCollector implements IAction {          // find the attribute provider plugin that can handle the response          IPersonalAttributeList newAttributes = null; -        for (AttributeProvider current : AttributeProviderFactory.getConfiguredPlugins(oaParam.getStorkAPs())) +         +        Iterator<AttributeProvider> attibuteProvidersInterator = AttributeProviderFactory.getConfiguredPlugins(oaParam.getStorkAPs());         +        while(attibuteProvidersInterator.hasNext())              try { -                newAttributes = current.parse(httpReq); +                newAttributes = attibuteProvidersInterator.next().parse(httpReq);                  // stop as soon as we hit a capable plugin                  break; @@ -203,7 +206,9 @@ public class AttributeCollector implements IAction {  				addOrUpdateAll(container.getResponse().getPersonalAttributeList(), aquiredAttributes);              	// - check if we can find a suitable AttributeProvider Plugin -                for (AttributeProvider currentProvider : AttributeProviderFactory.getConfiguredPlugins(oaParam.getStorkAPs())) { +		        Iterator<AttributeProvider> attibuteProvidersInterator = AttributeProviderFactory.getConfiguredPlugins(oaParam.getStorkAPs());         +		        while(attibuteProvidersInterator.hasNext()) { +		        	AttributeProvider currentProvider = attibuteProvidersInterator.next();                      // build a section of attribute provider's predefined attributes and missing attributes                      // only missing attributes that can be handled by attribute provider will be sent to it diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeProviderFactory.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeProviderFactory.java index ec64f7eb1..bcc031741 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeProviderFactory.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeProviderFactory.java @@ -32,7 +32,9 @@ import at.gv.egovernment.moa.id.protocols.stork2.attributeproviders.StorkAttribu  import at.gv.egovernment.moa.logging.Logger;  import java.util.ArrayList; +import java.util.Iterator;  import java.util.List; +import java.util.PriorityQueue;  /**   * A factory for creating AttributeProvider objects. @@ -89,16 +91,16 @@ public class AttributeProviderFactory {       * @param configuredAPs the configured a ps       * @return the configured plugins       */ -    public static List<AttributeProvider> getConfiguredPlugins( +    public static Iterator<AttributeProvider> getConfiguredPlugins(              List<AttributeProviderPlugin> configuredAPs) { -        List<AttributeProvider> result = new ArrayList<AttributeProvider>(); +    	PriorityQueue<AttributeProvider> result = new PriorityQueue<AttributeProvider>();          for (AttributeProviderPlugin current : configuredAPs) {              result.add(create(current.getName(), current.getUrl(), current.getAttributes()));              Logger.debug("Adding configured attribute provider: " + current.getClass().getName() + current.getName() + " at " + current.getUrl());          } -        return result; +        return result.iterator();      }  } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/AttributeProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/AttributeProvider.java index a8454b37c..4b50e2593 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/AttributeProvider.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/AttributeProvider.java @@ -40,7 +40,7 @@ import eu.stork.peps.auth.commons.PersonalAttribute;   * An {@link AttributeProvider} can fetch a set of stork attributes. It might complete the query within one method call,   * but might also need to redirect to another webservice to accomplish its task.   */ -public abstract class AttributeProvider { +public abstract class AttributeProvider implements Comparable<AttributeProvider>{  	protected String attributes; @@ -107,5 +107,32 @@ public abstract class AttributeProvider {          return supportedAttributeNames;      } - +     +    /** +     * Returns the sequence priority of this attribute provider. +     * Providers with small numbers are requested first.  +     *  +     * @return a sequence priority of this provider +     */ +    public abstract int getPriority(); +  +    /** +     * Compare the sequence priority of two attribute providers  +     * @param o attribute provider +     * @return 0 if priority is equal +     * @return -1 if priority if this is higher then from o +     * @return +1 if priority if o is higher then from this +     */ +	@Override +	public int compareTo(AttributeProvider o) { +    	if (this.getPriority() == o.getPriority()) +    		return 0; +    	 +    	if (this.getPriority() < o.getPriority()) +    		return -1; +    	 +    	else +    		return +1; +	} +      } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/EHvdAttributeProviderPlugin.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/EHvdAttributeProviderPlugin.java index 8af35673f..51cb472f2 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/EHvdAttributeProviderPlugin.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/EHvdAttributeProviderPlugin.java @@ -241,5 +241,12 @@ public class EHvdAttributeProviderPlugin extends AttributeProvider {  		throw new UnsupportedAttributeException();  	} +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.protocols.stork2.attributeproviders.AttributeProvider#getPriority() +	 */ +	@Override +	public int getPriority() { +		return 99; +	}  } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/EHvdAttribute_deprecatedProviderPlugin.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/EHvdAttribute_deprecatedProviderPlugin.java index fb62e43e5..c390f9407 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/EHvdAttribute_deprecatedProviderPlugin.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/EHvdAttribute_deprecatedProviderPlugin.java @@ -246,5 +246,12 @@ public class EHvdAttribute_deprecatedProviderPlugin extends AttributeProvider {  		throw new UnsupportedAttributeException();  	} +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.protocols.stork2.attributeproviders.AttributeProvider#getPriority() +	 */ +	@Override +	public int getPriority() { +		return 99; +	}  } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/MandateAttributeRequestProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/MandateAttributeRequestProvider.java index 07e5b70ba..2d92b7406 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/MandateAttributeRequestProvider.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/MandateAttributeRequestProvider.java @@ -205,5 +205,12 @@ public class MandateAttributeRequestProvider extends AttributeProvider {          return null;  //      } +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.protocols.stork2.attributeproviders.AttributeProvider#getPriority() +	 */ +	@Override +	public int getPriority() { +		return 99; +	}  } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/SignedDocAttributeRequestProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/SignedDocAttributeRequestProvider.java index 13b14b0be..5dc6b801e 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/SignedDocAttributeRequestProvider.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/SignedDocAttributeRequestProvider.java @@ -616,4 +616,12 @@ public class SignedDocAttributeRequestProvider extends AttributeProvider {  		      return success;  		} +	  	 +		/* (non-Javadoc) +		 * @see at.gv.egovernment.moa.id.protocols.stork2.attributeproviders.AttributeProvider#getPriority() +		 */ +		@Override +		public int getPriority() { +			return 99; +		}  } diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/StorkAttributeRequestProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/StorkAttributeRequestProvider.java index cb3a33c69..161e7193a 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/StorkAttributeRequestProvider.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/attributeproviders/StorkAttributeRequestProvider.java @@ -180,5 +180,13 @@ public class StorkAttributeRequestProvider extends AttributeProvider {  		Logger.info("STORK AttrRequest successfully rendered!");  	} +	/* (non-Javadoc) +	 * @see at.gv.egovernment.moa.id.protocols.stork2.attributeproviders.AttributeProvider#getPriority() +	 */ +	@Override +	public int getPriority() { +		return 99; +	} +  } | 
