/*
* Copyright (c) 2011-2016 The original author or authors
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Apache License v2.0 which accompanies this distribution.
*
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* The Apache License v2.0 is available at
* http://www.opensource.org/licenses/apache2.0.php
*
* You may elect to redistribute this code under either of these licenses.
*/
package io.vertx.servicediscovery.types;
import io.vertx.codegen.annotations.DataObject;
import io.vertx.core.json.JsonObject;
Represents the location of a HTTP endpoint. This object (its json representation) will be used as "location" in a
service record.
Author: Clement Escoffier
/**
* Represents the location of a HTTP endpoint. This object (its json representation) will be used as "location" in a
* service record.
*
* @author <a href="http://escoffier.me">Clement Escoffier</a>
*/
@DataObject(generateConverter = true)
public class HttpLocation {
private String host;
private int port;
private String root = "";
private String endpoint;
private boolean ssl = false;
Creates a new HttpLocation
instance. /**
* Creates a new {@link HttpLocation} instance.
*/
public HttpLocation() {
// empty constructor
}
Creates a new HttpLocation
instance by copying another instance. Params: - other – the instance fo copy
/**
* Creates a new {@link HttpLocation} instance by copying another instance.
*
* @param other the instance fo copy
*/
public HttpLocation(HttpLocation other) {
this.host = other.host;
this.port = other.port;
this.root = other.root;
this.ssl = other.ssl;
}
Creates a new HttpLocation
from the given json object Params: - json – the json object
/**
* Creates a new {@link HttpLocation} from the given json object
*
* @param json the json object
*/
public HttpLocation(JsonObject json) {
this();
HttpLocationConverter.fromJson(json, this);
}
Returns: a json representation of the current HttpLocation
.
/**
* @return a json representation of the current {@link HttpLocation}.
*/
public JsonObject toJson() {
JsonObject json = new JsonObject();
HttpLocationConverter.toJson(this, json);
return json;
}
Returns: the host
/**
* @return the host
*/
public String getHost() {
return host;
}
Sets the host.
Params: - host – the host
Returns: the current HttpLocation
/**
* Sets the host.
*
* @param host the host
* @return the current {@link HttpLocation}
*/
public HttpLocation setHost(String host) {
this.host = host;
updateLocation();
return this;
}
Sets the endpoint, which is the URL of the service. The endpoint is automatically computed when you use the
other `setX` method.
Params: - endpoint – the endpoint
Returns: the current HttpLocation
/**
* Sets the endpoint, which is the URL of the service. The endpoint is automatically computed when you use the
* other `setX` method.
*
* @param endpoint the endpoint
* @return the current {@link HttpLocation}
*/
public HttpLocation setEndpoint(String endpoint) {
this.endpoint = endpoint;
return this;
}
Returns: the URL of the service
/**
* @return the URL of the service
*/
public String getEndpoint() {
return endpoint;
}
Returns: the port.
/**
* @return the port.
*/
public int getPort() {
return port;
}
Sets the port
Params: - port – the port
Returns: the current HttpLocation
/**
* Sets the port
*
* @param port the port
* @return the current {@link HttpLocation}
*/
public HttpLocation setPort(int port) {
this.port = port;
updateLocation();
return this;
}
Returns: the path of the service (root)
/**
* @return the path of the service (root)
*/
public String getRoot() {
updateLocation();
return root;
}
Sets the path of the service (root)
Params: - root – the root
Returns: the current HttpLocation
/**
* Sets the path of the service (root)
*
* @param root the root
* @return the current {@link HttpLocation}
*/
public HttpLocation setRoot(String root) {
if (root.startsWith("/")) {
this.root = root;
} else {
this.root = "/" + root;
}
updateLocation();
return this;
}
private void updateLocation() {
setEndpoint("http" + (isSsl() ? "s" : "") + "://" + host + ":" + port + root);
}
Sets whether or not the HTTP service is using https
. Params: - ssl –
true
to denotes that the service use https
Returns: the current HttpLocation
/**
* Sets whether or not the HTTP service is using {@code https}.
*
* @param ssl {@code true} to denotes that the service use {@code https}
* @return the current {@link HttpLocation}
*/
public HttpLocation setSsl(boolean ssl) {
this.ssl = ssl;
updateLocation();
return this;
}
Returns: true
if the location is using https
, false
otherwise.
/**
* @return {@code true} if the location is using {@code https}, {@code false} otherwise.
*/
public boolean isSsl() {
return ssl;
}
}