Skip to content

Commit

Permalink
Removed dependency on commons
Browse files Browse the repository at this point in the history
  • Loading branch information
artem-v committed Sep 24, 2024
1 parent d574611 commit d539f4e
Show file tree
Hide file tree
Showing 45 changed files with 210 additions and 74 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
</scm>

<properties>
<scalecube-cluster.version>2.6.17</scalecube-cluster.version>
<scalecube-cluster.version>2.6.18.rc1</scalecube-cluster.version>
<scalecube-security.version>1.0.32</scalecube-security.version>

<reactor.version>2020.0.32</reactor.version>
Expand Down
139 changes: 139 additions & 0 deletions services-api/src/main/java/io/scalecube/services/Address.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
package io.scalecube.services;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Address {

public static final Address NULL_ADDRESS = Address.create("nullhost", 0);

public static final Pattern ADDRESS_FORMAT = Pattern.compile("(?<host>^.*):(?<port>\\d+$)");

private String host;
private int port;

Address() {}

private Address(String host, int port) {
this.host = host;
this.port = port;
}

/**
* Parses given host:port string to create Address instance.
*
* @param hostandport must come in form {@code host:port}
*/
public static Address from(String hostandport) {
if (hostandport == null || hostandport.isEmpty()) {
throw new IllegalArgumentException("host-and-port string must be present");
}

Matcher matcher = ADDRESS_FORMAT.matcher(hostandport);
if (!matcher.find()) {
throw new IllegalArgumentException("can't parse host-and-port string from: " + hostandport);
}

String host = matcher.group(1);
if (host == null || host.isEmpty()) {
throw new IllegalArgumentException("can't parse host from: " + hostandport);
}

int port;
try {
port = Integer.parseInt(matcher.group(2));
} catch (NumberFormatException ex) {
throw new IllegalArgumentException("can't parse port from: " + hostandport, ex);
}

return new Address(host, port);
}

/**
* Create address from host and port.
*
* @param host host
* @param port port
* @return address
*/
public static Address create(String host, int port) {
return new Address(host, port);
}

/**
* Getting local IP address by the address of local host. <b>NOTE:</b> returned IP address is
* expected to be a publicly visible IP address.
*
* @throws RuntimeException wrapped {@link UnknownHostException}
*/
public static InetAddress getLocalIpAddress() {
try {
return InetAddress.getLocalHost();
} catch (UnknownHostException e) {
throw new RuntimeException(e);
}
}

/**
* Returns host.
*
* @return host
*/
public String host() {
return host;
}

/**
* Returns port.
*
* @return port
*/
public int port() {
return port;
}

/**
* Returns new address instance with the specified port.
*
* @param port port
* @return address instance
*/
public Address port(int port) {
return Address.create(host, port);
}

/**
* Returns new address instance with applied port offset.
*
* @param portOffset portOffset
* @return address instance
*/
public Address withPortOffset(int portOffset) {
return Address.create(host, port + portOffset);
}

@Override
public boolean equals(Object other) {
if (this == other) {
return true;
}
if (other == null || getClass() != other.getClass()) {
return false;
}
Address that = (Address) other;
return Objects.equals(host, that.host) && Objects.equals(port, that.port);
}

@Override
public int hashCode() {
return Objects.hash(host, port);
}

@Override
public String toString() {
return host + ":" + port;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.scalecube.services;

import io.scalecube.net.Address;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.scalecube.services;

import io.scalecube.net.Address;
import io.scalecube.services.api.Qualifier;
import java.util.Collections;
import java.util.HashMap;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.scalecube.services.discovery.api;

import io.scalecube.net.Address;
import io.scalecube.services.Address;
import reactor.core.publisher.Flux;

public interface ServiceDiscovery {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.scalecube.services.gateway;

import io.scalecube.net.Address;
import io.scalecube.services.Address;
import reactor.core.publisher.Mono;

public interface Gateway {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.scalecube.services.transport.api;

import io.scalecube.net.Address;
import io.scalecube.services.Address;

public interface ServerTransport {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import io.scalecube.cluster.membership.MembershipConfig;
import io.scalecube.cluster.membership.MembershipEvent;
import io.scalecube.cluster.transport.api.TransportConfig;
import io.scalecube.net.Address;
import io.scalecube.services.Address;
import io.scalecube.services.ServiceEndpoint;
import io.scalecube.services.discovery.api.ServiceDiscovery;
import io.scalecube.services.discovery.api.ServiceDiscoveryEvent;
Expand Down Expand Up @@ -90,7 +90,7 @@ public void onMembershipEvent(MembershipEvent event) {

@Override
public Address address() {
return cluster != null ? cluster.address() : null;
return cluster != null ? Address.from(cluster.address()) : null;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
import io.scalecube.cluster.membership.MembershipConfig;
import io.scalecube.cluster.metadata.JdkMetadataCodec;
import io.scalecube.cluster.metadata.MetadataCodec;
import io.scalecube.net.Address;
import io.scalecube.services.Address;
import io.scalecube.services.ServiceEndpoint;
import io.scalecube.services.ServiceMethodDefinition;
import io.scalecube.services.ServiceRegistration;
Expand Down Expand Up @@ -234,13 +234,13 @@ private Mono<ServiceDiscovery> newServiceDiscovery(
.gossip(cfg -> GOSSIP_CONFIG)
.failureDetector(cfg -> FAILURE_DETECTOR_CONFIG)
.membership(cfg -> MEMBERSHIP_CONFIG)
.membership(cfg -> cfg.seedMembers(seedAddress)));
.membership(cfg -> cfg.seedMembers(seedAddress.toString())));
}

private void startSeed(MetadataCodec metadataCodec) {
new ScalecubeServiceDiscovery()
.transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory()))
.membership(opts -> opts.seedMembers(SEED_ADDRESS))
.membership(opts -> opts.seedMembers(SEED_ADDRESS.toString()))
.options(opts -> opts.metadata(newServiceEndpoint()))
.options(opts -> opts.metadataCodec(metadataCodec))
.gossip(cfg -> GOSSIP_CONFIG)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,6 @@ private static ScalecubeServiceDiscovery discovery(
return new ScalecubeServiceDiscovery()
.transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory()))
.options(opts -> opts.metadata(endpoint))
.membership(opts -> opts.seedMembers(service.discoveryAddress()));
.membership(opts -> opts.seedMembers(service.discoveryAddress().toString()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,6 @@ private static ScalecubeServiceDiscovery discovery(
return new ScalecubeServiceDiscovery()
.transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory()))
.options(opts -> opts.metadata(endpoint))
.membership(opts -> opts.seedMembers(service.discoveryAddress()));
.membership(opts -> opts.seedMembers(service.discoveryAddress().toString()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,6 @@ private static ScalecubeServiceDiscovery discovery(
return new ScalecubeServiceDiscovery()
.transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory()))
.options(opts -> opts.metadata(endpoint))
.membership(opts -> opts.seedMembers(service.discoveryAddress()));
.membership(opts -> opts.seedMembers(service.discoveryAddress().toString()));
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.scalecube.services.examples.codecs;

import io.scalecube.net.Address;
import io.scalecube.services.Address;
import io.scalecube.services.Microservices;
import io.scalecube.services.discovery.ScalecubeServiceDiscovery;
import io.scalecube.services.examples.helloworld.service.GreetingServiceImpl;
Expand Down Expand Up @@ -42,7 +42,7 @@ public static void main(String[] args) {
new ScalecubeServiceDiscovery()
.transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory()))
.options(opts -> opts.metadata(endpoint))
.membership(cfg -> cfg.seedMembers(seedAddress)))
.membership(cfg -> cfg.seedMembers(seedAddress.toString())))
.transport(RSocketServiceTransport::new)
.services(new GreetingServiceImpl())
.startAwait();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.scalecube.services.examples.exceptions;

import io.scalecube.net.Address;
import io.scalecube.services.Address;
import io.scalecube.services.Microservices;
import io.scalecube.services.ServiceInfo;
import io.scalecube.services.discovery.ScalecubeServiceDiscovery;
Expand Down Expand Up @@ -43,7 +43,7 @@ public static void main(String[] args) throws InterruptedException {
new ScalecubeServiceDiscovery()
.transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory()))
.options(opts -> opts.metadata(endpoint))
.membership(cfg -> cfg.seedMembers(address1)))
.membership(cfg -> cfg.seedMembers(address1.toString())))
.transport(RSocketServiceTransport::new)
.services(
call -> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.scalecube.services.examples.gateway;

import io.scalecube.net.Address;
import io.scalecube.services.Address;
import io.scalecube.services.gateway.Gateway;
import io.scalecube.services.gateway.GatewayOptions;
import java.net.InetSocketAddress;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.scalecube.services.examples.gateway;

import io.scalecube.net.Address;
import io.scalecube.services.Address;
import io.scalecube.services.gateway.Gateway;
import io.scalecube.services.gateway.GatewayOptions;
import java.net.InetSocketAddress;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.scalecube.services.examples.helloworld;

import io.scalecube.net.Address;
import io.scalecube.services.Address;
import io.scalecube.services.Microservices;
import io.scalecube.services.discovery.ScalecubeServiceDiscovery;
import io.scalecube.services.examples.helloworld.service.GreetingServiceImpl;
Expand Down Expand Up @@ -46,7 +46,7 @@ public static void main(String[] args) {
new ScalecubeServiceDiscovery()
.transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory()))
.options(opts -> opts.metadata(endpoint))
.membership(cfg -> cfg.seedMembers(seedAddress)))
.membership(cfg -> cfg.seedMembers(seedAddress.toString())))
.transport(RSocketServiceTransport::new)
.services(new GreetingServiceImpl())
.startAwait();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.scalecube.services.examples.helloworld;

