Skip to content

Commit 69b9fd6

Browse files
authored
Merge pull request #289 from scalecube/feature/issue-283-cluster-codec-artifact-CR1arvy
[CR][287] Feature/issue 283 cluster codec artifact
2 parents a219dff + 801c7d3 commit 69b9fd6

File tree

25 files changed

+310
-194
lines changed

25 files changed

+310
-194
lines changed

cluster-api/src/main/java/io/scalecube/cluster/Cluster.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public interface Cluster {
7474
<T> Optional<T> metadata();
7575

7676
/**
77-
* Returns cluster member metadata by given member with default metadata type.
77+
* Returns cluster member metadata by given member.
7878
*
7979
* @param member cluster member
8080
* @return cluster member metadata

cluster-api/src/main/java/io/scalecube/cluster/ClusterConfig.java

Lines changed: 119 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import io.scalecube.cluster.fdetector.FailureDetectorConfig;
44
import io.scalecube.cluster.gossip.GossipConfig;
55
import io.scalecube.cluster.membership.MembershipConfig;
6+
import io.scalecube.cluster.metadata.MetadataCodec;
67
import io.scalecube.cluster.metadata.MetadataDecoder;
78
import io.scalecube.cluster.metadata.MetadataEncoder;
89
import io.scalecube.cluster.transport.api.TransportConfig;
@@ -32,12 +33,13 @@ public final class ClusterConfig implements Cloneable {
3233

3334
private Object metadata;
3435
private int metadataTimeout = DEFAULT_METADATA_TIMEOUT;
36+
private MetadataCodec metadataCodec = MetadataCodec.INSTANCE;
3537
private MetadataEncoder metadataEncoder = MetadataEncoder.INSTANCE;
3638
private MetadataDecoder metadataDecoder = MetadataDecoder.INSTANCE;
3739

3840
private String memberAlias;
39-
private String memberHost;
40-
private Integer memberPort;
41+
private String containerHost;
42+
private Integer containerPort;
4143

4244
private TransportConfig transportConfig = TransportConfig.defaultConfig();
4345
private FailureDetectorConfig failureDetectorConfig = FailureDetectorConfig.defaultConfig();
@@ -93,7 +95,7 @@ public <T> T metadata() {
9395
}
9496

9597
/**
96-
* Sets a metadata.
98+
* Setter for metadata.
9799
*
98100
* @param metadata metadata
99101
* @return new {@code ClusterConfig} instance
@@ -109,7 +111,7 @@ public int metadataTimeout() {
109111
}
110112

111113
/**
112-
* Sets a metadataTimeout.
114+
* Setter for metadataTimeout.
113115
*
114116
* @param metadataTimeout metadata timeout
115117
* @return new {@code ClusterConfig} instance
@@ -120,60 +122,129 @@ public ClusterConfig metadataTimeout(int metadataTimeout) {
120122
return c;
121123
}
122124

125+
public MetadataCodec metadataCodec() {
126+
return metadataCodec;
127+
}
128+
129+
/**
130+
* Setter for metadataCodec.
131+
*
132+
* @param metadataCodec metadata codec
133+
* @return new {@code ClusterConfig} instance
134+
*/
135+
public ClusterConfig metadataCodec(MetadataCodec metadataCodec) {
136+
ClusterConfig c = clone();
137+
c.metadataCodec = metadataCodec;
138+
return c;
139+
}
140+
141+
/**
142+
* Deprecated since {@code 2.4.10} in favor of {@link MetadataCodec}.
143+
*
144+
* @return metadataEncoder
145+
*/
146+
@Deprecated
123147
public MetadataEncoder metadataEncoder() {
124148
return metadataEncoder;
125149
}
126150

127151
/**
128-
* Sets a metadataEncoder.
152+
* Setter for metadataEncoder. Deprecated since {@code 2.4.10} in favor of {@link MetadataCodec}.
129153
*
130154
* @param metadataEncoder metadata encoder
131155
* @return new {@code ClusterConfig} instance
132156
*/
157+
@Deprecated
133158
public ClusterConfig metadataEncoder(MetadataEncoder metadataEncoder) {
134159
ClusterConfig c = clone();
135160
c.metadataEncoder = metadataEncoder;
136161
return c;
137162
}
138163

164+
/**
165+
* Deprecated since {@code 2.4.10} in favor of {@link MetadataCodec}.
166+
*
167+
* @return metadataDecoder
168+
*/
169+
@Deprecated
139170
public MetadataDecoder metadataDecoder() {
140171
return metadataDecoder;
141172
}
142173

143174
/**
144-
* Sets a metadataDecoder.
175+
* Setter for metadataDecoder. Deprecated since {@code 2.4.10} in favor of {@link MetadataCodec}.
145176
*
146177
* @param metadataDecoder metadata decoder
147178
* @return new {@code ClusterConfig} instance
148179
*/
180+
@Deprecated
149181
public ClusterConfig metadataDecoder(MetadataDecoder metadataDecoder) {
150182
ClusterConfig c = clone();
151183
c.metadataDecoder = metadataDecoder;
152184
return c;
153185
}
154186

187+
/**
188+
* Deprecated since {@code 2.4.10} in favor of {@link #containerHost()}.
189+
*
190+
* @return member host
191+
*/
192+
@Deprecated
155193
public String memberHost() {
156-
return memberHost;
194+
return containerHost;
157195
}
158196

159197
/**
160-
* Sets a memberHost.
198+
* Deprecated since {@code 2.4.10} in favor of {@link #containerHost(String)}.
161199
*
162200
* @param memberHost member host
163201
* @return new {@code ClusterConfig} instance
164202
*/
203+
@Deprecated
165204
public ClusterConfig memberHost(String memberHost) {
166205
ClusterConfig c = clone();
167-
c.memberHost = memberHost;
206+
c.containerHost = memberHost;
168207
return c;
169208
}
170209

210+
/**
211+
* Returns mappedHost. {@code mappedHost} is a config property for container environments, it's
212+
* being set for advertising to scalecube cluster some connectable hostname which maps to
213+
* scalecube transport's hostname on which scalecube transport is listening.
214+
*
215+
* @return mapped host
216+
*/
217+
public String containerHost() {
218+
return containerHost;
219+
}
220+
221+
/**
222+
* Setter for mappedHost. {@code mappedHost} is a config property for container environments, it's
223+
* being set for advertising to scalecube cluster some connectable hostname which maps to
224+
* scalecube transport's hostname on which scalecube transport is listening.
225+
*
226+
* @param mappedHost mapped host
227+
* @return new {@code ClusterConfig} instance
228+
*/
229+
public ClusterConfig containerHost(String mappedHost) {
230+
ClusterConfig c = clone();
231+
c.containerHost = mappedHost;
232+
return c;
233+
}
234+
235+
/**
236+
* Returns memberAlias. {@code memberAlias} is a config property which facilitates {@link
237+
* io.scalecube.cluster.Member#toString()}.
238+
*
239+
* @return member alias.
240+
*/
171241
public String memberAlias() {
172242
return memberAlias;
173243
}
174244

175245
/**
176-
* Sets a memberAlias.
246+
* Setter for memberAlias. {@code memberAlias} is a config property which facilitates {@link
247+
* io.scalecube.cluster.Member#toString()}.
177248
*
178249
* @param memberAlias member alias
179250
* @return new {@code ClusterConfig} instance
@@ -184,19 +255,51 @@ public ClusterConfig memberAlias(String memberAlias) {
184255
return c;
185256
}
186257

258+
/**
259+
* Returns mappedPort. {@code mappedPort} is a config property for container environments, it's
260+
* being set for advertising to scalecube cluster a port which mapped to scalecube transport's
261+
* listening port.
262+
*
263+
* @return mapped port
264+
*/
265+
public Integer containerPort() {
266+
return containerPort;
267+
}
268+
269+
/**
270+
* Setter for mappedPort. {@code mappedPort} is a config property for container environments, it's
271+
* being set for advertising to scalecube cluster a port which mapped to scalecube transport's
272+
* listening port.
273+
*
274+
* @param mappedPort mapped port
275+
* @return new {@code ClusterConfig} instance
276+
*/
277+
public ClusterConfig containerPort(Integer mappedPort) {
278+
ClusterConfig c = clone();
279+
c.containerPort = mappedPort;
280+
return c;
281+
}
282+
283+
/**
284+
* Deprecated since {@code 2.4.10} in favor of {@link #containerPort()}.
285+
*
286+
* @return member port
287+
*/
288+
@Deprecated
187289
public Integer memberPort() {
188-
return memberPort;
290+
return containerPort;
189291
}
190292

191293
/**
192-
* Sets a memberPort.
294+
* Deprecated since {@code 2.4.10} in favor of {@link #containerPort(Integer)}.
193295
*
194296
* @param memberPort member port
195297
* @return new {@code ClusterConfig} instance
196298
*/
299+
@Deprecated
197300
public ClusterConfig memberPort(Integer memberPort) {
198301
ClusterConfig c = clone();
199-
c.memberPort = memberPort;
302+
c.containerPort = memberPort;
200303
return c;
201304
}
202305

@@ -283,11 +386,12 @@ public String toString() {
283386
return new StringJoiner(", ", ClusterConfig.class.getSimpleName() + "[", "]")
284387
.add("metadata=" + metadataAsString())
285388
.add("metadataTimeout=" + metadataTimeout)
389+
.add("metadataCodec=" + metadataCodec)
286390
.add("metadataEncoder=" + metadataEncoder)
287391
.add("metadataDecoder=" + metadataDecoder)
288392
.add("memberAlias='" + memberAlias + "'")
289-
.add("memberHost='" + memberHost + "'")
290-
.add("memberPort=" + memberPort)
393+
.add("containerHost='" + containerHost + "'")
394+
.add("containerPort=" + containerPort)
291395
.add("transportConfig=" + transportConfig)
292396
.add("failureDetectorConfig=" + failureDetectorConfig)
293397
.add("gossipConfig=" + gossipConfig)
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package io.scalecube.cluster.metadata;
2+
3+
import io.scalecube.utils.ServiceLoaderUtil;
4+
import java.nio.ByteBuffer;
5+
6+
/** Contains methods for metadata serializing/deserializing logic. */
7+
public interface MetadataCodec {
8+
9+
MetadataCodec INSTANCE = ServiceLoaderUtil.findFirst(MetadataCodec.class).orElse(null);
10+
11+
/**
12+
* Deserializes metadata from buffer.
13+
*
14+
* @param buffer metadata buffer; if {@code buffer} is empty then returned result shall be null.
15+
* @return metadata object from metadata buffer or null
16+
*/
17+
Object deserialize(ByteBuffer buffer);
18+
19+
/**
20+
* Serializes given metadata into buffer.
21+
*
22+
* @param metadata metadata object (optional); if {@code metadata} is null then returned result
23+
* may be null or empty buffer.
24+
* @return buffer or null
25+
*/
26+
ByteBuffer serialize(Object metadata);
27+
}

cluster-api/src/main/java/io/scalecube/cluster/metadata/MetadataDecoder.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
import io.scalecube.utils.ServiceLoaderUtil;
44
import java.nio.ByteBuffer;
55

6+
/**
7+
* MetadataDecoder. <br>
8+
* Deprecated since {@code 2.4.10} in favor of {@link MetadataCodec}.
9+
*/
10+
@Deprecated
611
@FunctionalInterface
712
public interface MetadataDecoder {
813

cluster-api/src/main/java/io/scalecube/cluster/metadata/MetadataEncoder.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44
import java.nio.ByteBuffer;
55
import reactor.util.annotation.Nullable;
66

7+
/**
8+
* MetadataEncoder. <br>
9+
* Deprecated since {@code 2.4.10} in favor of {@link MetadataCodec}.
10+
*/
11+
@Deprecated
712
@FunctionalInterface
813
public interface MetadataEncoder {
914

cluster-codec-parent/cluster-codec-jackson/src/main/java/io/scalecube/cluster/codec/jackson/JacksonMetadataEncoder.java

Lines changed: 0 additions & 72 deletions
This file was deleted.

cluster-codec-parent/cluster-codec-jackson/src/main/resources/META-INF/services/io.scalecube.cluster.metadata.MetadataDecoder

Lines changed: 0 additions & 1 deletion
This file was deleted.

cluster-codec-parent/cluster-codec-jackson/src/main/resources/META-INF/services/io.scalecube.cluster.metadata.MetadataEncoder

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)