@Beta
@NonNullByDefault
-public abstract class AbstractIdentifiable<T> implements Identifiable<T> {
- private final @NonNull T identifier;
+public abstract class AbstractIdentifiable<T, I extends T> implements Identifiable<T> {
+ private final @NonNull I identifier;
- protected AbstractIdentifiable(final T identifier) {
+ protected AbstractIdentifiable(final I identifier) {
this.identifier = requireNonNull(identifier);
}
@Override
- public final T getIdentifier() {
+ public final I getIdentifier() {
return identifier;
}
--- /dev/null
+/*
+ * Copyright (c) 2019 PANTHEON.tech, s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.concepts;
+
+import com.google.common.annotations.Beta;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+
+@Beta
+@NonNullByDefault
+public abstract class AbstractSimpleIdentifiable<T> extends AbstractIdentifiable<T, T> {
+ protected AbstractSimpleIdentifiable(final T identifier) {
+ super(identifier);
+ }
+}
import java.util.stream.Stream;
import org.checkerframework.checker.lock.qual.GuardedBy;
import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.concepts.AbstractIdentifiable;
+import org.opendaylight.yangtools.concepts.AbstractSimpleIdentifiable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
* @param <K> worker key type
* @param <T> task type
*/
-abstract class AbstractBatchingExecutor<K, T> extends AbstractIdentifiable<String> {
+abstract class AbstractBatchingExecutor<K, T> extends AbstractSimpleIdentifiable<String> {
private static final Logger LOG = LoggerFactory.getLogger(AbstractBatchingExecutor.class);
/**
import com.google.common.annotations.Beta;
import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.opendaylight.yangtools.concepts.AbstractIdentifiable;
+import org.opendaylight.yangtools.concepts.AbstractSimpleIdentifiable;
/**
* Abstract base class for {@link FileGeneratorFactory} implementations. Its constructor enforces no spaces in
*/
@Beta
@NonNullByDefault
-public abstract class AbstractFileGeneratorFactory extends AbstractIdentifiable<String>
+public abstract class AbstractFileGeneratorFactory extends AbstractSimpleIdentifiable<String>
implements FileGeneratorFactory {
protected AbstractFileGeneratorFactory(final String identifier) {
super(identifier);
import java.util.HashMap;
import java.util.Map;
import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.concepts.AbstractIdentifiable;
+import org.opendaylight.yangtools.concepts.AbstractSimpleIdentifiable;
import org.opendaylight.yangtools.rfc7952.data.api.NormalizedMetadata;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
* Immutable implementation of {@link NormalizedMetadata}.
*/
@Beta
-public class ImmutableNormalizedMetadata extends AbstractIdentifiable<PathArgument> implements NormalizedMetadata {
+public class ImmutableNormalizedMetadata extends AbstractSimpleIdentifiable<PathArgument>
+ implements NormalizedMetadata {
private static final class Container extends ImmutableNormalizedMetadata {
private final @NonNull ImmutableMap<PathArgument, NormalizedMetadata> children;
import java.util.Map.Entry;
import java.util.Optional;
import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.concepts.AbstractIdentifiable;
+import org.opendaylight.yangtools.concepts.AbstractSimpleIdentifiable;
import org.opendaylight.yangtools.rfc8528.data.api.MountPointChild;
import org.opendaylight.yangtools.rfc8528.data.api.MountPointContext;
import org.opendaylight.yangtools.rfc8528.data.api.MountPointContextFactory;
*/
@Beta
// FIXME: 7.0.0: consider integrating into AbstractMountPointContextFactory
-public abstract class AbstractDynamicMountPointContextFactory extends AbstractIdentifiable<MountPointIdentifier>
+public abstract class AbstractDynamicMountPointContextFactory extends AbstractSimpleIdentifiable<MountPointIdentifier>
implements MountPointContextFactory {
private static final Logger LOG = LoggerFactory.getLogger(AbstractDynamicMountPointContextFactory.class);
import java.util.Optional;
import java.util.stream.Collectors;
import org.eclipse.jdt.annotation.NonNullByDefault;
-import org.opendaylight.yangtools.concepts.AbstractIdentifiable;
+import org.opendaylight.yangtools.concepts.AbstractSimpleIdentifiable;
import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.rfc8528.data.api.MountPointContext;
import org.opendaylight.yangtools.rfc8528.data.api.MountPointContextFactory;
/**
* Definition of a MountPoint, as known to RFC8528.
*/
- protected static final class MountPointDefinition extends AbstractIdentifiable<MountPointIdentifier>
+ protected static final class MountPointDefinition extends AbstractSimpleIdentifiable<MountPointIdentifier>
implements Immutable {
private final ImmutableSet<String> parentReferences;
private final boolean config;
return schemaRef.getChild(SHARED_SCHEMA).map(sharedSchema -> {
checkArgument(sharedSchema instanceof ContainerNode, "Unexpected shared-schema container %s", sharedSchema);
- return ((ContainerNode) sharedSchema).getChild(PARENT_REFERENCE).map(parentRef -> {
+ return ((ContainerNode) sharedSchema).getChild(PARENT_REFERENCE)
// FIXME: 7.0.0: parse XPaths. Do we have enough context for that?
- return ImmutableSet.<String>of();
- }).orElseGet(ImmutableSet::of);
+ .map(parentRef -> ImmutableSet.<String>of())
+ .orElseGet(ImmutableSet::of);
}).orElseGet(() -> {
checkArgument(schemaRef.getChild(INLINE).isPresent(), "Unhandled schema-ref type in %s", schemaRef);
return ImmutableSet.of();
import java.util.Collection;
import java.util.Optional;
import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.concepts.AbstractIdentifiable;
+import org.opendaylight.yangtools.concepts.AbstractSimpleIdentifiable;
import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.rfc8528.data.api.MountPointContext;
import org.opendaylight.yangtools.rfc8528.data.api.MountPointIdentifier;
import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
@Beta
-public final class ImmutableMountPointNode extends AbstractIdentifiable<MountPointIdentifier>
+public final class ImmutableMountPointNode extends AbstractSimpleIdentifiable<MountPointIdentifier>
implements MountPointNode, Immutable {
private final @NonNull MountPointContext mountCtx;
import java.util.Optional;
import javax.xml.transform.dom.DOMSource;
import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.concepts.AbstractIdentifiable;
+import org.opendaylight.yangtools.concepts.AbstractSimpleIdentifiable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
* Base strategy for converting an instance identifier into a normalized node structure.
* Use provided static methods for generic YangInstanceIdentifier -> NormalizedNode translation in ImmutableNodes.
*/
-abstract class InstanceIdToNodes<T extends PathArgument> extends AbstractIdentifiable<T> {
+abstract class InstanceIdToNodes<T extends PathArgument> extends AbstractSimpleIdentifiable<T> {
InstanceIdToNodes(final T identifier) {
super(identifier);
}
package org.opendaylight.yangtools.yang.data.impl.schema.nodes;
import com.google.common.base.MoreObjects.ToStringHelper;
-import org.opendaylight.yangtools.concepts.AbstractIdentifiable;
+import org.opendaylight.yangtools.concepts.AbstractSimpleIdentifiable;
import org.opendaylight.yangtools.concepts.Immutable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-public abstract class AbstractImmutableNormalizedNode<K extends PathArgument, V> extends AbstractIdentifiable<K>
+public abstract class AbstractImmutableNormalizedNode<K extends PathArgument, V> extends AbstractSimpleIdentifiable<K>
implements NormalizedNode<K, V>, Immutable {
protected AbstractImmutableNormalizedNode(final K nodeIdentifier) {
super(nodeIdentifier);
import java.util.stream.Collectors;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.yangtools.concepts.AbstractIdentifiable;
+import org.opendaylight.yangtools.concepts.AbstractSimpleIdentifiable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
*
* @param <T> Path Argument type
*/
-public abstract class DataSchemaContextNode<T extends PathArgument> extends AbstractIdentifiable<T> {
+public abstract class DataSchemaContextNode<T extends PathArgument> extends AbstractSimpleIdentifiable<T> {
private final DataSchemaNode dataSchemaNode;
protected DataSchemaContextNode(final T identifier, final SchemaNode schema) {
import java.util.List;
import java.util.Map;
import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.concepts.AbstractIdentifiable;
+import org.opendaylight.yangtools.concepts.AbstractSimpleIdentifiable;
import org.opendaylight.yangtools.rfc8528.data.api.MountPointChild;
import org.opendaylight.yangtools.rfc8528.data.api.MountPointContext;
import org.opendaylight.yangtools.rfc8528.data.api.MountPointContextFactory;
* YANG Schema Mount-supported data attached to either a {@code list} item or a {@code container}.
*/
@Beta
-public final class MountPointData extends AbstractIdentifiable<MountPointIdentifier> {
+public final class MountPointData extends AbstractSimpleIdentifiable<MountPointIdentifier> {
private static final Logger LOG = LoggerFactory.getLogger(MountPointData.class);
private final Map<ContainerName, MountPointChild> yangLib = new EnumMap<>(ContainerName.class);
import java.util.Optional;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.yangtools.concepts.AbstractIdentifiable;
+import org.opendaylight.yangtools.concepts.AbstractSimpleIdentifiable;
import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceRepresentation;
import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
import org.opendaylight.yangtools.yang.parser.rfc7950.ir.IRKeyword.Unqualified;
@Beta
-public final class IRSchemaSource extends AbstractIdentifiable<SourceIdentifier> implements SchemaSourceRepresentation {
+public final class IRSchemaSource extends AbstractSimpleIdentifiable<SourceIdentifier>
+ implements SchemaSourceRepresentation {
private final @NonNull IRStatement rootStatement;
private final @Nullable String symbolicName;
import java.io.InputStream;
import org.antlr.v4.runtime.CharStreams;
import org.antlr.v4.runtime.CommonTokenStream;
-import org.opendaylight.yangtools.concepts.AbstractIdentifiable;
+import org.opendaylight.yangtools.concepts.AbstractSimpleIdentifiable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.common.YangVersion;
* @author Robert Varga
*/
@Beta
-public final class YangStatementStreamSource extends AbstractIdentifiable<SourceIdentifier>
+public final class YangStatementStreamSource extends AbstractSimpleIdentifiable<SourceIdentifier>
implements StatementStreamSource {
private final IRStatement rootStatement;
private final String sourceName;
import java.net.URISyntaxException;
import java.util.Optional;
import javax.xml.transform.TransformerException;
-import org.opendaylight.yangtools.concepts.AbstractIdentifiable;
+import org.opendaylight.yangtools.concepts.AbstractSimpleIdentifiable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.YangVersion;
import org.opendaylight.yangtools.yang.model.api.meta.ArgumentDefinition;
* @author Robert Varga
*/
@Beta
-public final class YinStatementStreamSource extends AbstractIdentifiable<SourceIdentifier>
+public final class YinStatementStreamSource extends AbstractSimpleIdentifiable<SourceIdentifier>
implements StatementStreamSource {
private static final Logger LOG = LoggerFactory.getLogger(YinStatementStreamSource.class);
private static final LoadingCache<String, URI> URI_CACHE = CacheBuilder.newBuilder().weakValues().build(
import java.util.Optional;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.yangtools.concepts.AbstractIdentifiable;
+import org.opendaylight.yangtools.concepts.AbstractSimpleIdentifiable;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
* @param <N> Namespace Type
*/
public abstract class NamespaceBehaviour<K, V, N extends IdentifierNamespace<K, V>>
- extends AbstractIdentifiable<Class<N>> {
+ extends AbstractSimpleIdentifiable<Class<N>> {
public enum StorageNodeType {
/**