Cleanup use of Guava library
[yangtools.git] / yang / yang-parser-spi / src / main / java / org / opendaylight / yangtools / yang / parser / spi / meta / DerivedNamespaceBehaviour.java
1 /*
2  * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.yangtools.yang.parser.spi.meta;
9
10 import static java.util.Objects.requireNonNull;
11
12 import java.util.Map;
13 import org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace;
14
15 @SuppressWarnings("checkstyle:classTypeParameterName")
16 public abstract class DerivedNamespaceBehaviour<K, V, DK, N extends IdentifierNamespace<K, V>,
17        DN extends IdentifierNamespace<DK, ?>> extends NamespaceBehaviour<K, V, N> {
18
19     private final Class<DN> derivedFrom;
20
21     protected DerivedNamespaceBehaviour(final Class<N> identifier, final Class<DN> derivedFrom) {
22         super(identifier);
23         this.derivedFrom = requireNonNull(derivedFrom);
24     }
25
26     public Class<DN> getDerivedFrom() {
27         return derivedFrom;
28     }
29
30     @Override
31     public Map<K, V> getAllFrom(final NamespaceStorageNode storage) {
32         throw new UnsupportedOperationException("Virtual namespaces does not support provision of all items.");
33     }
34
35     @Override
36     public abstract V getFrom(NamespaceBehaviour.NamespaceStorageNode storage, K key);
37
38     @Override
39     public void addTo(final NamespaceStorageNode storage, final K key, final V value) {
40         // Intentional noop
41     }
42
43     public abstract DK getSignificantKey(K key);
44 }