import io.scalecube.net.Address;
import io.scalecube.services.Address;
import io.scalecube.services.Microservices;
import io.scalecube.services.ServiceCall;
import io.scalecube.services.api.ServiceMessage;
Expand Down Expand Up @@ -53,7 +53,7 @@ public static void main(String[] args) {
new ScalecubeServiceDiscovery()
.transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory()))
.options(opts -> opts.metadata(endpoint))
.membership(cfg -> cfg.seedMembers(seedAddress)))
.membership(cfg -> cfg.seedMembers(seedAddress.toString())))
.transport(RSocketServiceTransport::new)
.services(new GreetingServiceImpl())
.startAwait();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.scalecube.services.examples.helloworld;

import io.scalecube.net.Address;
import io.scalecube.services.Address;
import io.scalecube.services.Microservices;
import io.scalecube.services.discovery.ScalecubeServiceDiscovery;
import io.scalecube.services.examples.helloworld.service.BidiGreetingImpl;
Expand Down Expand Up @@ -47,7 +47,7 @@ public static void main(String[] args) {
new ScalecubeServiceDiscovery()
.transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory()))
.options(opts -> opts.metadata(endpoint))
.membership(cfg -> cfg.seedMembers(seedAddress)))
.membership(cfg -> cfg.seedMembers(seedAddress.toString())))
.transport(RSocketServiceTransport::new)
.services(new BidiGreetingImpl())
.startAwait();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package io.scalecube.services.examples.services;

