X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-rest-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frest%2Fimpl%2FRestUtil.java;h=7890931a27fea2585de986ce524718f9df5db6a2;hp=0c8c75839bca19d590c3f58a1ce915563181e8e0;hb=c46e223995956f1f759c551163c212947c1e2fb7;hpb=9d02282775e0464dd2b1e3e1c14bf02729f18ee9 diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestUtil.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestUtil.java index 0c8c75839b..7890931a27 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestUtil.java +++ b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/RestUtil.java @@ -1,24 +1,31 @@ +/* + * Copyright (c) 2014 Cisco Systems, Inc. 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.controller.sal.rest.impl; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; - import javax.xml.stream.events.StartElement; - import org.opendaylight.controller.sal.restconf.impl.IdentityValuesDTO; import org.opendaylight.controller.sal.restconf.impl.IdentityValuesDTO.IdentityValue; import org.opendaylight.controller.sal.restconf.impl.IdentityValuesDTO.Predicate; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; public final class RestUtil { - + + // FIXME: BUG-1275: this is code duplicates data.impl.codec + public static final String SQUOTE = "'"; public static final String DQUOTE = "\""; private static final Pattern PREDICATE_PATTERN = Pattern.compile("\\[(.*?)\\]"); - public final static TypeDefinition resolveBaseTypeFrom(TypeDefinition type) { + public final static TypeDefinition resolveBaseTypeFrom(final TypeDefinition type) { TypeDefinition superType = type; while (superType.getBaseType() != null) { superType = superType.getBaseType(); @@ -26,7 +33,7 @@ public final class RestUtil { return superType; } - public static IdentityValuesDTO asInstanceIdentifier(String value, PrefixesMaping prefixMap) { + public static IdentityValuesDTO asInstanceIdentifier(final String value, final PrefixesMaping prefixMap) { String valueTrimmed = value.trim(); if (!valueTrimmed.startsWith("/")) { return null; @@ -35,33 +42,33 @@ public final class RestUtil { if (xPathParts.length < 2) { // must be at least "/pr:node" return null; } - IdentityValuesDTO identityValuesDTO = new IdentityValuesDTO(); + IdentityValuesDTO identityValuesDTO = new IdentityValuesDTO(value); for (int i = 1; i < xPathParts.length; i++) { String xPathPartTrimmed = xPathParts[i].trim(); - + String xPathPartStr = getIdAndPrefixAsStr(xPathPartTrimmed); IdentityValue identityValue = toIdentity(xPathPartStr, prefixMap); if (identityValue == null) { return null; } - + List predicates = toPredicates(xPathPartTrimmed, prefixMap); if (predicates == null) { return null; } identityValue.setPredicates(predicates); - + identityValuesDTO.add(identityValue); } return identityValuesDTO.getValuesWithNamespaces().isEmpty() ? null : identityValuesDTO; } - - private static String getIdAndPrefixAsStr(String pathPart) { + + private static String getIdAndPrefixAsStr(final String pathPart) { int predicateStartIndex = pathPart.indexOf("["); return predicateStartIndex == -1 ? pathPart : pathPart.substring(0, predicateStartIndex); } - - private static IdentityValue toIdentity(String xPathPart, PrefixesMaping prefixMap) { + + private static IdentityValue toIdentity(final String xPathPart, final PrefixesMaping prefixMap) { String xPathPartTrimmed = xPathPart.trim(); if (xPathPartTrimmed.isEmpty()) { return null; @@ -80,7 +87,7 @@ public final class RestUtil { return new IdentityValue(namespace, identifier, namespace.equals(prefix) ? null : prefix); } - private static List toPredicates(String predicatesStr, PrefixesMaping prefixMap) { + private static List toPredicates(final String predicatesStr, final PrefixesMaping prefixMap) { List result = new ArrayList<>(); List predicates = new ArrayList<>(); Matcher matcher = PREDICATE_PATTERN.matcher(predicatesStr); @@ -97,8 +104,7 @@ public final class RestUtil { } result.add(new Predicate(null, predicateValue)); } else { - IdentityValue identityValue = toIdentity(predicate.substring(0, indexOfEqualityMark), - prefixMap); + IdentityValue identityValue = toIdentity(predicate.substring(0, indexOfEqualityMark), prefixMap); if (identityValue == null || predicateValue == null) { return null; } @@ -109,7 +115,7 @@ public final class RestUtil { return result; } - private static String toPredicateValue(String predicatedValue) { + private static String toPredicateValue(final String predicatedValue) { String predicatedValueTrimmed = predicatedValue.trim(); if ((predicatedValueTrimmed.startsWith(DQUOTE) || predicatedValueTrimmed.startsWith(SQUOTE)) && (predicatedValueTrimmed.endsWith(DQUOTE) || predicatedValueTrimmed.endsWith(SQUOTE))) { @@ -125,12 +131,12 @@ public final class RestUtil { public static class PrefixMapingFromXml implements PrefixesMaping { StartElement startElement = null; - public PrefixMapingFromXml(StartElement startElement) { + public PrefixMapingFromXml(final StartElement startElement) { this.startElement = startElement; } @Override - public String getNamespace(String prefix) { + public String getNamespace(final String prefix) { return startElement.getNamespaceContext().getNamespaceURI(prefix); } } @@ -138,7 +144,7 @@ public final class RestUtil { public static class PrefixMapingFromJson implements PrefixesMaping { @Override - public String getNamespace(String prefix) { + public String getNamespace(final String prefix) { return prefix; } }