X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-clustering-commons%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fnode%2Futils%2Fserialization%2FPathArgumentSerializer.java;h=ed9073b5582ad96c5cbc74f7894c24213574ac0d;hb=4e696d9795fe7eef40369c05c340d137394126f3;hp=bf10316fd5d8b795154a1caf6d827e1e911d1d5c;hpb=531621aac4cff9d39cbd8668a53bdeba8a0e6d81;p=controller.git diff --git a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/PathArgumentSerializer.java b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/PathArgumentSerializer.java index bf10316fd5..ed9073b558 100644 --- a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/PathArgumentSerializer.java +++ b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/datastore/node/utils/serialization/PathArgumentSerializer.java @@ -8,12 +8,9 @@ package org.opendaylight.controller.cluster.datastore.node.utils.serialization; +import static org.opendaylight.controller.cluster.datastore.node.utils.serialization.PathArgumentType.getSerializablePathArgumentType; + import com.google.common.base.Preconditions; -import org.opendaylight.controller.cluster.datastore.node.utils.NodeIdentifierFactory; -import org.opendaylight.controller.cluster.datastore.node.utils.QNameFactory; -import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages; -import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -23,14 +20,18 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import static org.opendaylight.controller.cluster.datastore.node.utils.serialization.PathArgumentType.getSerializablePathArgumentType; +import org.opendaylight.controller.cluster.datastore.node.utils.NodeIdentifierFactory; +import org.opendaylight.controller.cluster.datastore.node.utils.QNameFactory; +import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; public class PathArgumentSerializer { private static final String REVISION_ARG = "?revision="; - private static final Map, PathArgumentAttributesGetter> pathArgumentAttributesGetters = new HashMap<>(); + private static final Map, PathArgumentAttributesGetter> PATH_ARGUMENT_ATTRIBUTES_GETTERS = new HashMap<>(); public static NormalizedNodeMessages.PathArgument serialize(QNameSerializationContext context, - YangInstanceIdentifier.PathArgument pathArgument){ + YangInstanceIdentifier.PathArgument pathArgument) { Preconditions.checkNotNull(context, "context should not be null"); Preconditions.checkNotNull(pathArgument, "pathArgument should not be null"); @@ -54,7 +55,7 @@ public class PathArgumentSerializer { public static YangInstanceIdentifier.PathArgument deSerialize(QNameDeSerializationContext context, - NormalizedNodeMessages.PathArgument pathArgument){ + NormalizedNodeMessages.PathArgument pathArgument) { Preconditions.checkNotNull(context, "context should not be null"); Preconditions.checkNotNull(pathArgument, "pathArgument should not be null"); @@ -62,80 +63,58 @@ public class PathArgumentSerializer { } - private static interface PathArgumentAttributesGetter { + private interface PathArgumentAttributesGetter { Iterable get( QNameSerializationContext context, YangInstanceIdentifier.PathArgument pathArgument); } static { - pathArgumentAttributesGetters.put(YangInstanceIdentifier.NodeWithValue.class, new PathArgumentAttributesGetter() { - @Override - public Iterable get( - QNameSerializationContext context, YangInstanceIdentifier.PathArgument pathArgument) { - - YangInstanceIdentifier.NodeWithValue identifier - = (YangInstanceIdentifier.NodeWithValue) pathArgument; + PATH_ARGUMENT_ATTRIBUTES_GETTERS.put(YangInstanceIdentifier.NodeWithValue.class, (context, pathArgument) -> { + YangInstanceIdentifier.NodeWithValue identifier = (YangInstanceIdentifier.NodeWithValue) pathArgument; - NormalizedNodeMessages.PathArgumentAttribute attribute = - buildAttribute(context, null, identifier.getValue()); + NormalizedNodeMessages.PathArgumentAttribute attribute = buildAttribute(context, null, + identifier.getValue()); - return Arrays.asList(attribute); - } + return Arrays.asList(attribute); }); - pathArgumentAttributesGetters.put(YangInstanceIdentifier.NodeIdentifierWithPredicates.class, new PathArgumentAttributesGetter() { - @Override - public Iterable get( - QNameSerializationContext context, YangInstanceIdentifier.PathArgument pathArgument) { - - YangInstanceIdentifier.NodeIdentifierWithPredicates identifier - = (YangInstanceIdentifier.NodeIdentifierWithPredicates) pathArgument; + PATH_ARGUMENT_ATTRIBUTES_GETTERS.put(YangInstanceIdentifier.NodeIdentifierWithPredicates.class, + (context, pathArgument) -> { + YangInstanceIdentifier.NodeIdentifierWithPredicates identifier = + (YangInstanceIdentifier.NodeIdentifierWithPredicates) pathArgument; Map keyValues = identifier.getKeyValues(); - List attributes = - new ArrayList<>(keyValues.size()); + List attributes = new ArrayList<>(keyValues.size()); for (Entry e : keyValues.entrySet()) { - NormalizedNodeMessages.PathArgumentAttribute attribute = - buildAttribute(context, e.getKey(), e.getValue()); + NormalizedNodeMessages.PathArgumentAttribute attribute = buildAttribute(context, e.getKey(), + e.getValue()); attributes.add(attribute); } return attributes; - } - }); + }); - pathArgumentAttributesGetters.put(YangInstanceIdentifier.AugmentationIdentifier.class, new PathArgumentAttributesGetter() { - @Override - public Iterable get( - QNameSerializationContext context, YangInstanceIdentifier.PathArgument pathArgument) { - - YangInstanceIdentifier.AugmentationIdentifier identifier - = (YangInstanceIdentifier.AugmentationIdentifier) pathArgument; + PATH_ARGUMENT_ATTRIBUTES_GETTERS.put(YangInstanceIdentifier.AugmentationIdentifier.class, + (context, pathArgument) -> { + YangInstanceIdentifier.AugmentationIdentifier identifier = + (YangInstanceIdentifier.AugmentationIdentifier) pathArgument; Set possibleChildNames = identifier.getPossibleChildNames(); - List attributes = - new ArrayList<>(possibleChildNames.size()); + List attributes = new ArrayList<>( + possibleChildNames.size()); for (QName key : possibleChildNames) { Object value = key; - NormalizedNodeMessages.PathArgumentAttribute attribute = - buildAttribute(context, key, value); + NormalizedNodeMessages.PathArgumentAttribute attribute = buildAttribute(context, key, value); attributes.add(attribute); } return attributes; - } - }); + }); - - pathArgumentAttributesGetters.put(YangInstanceIdentifier.NodeIdentifier.class, new PathArgumentAttributesGetter() { - @Override - public Iterable get( - QNameSerializationContext context, YangInstanceIdentifier.PathArgument pathArgument) { - return Collections.emptyList(); - } - }); + PATH_ARGUMENT_ATTRIBUTES_GETTERS.put(YangInstanceIdentifier.NodeIdentifier.class, + (context, pathArgument) -> Collections.emptyList()); } private static NormalizedNodeMessages.PathArgumentAttribute buildAttribute( @@ -150,45 +129,42 @@ public class PathArgumentSerializer { } - private static NormalizedNodeMessages.QName.Builder encodeQName(QNameSerializationContext context, - QName qName) { - if(qName == null) { + private static NormalizedNodeMessages.QName.Builder encodeQName(QNameSerializationContext context, QName qname) { + if (qname == null) { return NormalizedNodeMessages.QName.getDefaultInstance().toBuilder(); } - NormalizedNodeMessages.QName.Builder qNameBuilder = - NormalizedNodeMessages.QName.newBuilder(); + NormalizedNodeMessages.QName.Builder qnameBuilder = NormalizedNodeMessages.QName.newBuilder(); - qNameBuilder.setNamespace(context.addNamespace(qName.getNamespace())); + qnameBuilder.setNamespace(context.addNamespace(qname.getNamespace())); - qNameBuilder.setRevision(context.addRevision(qName.getRevision())); + qnameBuilder.setRevision(context.addRevision(qname.getRevision())); - qNameBuilder.setLocalName(context.addLocalName(qName.getLocalName())); + qnameBuilder.setLocalName(context.addLocalName(qname.getLocalName())); - return qNameBuilder; + return qnameBuilder; } private static Iterable getPathArgumentAttributes( QNameSerializationContext context, YangInstanceIdentifier.PathArgument pathArgument) { - return pathArgumentAttributesGetters.get(pathArgument.getClass()).get(context, pathArgument); + return PATH_ARGUMENT_ATTRIBUTES_GETTERS.get(pathArgument.getClass()).get(context, pathArgument); } - private static String qNameToString(QNameDeSerializationContext context, - NormalizedNodeMessages.QName qName){ + private static String qNameToString(QNameDeSerializationContext context, NormalizedNodeMessages.QName qname) { // If this serializer is used qName cannot be null (see encodeQName) // adding null check only in case someone tried to deSerialize a protocol buffer node // that was not serialized using the PathArgumentSerializer // Preconditions.checkNotNull(qName, "qName should not be null"); // Preconditions.checkArgument(qName.getNamespace() != -1, "qName.namespace should be valid"); - String namespace = context.getNamespace(qName.getNamespace()); - String localName = context.getLocalName(qName.getLocalName()); + String namespace = context.getNamespace(qname.getNamespace()); + String localName = context.getLocalName(qname.getLocalName()); StringBuilder sb; - if(qName.getRevision() != -1){ - String revision = context.getRevision(qName.getRevision()); - sb = new StringBuilder(namespace.length() + REVISION_ARG.length() + revision.length() + - localName.length() + 2); + if (qname.getRevision() != -1) { + String revision = context.getRevision(qname.getRevision()); + sb = new StringBuilder(namespace.length() + REVISION_ARG.length() + revision.length() + + localName.length() + 2); sb.append('(').append(namespace).append(REVISION_ARG).append( revision).append(')').append(localName); } else { @@ -200,7 +176,7 @@ public class PathArgumentSerializer { } /** - * Parse a protocol buffer PathArgument and return an MD-SAL PathArgument + * Parse a protocol buffer PathArgument and return an MD-SAL PathArgument. * * @param pathArgument protocol buffer PathArgument * @return MD-SAL PathArgument @@ -208,11 +184,10 @@ public class PathArgumentSerializer { private static YangInstanceIdentifier.PathArgument parsePathArgument( QNameDeSerializationContext context, NormalizedNodeMessages.PathArgument pathArgument) { - switch(PathArgumentType.values()[pathArgument.getIntType()]){ + switch (PathArgumentType.values()[pathArgument.getIntType()]) { case NODE_IDENTIFIER_WITH_VALUE : { - - YangInstanceIdentifier.NodeWithValue nodeWithValue = - new YangInstanceIdentifier.NodeWithValue( + YangInstanceIdentifier.NodeWithValue nodeWithValue = + new YangInstanceIdentifier.NodeWithValue<>( QNameFactory.create(qNameToString(context, pathArgument.getNodeType())), parseAttribute(context, pathArgument.getAttribute(0))); @@ -220,7 +195,6 @@ public class PathArgumentSerializer { } case NODE_IDENTIFIER_WITH_PREDICATES : { - YangInstanceIdentifier.NodeIdentifierWithPredicates nodeIdentifierWithPredicates = new YangInstanceIdentifier.NodeIdentifierWithPredicates( @@ -231,14 +205,13 @@ public class PathArgumentSerializer { } case AUGMENTATION_IDENTIFIER: { + Set qnameSet = new HashSet<>(); - Set qNameSet = new HashSet<>(); - - for(NormalizedNodeMessages.PathArgumentAttribute attribute : pathArgument.getAttributeList()){ - qNameSet.add(QNameFactory.create(qNameToString(context, attribute.getName()))); + for (NormalizedNodeMessages.PathArgumentAttribute attribute : pathArgument.getAttributeList()) { + qnameSet.add(QNameFactory.create(qNameToString(context, attribute.getName()))); } - return new YangInstanceIdentifier.AugmentationIdentifier(qNameSet); + return new YangInstanceIdentifier.AugmentationIdentifier(qnameSet); } default: { @@ -254,7 +227,7 @@ public class PathArgumentSerializer { List attributesList) { Map map; - if(attributesList.size() == 1) { + if (attributesList.size() == 1) { NormalizedNodeMessages.PathArgumentAttribute attribute = attributesList.get(0); NormalizedNodeMessages.QName name = attribute.getName(); Object value = parseAttribute(context, attribute); @@ -262,7 +235,7 @@ public class PathArgumentSerializer { } else { map = new HashMap<>(); - for(NormalizedNodeMessages.PathArgumentAttribute attribute : attributesList){ + for (NormalizedNodeMessages.PathArgumentAttribute attribute : attributesList) { NormalizedNodeMessages.QName name = attribute.getName(); Object value = parseAttribute(context, attribute); @@ -274,8 +247,7 @@ public class PathArgumentSerializer { } private static Object parseAttribute(QNameDeSerializationContext context, - NormalizedNodeMessages.PathArgumentAttribute attribute){ + NormalizedNodeMessages.PathArgumentAttribute attribute) { return ValueSerializer.deSerialize(context, attribute); } - }