blob: cac285e1d6aae1fe4b4e6fbbceff931e1ff12396 [file] [log] [blame]
/*
* Copyright (c) 2016, 2020 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// 03/30/2016-2.7 Tomas Kraus
// - 490677: Initial API and implementation.
package org.eclipse.persistence.testing.tests.nosql;
import java.net.URI;
import java.net.URISyntaxException;
import org.eclipse.persistence.logging.AbstractSessionLog;
import org.eclipse.persistence.logging.SessionLog;
/**
* Oracle NoSQL database URI.
* <p>
* Parses URI {@link String} {@code "nosql://" <host> [ ':' <port> ] '/' <store>}.
*/
public class NoSQLURI {
/** Logger. */
private static final SessionLog LOG = AbstractSessionLog.getLog();
/** Shortcut to match beginning of URI. */
static final String KEYWORD = "nosql://";
/**
* Validate that provided {@link String} starts as Oracle NoSQL database URI.
* @return Value of {@code true} when provided {@link String} starts as Oracle NoSQL database URI or {@code false}
* otherwise.
*/
public static boolean startsUri(final String uri) {
return uri.trim().toLowerCase().startsWith(KEYWORD);
}
/** NoSQL database host. */
private final String host;
/** NoSQL database port. */
private final int port;
/** NoSQL database store. */
private final String store;
/**
* Creates an instance of Oracle NoSQL database URI.
* @param uriStr NoSQL database URI {@link String}.
*/
public NoSQLURI(final String uriStr) {
URI uri = null;
try {
uri = new URI(uriStr.trim());
} catch (URISyntaxException e) {
LOG.log(SessionLog.WARNING, String.format("Error when parsing URI: %s", e.getLocalizedMessage()));
}
if (uri != null) {
String uriPath = uri.getPath();
if (uriPath.startsWith("/")) {
uriPath = uriPath.substring(1);
}
host = uri.getHost();
port = uri.getPort();
store = uriPath;
} else {
host = null;
port = -1;
store = null;
}
}
/**
* Get NoSQL database host.
* @return NoSQL database host.
*/
public String getHost() {
return host;
}
/**
* Get NoSQL database port.
* @return NoSQL database port.
*/
public int getPort() {
return port;
}
/**
* Get NoSQL database store.
* @return NoSQL database store.
*/
public String getStore() {
return store;
}
}