X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-model-util%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fmodel%2Frepo%2Futil%2FAbstractSchemaRepository.java;h=2413c6fc9679891a49d3a80ab25119b7aadf619c;hb=98ac2b04a469af0b0d69d17ef66799fb46a9c4ed;hp=bb6d1d4eb86ec71752ba472a68ae4631b69fcef2;hpb=7e571648e27863df485ac2d709d00cf0e5f9f6fe;p=yangtools.git 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 bb6d1d4eb8..2413c6fc96 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 @@ -87,13 +87,18 @@ public abstract class AbstractSchemaRepository implements SchemaRepository, Sche @Override 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, id)); + final ArrayList> sortedSchemaSourceRegistrations; + + synchronized (this) { + final ListMultimap, AbstractSchemaSourceRegistration> srcs = sources.get(id); + if (srcs == null) { + return Futures.immediateFailedCheckedFuture(new MissingSchemaSourceException("No providers registered for source" + id, id)); + } + + sortedSchemaSourceRegistrations = Lists.newArrayList(srcs.get(representation)); } // TODO, remove and make sources keep sorted multimap (e.g. ArrayListMultimap with SortedLists) - final ArrayList> sortedSchemaSourceRegistrations = Lists.newArrayList(srcs.get(representation)); Collections.sort(sortedSchemaSourceRegistrations, SchemaProviderCostComparator.INSTANCE); final Iterator> regs = sortedSchemaSourceRegistrations.iterator();