2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
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
9 package org.opendaylight.controller.netconf.impl.util;
11 import java.util.regex.Matcher;
12 import java.util.regex.Pattern;
14 import org.opendaylight.controller.netconf.impl.NetconfServerSessionNegotiator.AdditionalHeader;
16 import com.google.common.base.Preconditions;
18 public class AdditionalHeaderUtil {
20 private static final Pattern pattern = Pattern
21 .compile("\\[(?<username>[^;]+);(?<address>[0-9\\.]+)[:/](?<port>[0-9]+);(?<transport>[a-z]+)[^\\]]+\\]");
22 private static final Pattern customHeaderPattern = Pattern
23 .compile("\\[(?<username>[^;]+);(?<address>[0-9\\.]+)[:/](?<port>[0-9]+);(?<transport>[a-z]+);(?<sessionIdentifier>[a-z]+)[^\\]]+\\]");
25 public static AdditionalHeader fromString(String additionalHeader) {
26 additionalHeader = additionalHeader.trim();
27 Matcher matcher = pattern.matcher(additionalHeader);
28 Matcher matcher2 = customHeaderPattern.matcher(additionalHeader);
29 Preconditions.checkArgument(matcher.matches(), "Additional header in wrong format %s, expected %s",
30 additionalHeader, pattern);
31 String username = matcher.group("username");
32 String address = matcher.group("address");
33 String transport = matcher.group("transport");
34 String sessionIdentifier = "client";
35 if (matcher2.matches()) {
36 sessionIdentifier = matcher2.group("sessionIdentifier");
38 return new AdditionalHeader(username, address, transport, sessionIdentifier);