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.
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;
}
}
return fetchSource(id, it);
}
- throw new MissingSchemaSourceException("All available providers exhausted", t);
+ throw new MissingSchemaSourceException("All available providers exhausted", id, t);
}
}), FETCH_MAPPER);
}
public <T extends SchemaSourceRepresentation> CheckedFuture<T, SchemaSourceException> getSchemaSource(final SourceIdentifier id, final Class<T> representation) {
final ListMultimap<Class<? extends SchemaSourceRepresentation>, AbstractSchemaSourceRegistration<?>> srcs = sources.get(id);
if (srcs == null) {
- return Futures.<T, SchemaSourceException>immediateFailedCheckedFuture(new MissingSchemaSourceException("No providers registered for source" + id));
+ return Futures.<T, SchemaSourceException>immediateFailedCheckedFuture(new MissingSchemaSourceException("No providers registered for source" + id, id));
}
// TODO, remove and make sources keep sorted multimap (e.g. ArrayListMultimap with SortedLists)
final Iterator<AbstractSchemaSourceRegistration<?>> regs = sortedSchemaSourceRegistrations.iterator();
if (!regs.hasNext()) {
return Futures.<T, SchemaSourceException>immediateFailedCheckedFuture(
- new MissingSchemaSourceException("No providers for source " + id + " representation " + representation + " available"));
+ new MissingSchemaSourceException("No providers for source " + id + " representation " + representation + " available", id));
}
CheckedFuture<T, SchemaSourceException> fetchSourceFuture = fetchSource(id, regs);
}
LOG.debug("Source {} not found in cache as {}", sourceIdentifier, file);
- return Futures.<T, SchemaSourceException>immediateFailedCheckedFuture(new MissingSchemaSourceException("Source not found"));
+ return Futures.<T, SchemaSourceException>immediateFailedCheckedFuture(new MissingSchemaSourceException("Source not found", sourceIdentifier));
}
@Override
return Futures.immediateCheckedFuture(present.source);
}
- return Futures.<T, SchemaSourceException>immediateFailedCheckedFuture(new MissingSchemaSourceException("Source not found"));
+ return Futures.<T, SchemaSourceException>immediateFailedCheckedFuture(new MissingSchemaSourceException("Source not found", sourceIdentifier));
}
@Override
final YangTextSchemaSource ret = sources.getIfPresent(sourceIdentifier);
if (ret == null) {
return Futures.<YangTextSchemaSource, SchemaSourceException>immediateFailedCheckedFuture(
- new MissingSchemaSourceException("URL for " + sourceIdentifier + " not registered"));
+ new MissingSchemaSourceException("URL for " + sourceIdentifier + " not registered", sourceIdentifier));
}
return Futures.immediateCheckedFuture(ret);