From 92bac5c7dceba26572fd6d86acee55e38a5529fe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20=C3=85kre=20Solberg?= <andreas.solberg@uninett.no>
Date: Mon, 7 Jan 2008 14:59:58 +0000
Subject: [PATCH] Updated files to use the new abstraction classes for metadata
 instead of the old class.

git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@143 44740490-163a-0410-bde0-09ae8108e29a
---
 lib/SimpleSAML/Bindings/SAML20/HTTPPost.php   |  5 ++-
 .../Bindings/SAML20/HTTPRedirect.php          |  4 +-
 lib/SimpleSAML/Bindings/Shib13/HTTPPost.php   |  5 ++-
 .../Metadata/MetaDataStorageHandler.php       | 12 ++---
 .../MetaDataStorageHandlerFlatfile.php        | 11 +++--
 lib/SimpleSAML/Utilities.php                  | 44 +++++++++++++++++++
 lib/SimpleSAML/XML/AuthnResponse.php          |  4 +-
 lib/SimpleSAML/XML/SAML20/AuthnRequest.php    |  4 +-
 lib/SimpleSAML/XML/SAML20/AuthnResponse.php   |  4 +-
 lib/SimpleSAML/XML/SAML20/LogoutRequest.php   |  4 +-
 lib/SimpleSAML/XML/SAML20/LogoutResponse.php  |  4 +-
 11 files changed, 76 insertions(+), 25 deletions(-)

diff --git a/lib/SimpleSAML/Bindings/SAML20/HTTPPost.php b/lib/SimpleSAML/Bindings/SAML20/HTTPPost.php
index 33c2a00a9..0482bb065 100644
--- a/lib/SimpleSAML/Bindings/SAML20/HTTPPost.php
+++ b/lib/SimpleSAML/Bindings/SAML20/HTTPPost.php
@@ -12,7 +12,8 @@
  */
  
 require_once('SimpleSAML/Configuration.php');
