*/
package org.opendaylight.yangtools.yang.model.repo.util;
+import com.google.common.annotations.Beta;
import com.google.common.base.Preconditions;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceRegistration;
import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceRegistry;
+@Beta
public class InMemorySchemaSourceCache<T extends SchemaSourceRepresentation> extends AbstractSchemaSourceCache<T> {
private static final class CacheEntry<T extends SchemaSourceRepresentation> {
private final SchemaSourceRegistration<T> reg;
private final Cache<SourceIdentifier, CacheEntry<T>> cache;
- protected InMemorySchemaSourceCache(final SchemaSourceRegistry consumer, final Class<T> representation, final int maxSize) {
+ protected InMemorySchemaSourceCache(final SchemaSourceRegistry consumer, final Class<T> representation, final CacheBuilder<Object, Object> builder) {
super(consumer, representation, Costs.IMMEDIATE);
- cache = CacheBuilder.newBuilder().softValues().maximumSize(maxSize).removalListener(LISTENER).build();
+ cache = builder.removalListener(LISTENER).build();
+ }
+
+ public static <R extends SchemaSourceRepresentation> InMemorySchemaSourceCache<R> createSoftCache(final SchemaSourceRegistry consumer, final Class<R> representation) {
+ return new InMemorySchemaSourceCache<>(consumer, representation, CacheBuilder.newBuilder().softValues());
}
@Override
Object mod = allNS.get(ns);
String name = null;
Date revision = null;
+
+ if(mod instanceof ModuleOrModuleBuilder) {
+ ModuleOrModuleBuilder modOrmodBuilder = ((ModuleOrModuleBuilder) mod);
+ if(modOrmodBuilder.isModule()) {
+ mod = ((ModuleOrModuleBuilder) mod).getModule();
+ } else if (modOrmodBuilder.isModuleBuilder()) {
+ mod = ((ModuleOrModuleBuilder) mod).getModuleBuilder();
+ } else {
+ LOGGER.warn("ModuleOrModuleBuilder is neither Module or ModuleBuilder");
+ }
+ }
if (mod instanceof Module) {
name = ((Module) mod).getName();
revision = ((Module) mod).getRevision();
} else if (mod instanceof ModuleBuilder) {
name = ((ModuleBuilder) mod).getName();
revision = ((ModuleBuilder) mod).getRevision();
+ } else {
+ LOGGER.warn("Module has no name: {}", mod);
}
if (!(fromName.equals(name))) {
LOGGER.warn(