aboutsummaryrefslogtreecommitdiff
path: root/id/server/idserverlib/src
diff options
context:
space:
mode:
Diffstat (limited to 'id/server/idserverlib/src')
-rw-r--r--id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/pvp2x/metadata/MOAMetadataProvider.java46
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;