-require_once('SimpleSAML/XML/MetaDataStore.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
+
 require_once('SimpleSAML/XML/SAML20/AuthnResponse.php');
 require_once('SimpleSAML/XHTML/Template.php');
 
@@ -25,7 +26,7 @@ class SimpleSAML_Bindings_SAML20_HTTPPost {
 	private $configuration = null;
 	private $metadata = null;
 
-	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_XML_MetaDataStore $metadatastore) {
+	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_Metadata_MetaDataStorageHandler $metadatastore) {
 		$this->configuration = $configuration;
 		$this->metadata = $metadatastore;
 	}
diff --git a/lib/SimpleSAML/Bindings/SAML20/HTTPRedirect.php b/lib/SimpleSAML/Bindings/SAML20/HTTPRedirect.php
index 8d5fc5e36..6d777b639 100644
--- a/lib/SimpleSAML/Bindings/SAML20/HTTPRedirect.php
+++ b/lib/SimpleSAML/Bindings/SAML20/HTTPRedirect.php
@@ -13,7 +13,7 @@
  
 require_once('SimpleSAML/Configuration.php');
 require_once('SimpleSAML/Utilities.php');
-require_once('SimpleSAML/XML/MetaDataStore.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
 require_once('SimpleSAML/XHTML/Template.php');
 
 
@@ -25,7 +25,7 @@ class SimpleSAML_Bindings_SAML20_HTTPRedirect {
 	private $configuration = null;
 	private $metadata = null;
 
-	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_XML_MetaDataStore $metadatastore) {
+	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_Metadata_MetaDataStorageHandler $metadatastore) {
 		$this->configuration = $configuration;
 		$this->metadata = $metadatastore;
 	}
diff --git a/lib/SimpleSAML/Bindings/Shib13/HTTPPost.php b/lib/SimpleSAML/Bindings/Shib13/HTTPPost.php
index e12b54da1..3b200430a 100644
--- a/lib/SimpleSAML/Bindings/Shib13/HTTPPost.php
+++ b/lib/SimpleSAML/Bindings/Shib13/HTTPPost.php
@@ -12,7 +12,8 @@
  */
  
 require_once('SimpleSAML/Configuration.php');
-require_once('SimpleSAML/XML/MetaDataStore.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
+
 require_once('SimpleSAML/XML/Shib13/AuthnResponse.php');
  
 /**
@@ -23,7 +24,7 @@ class SimpleSAML_Bindings_Shib13_HTTPPost {
 	private $configuration = null;
 	private $metadata = null;
 
-	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_XML_MetaDataStore $metadatastore) {
+	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_Metadata_MetaDataStorageHandler $metadatastore) {
 		$this->configuration = $configuration;
 		$this->metadata = $metadatastore;
 	}
diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php
index ed9b9660b..38881163c 100644
--- a/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php
+++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandler.php
@@ -15,11 +15,11 @@ require_once('SimpleSAML/Utilities.php');
 /**
  * Configuration of SimpleSAMLphp
  */
-class SimpleSAML_Metadata_MetaDataStorageHandler {
+abstract class SimpleSAML_Metadata_MetaDataStorageHandler {
 
 
-	private $metadata = null;
-	private $hostmap = null;
+	protected $metadata = null;
+	protected $hostmap = null;
 
 
 	/* This static variable contains a reference to the current
@@ -86,15 +86,15 @@ class SimpleSAML_Metadata_MetaDataStorageHandler {
 
 		if($handler === 'flatfile') {
 		
-			require_once('SimpleSAML/Metadata/MetaDataHandlerFlatfile.php');
-			$sh = new SimpleSAML_Metadata_MetaDataHandlerFlatfile();
+			require_once('SimpleSAML/Metadata/MetaDataStorageHandlerFlatfile.php');
+			$sh = new SimpleSAML_Metadata_MetaDataStorageHandlerFlatfile();
 			
 		} else {
 			throw new Exception('Invalid value for the [metadata.handler] configuration option. Unknown handler: ' . $handler);
 		}
 		
 		/* Set the session handler. */
-		self::$sessionHandler = $sh;
+		self::$metadataHandler = $sh;
 	}
 	
 	
diff --git a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatfile.php b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatfile.php
index 1ea953467..054754136 100644
--- a/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatfile.php
+++ b/lib/SimpleSAML/Metadata/MetaDataStorageHandlerFlatfile.php
@@ -11,11 +11,12 @@
 
 require_once('SimpleSAML/Configuration.php');
 require_once('SimpleSAML/Utilities.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
 
 /**
  * Configuration of SimpleSAMLphp
  */
-class SimpleSAML_XML_MetaDataStore {
+class SimpleSAML_Metadata_MetaDataStorageHandlerFlatFile extends SimpleSAML_Metadata_MetaDataStorageHandler {
 
 
 
@@ -39,8 +40,12 @@ class SimpleSAML_XML_MetaDataStore {
 				throw new Exception('Trying to load illegal set of Meta data [' . $set . ']');
 		}
 		
-		$metadatasetfile = $this->configuration->getBaseDir() . '/' . 
-			$this->configuration->getValue('metadatadir') . '/' . $set . '.php';
+		/* Get the configuration. */
+		$config = SimpleSAML_Configuration::getInstance();
+		assert($config instanceof SimpleSAML_Configuration);
+		
+		$metadatasetfile = $config->getBaseDir() . '/' . 
+			$config->getValue('metadatadir') . '/' . $set . '.php';
 		
 		
 		if (!file_exists($metadatasetfile)) {
diff --git a/lib/SimpleSAML/Utilities.php b/lib/SimpleSAML/Utilities.php
index 8a30040f3..8d55afbad 100644
--- a/lib/SimpleSAML/Utilities.php
+++ b/lib/SimpleSAML/Utilities.php
@@ -117,6 +117,50 @@ class SimpleSAML_Utilities {
 		return $uniqueid;
 	}
 	
+	public static function array_values_equals($array, $equalsvalue) {
+		$foundkeys = array();
+		foreach ($array AS $key => $value) {
+			if ($value === $equalsvalue) $foundkeys[] = $key;
+		}
+		return $foundkeys;
+	}
+	
+	public static function checkAssocArrayRules($target, $required, $optional = array()) {
+
+		$results = array(
+			'required.found' 		=> array(),
+			'required.notfound'		=> array(),
+			'optional.found'		=> array(),
+			'optional.notfound'		=> array(),
+			'leftovers'				=> array()
+		);
+		
+		foreach ($target AS $key => $value) {
+			if(in_array($key, $required)) {
+				$results['required.found'][$key] = $value;
+			} elseif (in_array($key, $optional)) {
+				$results['optional.found'][$key] = $value;
+			} else {
+				$results['leftovers'][$key] = $value;
+			}
+		}
+		
+		foreach ($required AS $key) {
+			if (!array_key_exists($key, $target)) {
+				$results['required.notfound'][] = $key;
+			}
+		}
+		
+		foreach ($optional AS $key) {
+			if (!array_key_exists($key, $target)) {
+				$results['optional.notfound'][] = $key;
+			}
+		}
+		return $results;
+	}
+	
+	
+	
 
 	/* This function dumps a backtrace to the error log.
 	 *
diff --git a/lib/SimpleSAML/XML/AuthnResponse.php b/lib/SimpleSAML/XML/AuthnResponse.php
index c2cd28d46..faeef7be4 100644
--- a/lib/SimpleSAML/XML/AuthnResponse.php
+++ b/lib/SimpleSAML/XML/AuthnResponse.php
@@ -14,7 +14,7 @@
 require_once('SimpleSAML/Configuration.php');
 require_once('SimpleSAML/Session.php');
 require_once('SimpleSAML/Utilities.php');
-require_once('SimpleSAML/XML/MetaDataStore.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
 
 require_once('xmlseclibs.php');
  
@@ -34,7 +34,7 @@ abstract class SimpleSAML_XML_AuthnResponse {
 	
 	const PROTOCOL = 'urn:oasis:names:tc:SAML:2.0';
 
-	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_XML_MetaDataStore $metadatastore) {
+	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_Metadata_MetaDataStorageHandler $metadatastore) {
 		$this->configuration = $configuration;
 		$this->metadata = $metadatastore;
 	}
diff --git a/lib/SimpleSAML/XML/SAML20/AuthnRequest.php b/lib/SimpleSAML/XML/SAML20/AuthnRequest.php
index eb203f915..b804e0071 100644
--- a/lib/SimpleSAML/XML/SAML20/AuthnRequest.php
+++ b/lib/SimpleSAML/XML/SAML20/AuthnRequest.php
@@ -12,7 +12,7 @@
  */
  
 require_once('SimpleSAML/Configuration.php');
-require_once('SimpleSAML/XML/MetaDataStore.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
  
 /**
  * Configuration of SimpleSAMLphp
@@ -30,7 +30,7 @@ class SimpleSAML_XML_SAML20_AuthnRequest {
 	const PROTOCOL = 'urn:oasis:names:tc:SAML:2.0';
 
 
-	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_XML_MetaDataStore $metadatastore) {
+	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_Metadata_MetaDataStorageHandler $metadatastore) {
 		$this->configuration = $configuration;
 		$this->metadata = $metadatastore;
 	}
diff --git a/lib/SimpleSAML/XML/SAML20/AuthnResponse.php b/lib/SimpleSAML/XML/SAML20/AuthnResponse.php
index db76521b9..8f0390f6d 100644
--- a/lib/SimpleSAML/XML/SAML20/AuthnResponse.php
+++ b/lib/SimpleSAML/XML/SAML20/AuthnResponse.php
@@ -14,7 +14,7 @@
 require_once('SimpleSAML/Configuration.php');
 require_once('SimpleSAML/Session.php');
 require_once('SimpleSAML/Utilities.php');
-require_once('SimpleSAML/XML/MetaDataStore.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
 require_once('SimpleSAML/XML/AuthnResponse.php');
 
 require_once('xmlseclibs.php');
@@ -46,7 +46,7 @@ class SimpleSAML_XML_SAML20_AuthnResponse extends SimpleSAML_XML_AuthnResponse {
 	
 	
 
-	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_XML_MetaDataStore $metadatastore) {
+	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_Metadata_MetaDataStorageHandler $metadatastore) {
 		$this->configuration = $configuration;
 		$this->metadata = $metadatastore;
 	}
diff --git a/lib/SimpleSAML/XML/SAML20/LogoutRequest.php b/lib/SimpleSAML/XML/SAML20/LogoutRequest.php
index 9900daee9..a4bbd294a 100644
--- a/lib/SimpleSAML/XML/SAML20/LogoutRequest.php
+++ b/lib/SimpleSAML/XML/SAML20/LogoutRequest.php
@@ -10,7 +10,7 @@
  */
  
 require_once('SimpleSAML/Configuration.php');
-require_once('SimpleSAML/XML/MetaDataStore.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
  
 /**
  * Configuration of SimpleSAMLphp
@@ -27,7 +27,7 @@ class SimpleSAML_XML_SAML20_LogoutRequest {
 	
 	const PROTOCOL = 'urn:oasis:names:tc:SAML:2.0';
 
-	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_XML_MetaDataStore $metadatastore) {
+	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_Metadata_MetaDataStorageHandler $metadatastore) {
 		$this->configuration = $configuration;
 		$this->metadata = $metadatastore;
 	}
diff --git a/lib/SimpleSAML/XML/SAML20/LogoutResponse.php b/lib/SimpleSAML/XML/SAML20/LogoutResponse.php
index f209333c5..f30f87a23 100644
--- a/lib/SimpleSAML/XML/SAML20/LogoutResponse.php
+++ b/lib/SimpleSAML/XML/SAML20/LogoutResponse.php
@@ -14,7 +14,7 @@
 require_once('SimpleSAML/Configuration.php');
 require_once('SimpleSAML/Session.php');
 require_once('SimpleSAML/Utilities.php');
-require_once('SimpleSAML/XML/MetaDataStore.php');
+require_once('SimpleSAML/Metadata/MetaDataStorageHandler.php');
 
 require_once('xmlseclibs.php');
  
@@ -32,7 +32,7 @@ class SimpleSAML_XML_SAML20_LogoutResponse {
 	
 	const PROTOCOL = 'urn:oasis:names:tc:SAML:2.0';
 
-	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_XML_MetaDataStore $metadatastore) {
+	function __construct(SimpleSAML_Configuration $configuration, SimpleSAML_Metadata_MetaDataStorageHandler $metadatastore) {
 		$this->configuration = $configuration;
 		$this->metadata = $metadatastore;
 	}
-- 
GitLab