From 0773942456e68cf5560655b1bd782ab792c66251 Mon Sep 17 00:00:00 2001 From: Thomas Lenz Date: Thu, 26 Sep 2013 07:19:58 +0200 Subject: BugFix: -- MOAMetadataProvider.java: Destroy HTTPMetadataProvider and Timer manually if an Exception occurs -- ConfigurationDBRead.java: select OA with OAIdentifier (PublicPrefix) has matched to more then one OA in some special case. --- .../pvp2x/metadata/MOAMetadataProvider.java | 46 +++++++++++++++++----- 1 file changed, 36 insertions(+), 10 deletions(-) (limited to 'id/server/idserverlib') 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 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 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; -- cgit v1.2.3