import io.scalecube.net.Address;
import io.scalecube.services.Address;
import io.scalecube.services.Microservices;
import io.scalecube.services.discovery.ScalecubeServiceDiscovery;
import io.scalecube.services.transport.rsocket.RSocketServiceTransport;
Expand Down Expand Up @@ -35,7 +35,7 @@ public static void main(String[] args) {
new ScalecubeServiceDiscovery()
.transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory()))
.options(opts -> opts.metadata(endpoint))
.membership(cfg -> cfg.seedMembers(gatewayAddress)))
.membership(cfg -> cfg.seedMembers(gatewayAddress.toString())))
.transport(RSocketServiceTransport::new)
.services(new Service2Impl())
.startAwait();
Expand All @@ -47,7 +47,7 @@ public static void main(String[] args) {
new ScalecubeServiceDiscovery()
.transport(cfg -> cfg.transportFactory(new WebsocketTransportFactory()))
.options(opts -> opts.metadata(endpoint))
.membership(cfg -> cfg.seedMembers(gatewayAddress)))
.membership(cfg -> cfg.seedMembers(gatewayAddress.toString())))
.transport(RSocketServiceTransport::new)
.services(new Service1Impl())
.startAwait();
Expand Down
Loading

0 comments on commit d539f4e

Please sign in to comment.