/*
* 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.as7.extension.util;
import java.util.Set;
import org.jboss.as.server.deployment.AttachmentKey;
import org.jboss.as.web.host.WebHost;
import org.jboss.metadata.web.jboss.JBossWebMetaData;
import org.jboss.msc.service.ServiceController;
import org.jboss.msc.service.ServiceRegistry;
import org.wildfly.extension.undertow.Host;
import org.wildfly.extension.undertow.ListenerService;
import org.wildfly.extension.undertow.Server;
import org.wildfly.extension.undertow.UndertowService;
/**
* Utility class for AS7 related functions.
*
* @author Magesh Kumar B <mageshbk@jboss.com> (C) 2012 Red Hat Inc.
*/
public final class ServerUtil {
/**
* The attachment key for web.xml.
*/
public static final AttachmentKey<JBossWebMetaData> JBOSSWEB_METADATA_KEY = AttachmentKey.create(JBossWebMetaData.class);
private static ServiceRegistry _registry;
private static String _host = "default-host";
private static String _server = "default-server";
private static String _listener = "default";
private ServerUtil() {
}
/**
* Set the JBoss container's Service Registry.
* @param registry the ServiceRegistry
*/
public static void setRegistry(ServiceRegistry registry) {
_registry = registry;
}
/**
* Get the JBoss container's Service Registry.
* @return the ServiceRegistry
*/
public static ServiceRegistry getRegistry() {
return _registry;
}
/**
* Set the JBoss container's Host Name.
* @param host the name of the host
*/
public static void setHostName(String host) {
_host = host;
}
/**
* Get the JBoss container's Host Name.
* @return the name of the host
*/
public static String getHostName() {
return _host;
}
/**
* Get the JBoss container's WebHost.
* @return the WebHost
*/
public static WebHost getDefaultHost() {
ServiceController<WebHost> service = (ServiceController<WebHost>)_registry.getService(WebHost.SERVICE_NAME.append(_host));
return service != null ? service.getValue() : null;
}
/**
* Get the JBoss container's DefaultConnector.
* @return the DefaultConnector
*/
public static ListenerService getDefaultListener() {
ServiceController<Server> service = (ServiceController<Server>)_registry.getService(UndertowService.SERVER.append(_server));
if (service != null) {
Server server = service.getValue();
for (ListenerService<?> listener : server.getListeners()) {
if (listener.getName().equals(_listener)) {
return listener;
}
}
}
return null;
}
public static Set<String> getDefaultHostAliases() {
ServiceController<Server> service = (ServiceController<Server>)_registry.getService(UndertowService.SERVER.append(_server));
if (service != null) {
Server server = service.getValue();
for(Host host : server.getHosts()) {
if (host.getName().equals(server.getDefaultHost())) {
return host.getAllAliases();
}
}
}
return null;
}
}