X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fbinding%2Ftest%2FAbstractSchemaAwareTest.java;h=524b903bd02b5399468fb914809336d8bd49ef2e;hb=c4b4b98f56ab1d9821edb737912632c2867ae783;hp=aebe05dd038f891c83d5a766b5be09f89eef9946;hpb=70cd4b01dd47a66c5591e6f8151430bb9c274a09;p=controller.git diff --git a/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/md/sal/binding/test/AbstractSchemaAwareTest.java b/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/md/sal/binding/test/AbstractSchemaAwareTest.java index aebe05dd03..524b903bd0 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/md/sal/binding/test/AbstractSchemaAwareTest.java +++ b/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/md/sal/binding/test/AbstractSchemaAwareTest.java @@ -7,23 +7,43 @@ */ package org.opendaylight.controller.md.sal.binding.test; +import com.google.common.cache.CacheBuilder; +import com.google.common.cache.CacheLoader; +import com.google.common.cache.LoadingCache; +import com.google.common.collect.ImmutableSet; +import java.util.Set; import org.junit.Before; import org.opendaylight.mdsal.binding.generator.impl.ModuleInfoBackedContext; import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections; import org.opendaylight.yangtools.yang.binding.YangModuleInfo; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -public abstract class AbstractSchemaAwareTest { +@Deprecated +public abstract class AbstractSchemaAwareTest { + private static final LoadingCache> MODULE_INFO_CACHE = CacheBuilder.newBuilder() + .weakKeys().weakValues().build(new CacheLoader>() { + @Override + public Set load(final ClassLoader key) { + return BindingReflections.loadModuleInfos(key); + } + }); + private static final LoadingCache, SchemaContext> SCHEMA_CONTEXT_CACHE = + CacheBuilder.newBuilder().weakValues().build(new CacheLoader, SchemaContext>() { + @Override + public SchemaContext load(final Set key) { + final ModuleInfoBackedContext moduleContext = ModuleInfoBackedContext.create(); + moduleContext.addModuleInfos(key); + return moduleContext.tryToCreateSchemaContext().get(); + } + }); - protected Iterable getModuleInfos() throws Exception { - return BindingReflections.loadModuleInfos(); + protected Set getModuleInfos() throws Exception { + return MODULE_INFO_CACHE.getUnchecked(Thread.currentThread().getContextClassLoader()); } protected SchemaContext getSchemaContext() throws Exception { - final Iterable moduleInfos = getModuleInfos(); - final ModuleInfoBackedContext moduleContext = ModuleInfoBackedContext.create(); - moduleContext.addModuleInfos(moduleInfos); - return moduleContext.tryToCreateSchemaContext().get(); + // ImmutableSet guarantees non-null + return SCHEMA_CONTEXT_CACHE.getUnchecked(ImmutableSet.copyOf(getModuleInfos())); } @Before