package org.opennaas.extensions.roadm.wonesys.protocols; import java.net.URI; import java.net.URISyntaxException; import java.util.HashMap; import java.util.Map; import org.opennaas.core.resources.protocol.ProtocolException; import org.opennaas.core.resources.protocol.ProtocolSessionContext; public class WonesysProtocolSessionContextUtils { public static final String HOST_IP_ADDRESS = "protocol.hostip"; public static final String HOST_PORT = "protocol.hostport"; public static String getHost(ProtocolSessionContext protocolSessionContext) throws ProtocolException { /* * URI = [scheme:][//authority][path][?query][#fragment]; authority = [user-info@]host[:port] */ Map<String, Object> params = protocolSessionContext.getSessionParameters(); String uriStr = (String) params.get(ProtocolSessionContext.PROTOCOL_URI); if (uriStr == null) { throw new ProtocolException("Invalid uri"); } try { URI uri = new URI(uriStr); String host = uri.getHost(); return host; } catch (URISyntaxException e) { throw new ProtocolException(e); } } public static int getPort(ProtocolSessionContext protocolSessionContext) throws ProtocolException { Map<String, Object> params = protocolSessionContext.getSessionParameters(); String uriStr = (String) params.get(ProtocolSessionContext.PROTOCOL_URI); if (uriStr == null) { throw new ProtocolException("Invalid ProtocolSessionContext. It should contain a protocol uri."); } try { URI uri = new URI(uriStr); int port = uri.getPort(); return port; } catch (URISyntaxException e) { throw new ProtocolException(e); } } public static boolean isMock(ProtocolSessionContext protocolSessionContext) throws ProtocolException { Map<String, Object> params = protocolSessionContext.getSessionParameters(); // check if contains sessionParameter protocol.mock = true String isMock = (String) protocolSessionContext.getSessionParameters().get("protocol.mock"); if (isMock != null && isMock.equals("true")) { return true; } String uriStr = (String) params.get(ProtocolSessionContext.PROTOCOL_URI); if (uriStr == null) { throw new ProtocolException("Invalid ProtocolSessionContext. It should contain a protocol uri."); } // check if URIs query contains mock=true try { URI uri = new URI(uriStr); String query = uri.getQuery(); if (query != null) { if (query.startsWith("?")) query = query.substring(1); if (query.isEmpty()) return false; Map<String, String> queryParams = getQueryMap(query); if (queryParams.containsKey("mock")) { return queryParams.get("mock").equals("true"); } } return false; } catch (URISyntaxException e) { throw new ProtocolException(e); } } private static Map<String, String> getQueryMap(String query) { String[] params = query.split("&"); Map<String, String> map = new HashMap<String, String>(); for (String param : params) { String[] nameValue = param.split("="); if (nameValue.length == 2) { String name = nameValue[0]; String value = nameValue[1]; map.put(name, value); } } return map; } }