/* * Copyright 2013 Red Hat Inc. and/or its affiliates and other contributors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.switchyard.test.quickstarts.util; import java.io.File; import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; import org.jboss.as.arquillian.container.ManagementClient; import org.jboss.as.controller.client.ModelControllerClient; import org.jboss.dmr.ModelNode; /** * ResouceDeployer is capable to deploy different types of resources * to a running JBoss AS7 server. * * @author Magesh Kumar B <mageshbk@jboss.com> (C) 2011 Red Hat Inc. * @author Daniel Bevenius * */ public class ResourceDeployer { public static final String DEFAULT_HOST = "localhost"; public static final int DEFAULT_PORT = 9999; public static final String USER = "guest"; public static final String PASSWD = "Guestp123!"; private ResourceDeployer() { } public static ModelNode addQueue(final String host, final int port, final String queueName, final String jndiName) throws IOException { final ModelControllerClient client = createClient(host, port); try { final ModelNode op = new ModelNode(); op.get("operation").set("add"); op.get("address").add("subsystem", "messaging"); op.get("address").add("hornetq-server", "default"); op.get("address").add("jms-queue", queueName); op.get("entries").add(jndiName) .add("java:jboss/exported/jms/" + jndiName); op.get("durable").set(false); return client.execute(op); } finally { client.close(); } } public static ModelNode addQueue(final String host, final int port, final String queueName) throws IOException { return addQueue(host, port, queueName, queueName); } public static ModelNode addQueue(final String queueName) throws IOException { return addQueue(DEFAULT_HOST, DEFAULT_PORT, queueName, queueName); } public static ModelNode addQueue(final String queueName, final String jndiName) throws IOException { return addQueue(DEFAULT_HOST, DEFAULT_PORT, queueName, jndiName); } public static ModelNode removeQueue(final String host, final int port, final String queueName) throws IOException { final ModelControllerClient client = createClient(host, port); try { final ModelNode op = new ModelNode(); op.get("operation").set("remove"); op.get("address").add("subsystem", "messaging"); op.get("address").add("hornetq-server", "default"); op.get("address").add("jms-queue", queueName); return client.execute(op); } finally { client.close(); } } public static ModelNode removeQueue(final String queueName) throws IOException { return addQueue(DEFAULT_HOST, DEFAULT_PORT, queueName); } public static ModelNode addPooledConnectionFactory(final String host, final int port, final String cfName, final boolean xa, final String jndiName) throws IOException { final ModelControllerClient client = createClient(host, port); try { final ModelNode op = new ModelNode(); op.get("operation").set("add"); op.get("address").add("subsystem", "messaging"); op.get("address").add("hornetq-server", "default"); op.get("address").add("pooled-connection-factory", cfName); op.get("transaction").set(xa ? "xa" : "local"); op.get("connector").set("in-vm", ""); op.get("entries").add(jndiName); return client.execute(op); } finally { client.close(); } } public static ModelNode addPooledConnectionFactory(final String cfName, final boolean xa, final String jndiName) throws IOException { return addPooledConnectionFactory(DEFAULT_HOST, DEFAULT_PORT, cfName, xa, jndiName); } public static ModelNode removePooledConnectionFactory(final String host, final int port, final String cfName) throws IOException { final ModelControllerClient client = createClient(host, port); try { final ModelNode op = new ModelNode(); op.get("operation").set("remove"); op.get("address").add("subsystem", "messaging"); op.get("address").add("hornetq-server", "default"); op.get("address").add("pooled-connection-factory", cfName); return client.execute(op); } finally { client.close(); } } public static ModelNode removePooledConnectionFactory(final String cfName) throws IOException { return removePooledConnectionFactory(DEFAULT_HOST, DEFAULT_PORT, cfName); } public static void setupSSL(ManagementClient client, String keystorePath, String keystorePassword) throws Exception { // EAP ModelNode op = new ModelNode(); op.get("operation").set("add"); op.get("address").add("subsystem", "web"); op.get("address").add("connector", "https"); op.get("socket-binding").set("https"); op.get("scheme").set("https"); op.get("protocol").set("HTTP/1.1"); op.get("secure").set("true"); op.get("enabled").set("true"); op.get("enable-lookups").set("false"); op.get("operation-headers", "allow-resource-service-restart").set("true"); client.getControllerClient().execute(op); op = new ModelNode(); op.get("operation").set("add"); op.get("address").add("subsystem", "web"); op.get("address").add("connector", "https"); op.get("address").add("ssl", "configuration"); op.get("name").set("https"); op.get("password").set(keystorePassword); op.get("certificate-key-file").set(keystorePath); op.get("operation-headers", "allow-resource-service-restart").set("true"); client.getControllerClient().execute(op); // WildFly op = new ModelNode(); op.get("operation").set("add"); op.get("address").add("core-service", "management"); op.get("address").add("security-realm", "SslRealm"); client.getControllerClient().execute(op); op = new ModelNode(); op.get("operation").set("add"); op.get("address").add("core-service", "management"); op.get("address").add("security-realm", "SslRealm"); op.get("address").add("server-identity", "ssl"); op.get("keystore-password").set(keystorePassword); op.get("keystore-path").set(keystorePath); op.get("operation-headers", "allow-resource-service-restart").set("true"); client.getControllerClient().execute(op); op = new ModelNode(); op.get("operation").set("add"); op.get("address").add("subsystem", "undertow"); op.get("address").add("server", "default-server"); op.get("address").add("https-listener", "default-https"); op.get("socket-binding").set("https"); op.get("security-realm").set("SslRealm"); op.get("operation-headers", "allow-resource-service-restart").set("true"); client.getControllerClient().execute(op); } public static void tearDownSSL(ManagementClient client) throws Exception { // EAP ModelNode op = new ModelNode(); op.get("operation").set("remove"); op.get("address").add("subsystem", "web"); op.get("address").add("connector", "https"); client.getControllerClient().execute(op); // WildFly op = new ModelNode(); op.get("operation").set("remove"); op.get("address").add("subsystem", "undertow"); op.get("address").add("server", "default-server"); op.get("address").add("https-listener", "https"); client.getControllerClient().execute(op); op = new ModelNode(); op.get("operation").set("remove"); op.get("address").add("core-service", "management"); op.get("address").add("security-realm", "SslRealm"); client.getControllerClient().execute(op); } private static ModelControllerClient createClient(final String host, final int port) throws UnknownHostException { return ModelControllerClient.Factory.create(InetAddress.getByName(host), port); } }