-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[50] Add an option to allow a managed server to be created. This serv…
…er does not allow shutting down the backing server for the server manager. Signed-off-by: James R. Perkins <jperkins@redhat.com>
- Loading branch information
Showing
3 changed files
with
201 additions
and
0 deletions.
There are no files selected for viewing
163 changes: 163 additions & 0 deletions
163
src/main/java/org/wildfly/plugin/tools/server/ManagedServerManager.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,163 @@ | ||
/* | ||
* Copyright The WildFly Authors | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package org.wildfly.plugin.tools.server; | ||
|
||
import java.io.IOException; | ||
import java.util.concurrent.TimeUnit; | ||
|
||
import org.jboss.as.controller.client.ModelControllerClient; | ||
import org.jboss.as.controller.client.Operation; | ||
import org.jboss.as.controller.client.helpers.Operations; | ||
import org.jboss.dmr.ModelNode; | ||
import org.wildfly.plugin.tools.ContainerDescription; | ||
import org.wildfly.plugin.tools.DeploymentManager; | ||
import org.wildfly.plugin.tools.OperationExecutionException; | ||
|
||
/** | ||
* A {@link ServerManager} which does not allow any termination of the server. Invocation on any of these methods | ||
* throws a {@link UnsupportedOperationException}. | ||
* <p> | ||
* Note that the {@link #close()} will not shutdown the server regardless of the | ||
* {@link Configuration#shutdownOnClose(boolean)} or {@link ServerManager.Builder#shutdownOnClose(boolean)} setting. | ||
* </p> | ||
* | ||
* @author <a href="mailto:jperkins@redhat.com">James R. Perkins</a> | ||
*/ | ||
@SuppressWarnings("unused") | ||
class ManagedServerManager implements ServerManager { | ||
|
||
private final ServerManager delegate; | ||
|
||
/** | ||
* Create a new managed server manager. | ||
* | ||
* @param delegate the delegate | ||
*/ | ||
ManagedServerManager(final ServerManager delegate) { | ||
this.delegate = delegate; | ||
} | ||
|
||
@Override | ||
public ModelControllerClient client() { | ||
return delegate.client(); | ||
} | ||
|
||
@Override | ||
public String serverState() { | ||
return delegate.serverState(); | ||
} | ||
|
||
@Override | ||
public String launchType() { | ||
return delegate.launchType(); | ||
} | ||
|
||
@Override | ||
public String takeSnapshot() throws IOException { | ||
return delegate.takeSnapshot(); | ||
} | ||
|
||
@Override | ||
public ContainerDescription containerDescription() throws IOException { | ||
return delegate.containerDescription(); | ||
} | ||
|
||
@Override | ||
public DeploymentManager deploymentManager() { | ||
return delegate.deploymentManager(); | ||
} | ||
|
||
@Override | ||
public boolean isRunning() { | ||
return delegate.isRunning(); | ||
} | ||
|
||
/** | ||
* Not allowed, throws an {@link UnsupportedOperationException} | ||
*/ | ||
@Override | ||
public void kill() { | ||
throw new UnsupportedOperationException("Cannot kill an managed server"); | ||
} | ||
|
||
@Override | ||
public boolean waitFor(final long startupTimeout) throws InterruptedException { | ||
return delegate.waitFor(startupTimeout); | ||
} | ||
|
||
@Override | ||
public boolean waitFor(final long startupTimeout, final TimeUnit unit) throws InterruptedException { | ||
return delegate.waitFor(startupTimeout, unit); | ||
} | ||
|
||
/** | ||
* Not allowed, throws an {@link UnsupportedOperationException} | ||
*/ | ||
@Override | ||
public void shutdown() throws IOException { | ||
throw new UnsupportedOperationException("Cannot shutdown an managed server"); | ||
} | ||
|
||
/** | ||
* Not allowed, throws an {@link UnsupportedOperationException} | ||
*/ | ||
@Override | ||
public void shutdown(final long timeout) throws IOException { | ||
throw new UnsupportedOperationException("Cannot shutdown an managed server"); | ||
} | ||
|
||
@Override | ||
public void executeReload() throws IOException { | ||
delegate.executeReload(); | ||
} | ||
|
||
@Override | ||
public void executeReload(final ModelNode reloadOp) throws IOException { | ||
checkOperation(reloadOp); | ||
delegate.executeReload(reloadOp); | ||
} | ||
|
||
@Override | ||
public void reloadIfRequired() throws IOException { | ||
delegate.reloadIfRequired(); | ||
} | ||
|
||
@Override | ||
public void reloadIfRequired(final long timeout, final TimeUnit unit) throws IOException { | ||
delegate.reloadIfRequired(timeout, unit); | ||
} | ||
|
||
@Override | ||
public ModelNode executeOperation(final ModelNode op) throws IOException, OperationExecutionException { | ||
checkOperation(op); | ||
return delegate.executeOperation(op); | ||
} | ||
|
||
@Override | ||
public ModelNode executeOperation(final Operation op) throws IOException, OperationExecutionException { | ||
checkOperation(op.getOperation()); | ||
return delegate.executeOperation(op); | ||
} | ||
|
||
@Override | ||
public boolean isClosed() { | ||
return delegate.isClosed(); | ||
} | ||
|
||
@Override | ||
public void close() { | ||
if (delegate instanceof AbstractServerManager) { | ||
((AbstractServerManager<?>) delegate).internalClose(false); | ||
} | ||
} | ||
|
||
private void checkOperation(final ModelNode op) { | ||
final String opName = Operations.getOperationName(op); | ||
if (opName.equalsIgnoreCase("shutdown")) { | ||
throw new UnsupportedOperationException("Cannot shutdown an managed server"); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters