Skip to content

Commit

Permalink
Keep outputwriters in server copy
Browse files Browse the repository at this point in the history
copy the builded outputwriters when building a server from an other one
  • Loading branch information
hightea committed Mar 30, 2021
1 parent 058df19 commit 42aa877
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 0 deletions.
Expand Up @@ -110,6 +110,7 @@ public void addOutputWriters(@Nonnull Iterable<OutputWriterFactory> outputWriter

public Server build() {
Server.Builder builder = Server.builder(server)
.clearOutputWriters()
.addOutputWriters(createOutputWriters(temporaryOutputWriters))
.clearQueries();
for (Map.Entry<Query, Set<OutputWriterFactory>> queryEntry : queries.entrySet()) {
Expand Down
Expand Up @@ -31,7 +31,9 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
import com.google.inject.name.Named;
import com.googlecode.jmxtrans.ServerListBuilder;
import com.googlecode.jmxtrans.connections.JMXConnection;
import com.googlecode.jmxtrans.connections.JmxConnectionProvider;
import com.sun.tools.attach.VirtualMachine;
Expand Down Expand Up @@ -508,6 +510,7 @@ private Builder(Server server) {
this.local = server.local;
this.ssl = server.ssl;
this.queries.addAll(server.queries);
Iterables.addAll(this.outputWriters, server.outputWriters);
this.pool = server.pool;
}

Expand All @@ -531,6 +534,11 @@ public Builder addOutputWriterFactory(OutputWriterFactory outputWriterFactory) {
return this;
}

public Builder clearOutputWriters() {
this.outputWriters.clear();
return this;
}

public Builder addOutputWriters(Collection<OutputWriter> outputWriters) {
this.outputWriters.addAll(outputWriters);
return this;
Expand Down
Expand Up @@ -73,6 +73,24 @@ public void outputWritersAreReusedOnServers() {
assertThat(createdServer.getOutputWriters()).hasSize(3);
}

@Test
public void outputWritersAreKeptOnServerCopy() {
Server server1 = Server.builder(dummyServer())
.addOutputWriterFactory(new DummyOutputWriterFactory("output 1"))
.addOutputWriterFactory(new DummyOutputWriterFactory("output 2"))
.build();

ImmutableList<Server> serverList = new ServerListBuilder()
.add(ImmutableList.of(server1))
.build();
assertThat(serverList).hasSize(1);

Server createdServer = serverList.iterator().next();

Server server2 = Server.builder(createdServer).build();
assertThat(server2.getOutputWriters()).hasSize(2);
}

@Test
public void outputWritersAreReusedOnQueries() {
Query q1 = Query.builder(dummyQuery())
Expand Down

0 comments on commit 42aa877

Please sign in to comment.