diff options
Diffstat (limited to 'id/server/idserverlib/src/main')
| -rw-r--r-- | id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/metadata/MOAMetadataProvider.java | 46 | 
1 files changed, 36 insertions, 10 deletions
| diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/metadata/MOAMetadataProvider.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/metadata/MOAMetadataProvider.java index 107ee22ee..443b960a0 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/metadata/MOAMetadataProvider.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/metadata/MOAMetadataProvider.java @@ -107,6 +107,8 @@ public class MOAMetadataProvider implements MetadataProvider {  			Iterator<OnlineApplication> oaIt = oaList.iterator();  			while (oaIt.hasNext()) { +				HTTPMetadataProvider httpProvider = null; +				  				try {  					OnlineApplication oa = oaIt.next();  					OAPVP2 pvp2Config = oa.getAuthComponentOA().getOAPVP2(); @@ -124,7 +126,7 @@ public class MOAMetadataProvider implements MetadataProvider {  								!providersinuse.containsKey(metadataurl) ) {  							//PVP2 OA is new, add it to MOAMetadataProvider  							Logger.info("Loading metadata for: " + oa.getFriendlyName()); -							HTTPMetadataProvider httpProvider = createNewHTTPMetaDataProvider( +							httpProvider = createNewHTTPMetaDataProvider(  									pvp2Config.getMetadataURL(),   									pvp2Config.getCertificate(),  									oa.getFriendlyName()); @@ -138,6 +140,12 @@ public class MOAMetadataProvider implements MetadataProvider {  					Logger.error(  							"Failed to add Metadata (unhandled reason: "  									+ e.getMessage(), e); +					 +					if (httpProvider != null) { +						Logger.debug("Destroy failed Metadata provider"); +						httpProvider.destroy(); +					} +					  				}	  			} @@ -213,6 +221,8 @@ public class MOAMetadataProvider implements MetadataProvider {  				.getAllActiveOnlineApplications();  		Iterator<OnlineApplication> oaIt = oaList.iterator();  		while (oaIt.hasNext()) { +			HTTPMetadataProvider httpProvider = null; +			  			try {  				OnlineApplication oa = oaIt.next();  				Logger.info("Loading metadata for: " + oa.getFriendlyName()); @@ -222,7 +232,7 @@ public class MOAMetadataProvider implements MetadataProvider {  					if (!providersinuse.containsKey(metadataURL)) { -						HTTPMetadataProvider httpProvider = createNewHTTPMetaDataProvider( +						httpProvider = createNewHTTPMetaDataProvider(  								metadataURL,   								pvp2Config.getCertificate(),  								oa.getFriendlyName()); @@ -242,6 +252,11 @@ public class MOAMetadataProvider implements MetadataProvider {  				Logger.error(  						"Failed to add Metadata (unhandled reason: "  								+ e.getMessage(), e); +				 +				if (httpProvider != null) { +					Logger.debug("Destroy failed Metadata provider"); +					httpProvider.destroy(); +				}  			}			  		} @@ -260,8 +275,12 @@ public class MOAMetadataProvider implements MetadataProvider {  	}  	private HTTPMetadataProvider createNewHTTPMetaDataProvider(String metadataURL, byte[] certificate, String oaName) { -		try {						 -			HTTPMetadataProvider httpProvider = new HTTPMetadataProvider(new Timer(), new HttpClient(),  +		HTTPMetadataProvider httpProvider = null; +		Timer timer= null; +		 +		try { +			timer = new Timer(); +			httpProvider = new HTTPMetadataProvider(timer, new HttpClient(),   					metadataURL);  			httpProvider.setParserPool(new BasicParserPool());  			httpProvider.setRequireValidMetadata(true); @@ -279,16 +298,23 @@ public class MOAMetadataProvider implements MetadataProvider {  			return httpProvider; -		} catch (MetadataProviderException e) { -			Logger.error( -					"Failed to add Metadata file for " -							+ oaName + "[ " -							+ e.getMessage() + " ]", e); -		} catch (CertificateException e) { +		} catch (Throwable e) {  			Logger.error(  					"Failed to add Metadata file for "  							+ oaName + "[ "  							+ e.getMessage() + " ]", e); +						 +			if (httpProvider != null) { +				Logger.debug("Destroy failed Metadata provider"); +				httpProvider.destroy(); +			} +			 +			if (timer != null) { +				Logger.debug("Destroy Timer."); +				timer.cancel(); +			} + +			  		}  		return null;	 | 
