From 2c61f48b106aec414dedf70d846b8fd581f17de8 Mon Sep 17 00:00:00 2001 From: Maros Marsalek Date: Fri, 8 Aug 2014 10:52:17 +0200 Subject: [PATCH] BUG-997 Add SourceIdentifier to MissingSchemaSourceException Change-Id: Ia4a595492935a66371faa844c5286a312a7897e2 Signed-off-by: Maros Marsalek --- .../repo/api/MissingSchemaSourceException.java | 16 ++++++++++++---- .../repo/util/AbstractSchemaRepository.java | 6 +++--- .../repo/util/FilesystemSchemaSourceCache.java | 2 +- .../repo/util/InMemorySchemaSourceCache.java | 2 +- .../parser/repo/URLSchemaContextResolver.java | 2 +- 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/MissingSchemaSourceException.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/MissingSchemaSourceException.java index 17c9c90617..89138d6a57 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/MissingSchemaSourceException.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/MissingSchemaSourceException.java @@ -8,6 +8,7 @@ package org.opendaylight.yangtools.yang.model.repo.api; import com.google.common.annotations.Beta; +import com.google.common.base.Preconditions; /** * Exception thrown when a the specified schema source is not available. @@ -16,11 +17,18 @@ import com.google.common.annotations.Beta; public class MissingSchemaSourceException extends SchemaSourceException { private static final long serialVersionUID = 1L; - public MissingSchemaSourceException(final String message) { - super(message); + private final SourceIdentifier id; + + public MissingSchemaSourceException(final String message, final SourceIdentifier id) { + this(message, id, null); + } + + public MissingSchemaSourceException(final String s, final SourceIdentifier id, final Throwable t) { + super(s, t); + this.id = Preconditions.checkNotNull(id); } - public MissingSchemaSourceException(final String message, final Throwable cause) { - super(message, cause); + public SourceIdentifier getSourceId() { + return id; } } diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/AbstractSchemaRepository.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/AbstractSchemaRepository.java index 4b530e7dfb..e8bcc06510 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/AbstractSchemaRepository.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/AbstractSchemaRepository.java @@ -80,7 +80,7 @@ public abstract class AbstractSchemaRepository implements SchemaRepository, Sche return fetchSource(id, it); } - throw new MissingSchemaSourceException("All available providers exhausted", t); + throw new MissingSchemaSourceException("All available providers exhausted", id, t); } }), FETCH_MAPPER); } @@ -89,7 +89,7 @@ public abstract class AbstractSchemaRepository implements SchemaRepository, Sche public CheckedFuture getSchemaSource(final SourceIdentifier id, final Class representation) { final ListMultimap, AbstractSchemaSourceRegistration> srcs = sources.get(id); if (srcs == null) { - return Futures.immediateFailedCheckedFuture(new MissingSchemaSourceException("No providers registered for source" + id)); + return Futures.immediateFailedCheckedFuture(new MissingSchemaSourceException("No providers registered for source" + id, id)); } // TODO, remove and make sources keep sorted multimap (e.g. ArrayListMultimap with SortedLists) @@ -99,7 +99,7 @@ public abstract class AbstractSchemaRepository implements SchemaRepository, Sche final Iterator> regs = sortedSchemaSourceRegistrations.iterator(); if (!regs.hasNext()) { return Futures.immediateFailedCheckedFuture( - new MissingSchemaSourceException("No providers for source " + id + " representation " + representation + " available")); + new MissingSchemaSourceException("No providers for source " + id + " representation " + representation + " available", id)); } CheckedFuture fetchSourceFuture = fetchSource(id, regs); diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/FilesystemSchemaSourceCache.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/FilesystemSchemaSourceCache.java index 8fc07a1d71..675a695341 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/FilesystemSchemaSourceCache.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/FilesystemSchemaSourceCache.java @@ -117,7 +117,7 @@ public final class FilesystemSchemaSourceCacheimmediateFailedCheckedFuture(new MissingSchemaSourceException("Source not found")); + return Futures.immediateFailedCheckedFuture(new MissingSchemaSourceException("Source not found", sourceIdentifier)); } @Override diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/InMemorySchemaSourceCache.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/InMemorySchemaSourceCache.java index ac820d28d7..60dfb90a88 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/InMemorySchemaSourceCache.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/InMemorySchemaSourceCache.java @@ -54,7 +54,7 @@ public class InMemorySchemaSourceCache ext return Futures.immediateCheckedFuture(present.source); } - return Futures.immediateFailedCheckedFuture(new MissingSchemaSourceException("Source not found")); + return Futures.immediateFailedCheckedFuture(new MissingSchemaSourceException("Source not found", sourceIdentifier)); } @Override diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/URLSchemaContextResolver.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/URLSchemaContextResolver.java index 47de6b1a54..bbcd95e220 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/URLSchemaContextResolver.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/URLSchemaContextResolver.java @@ -169,7 +169,7 @@ public class URLSchemaContextResolver implements SchemaSourceProviderimmediateFailedCheckedFuture( - new MissingSchemaSourceException("URL for " + sourceIdentifier + " not registered")); + new MissingSchemaSourceException("URL for " + sourceIdentifier + " not registered", sourceIdentifier)); } return Futures.immediateCheckedFuture(ret); -- 2.36.6