Search in sources :

Example 1 with DeploymentContext

use of org.jboss.arquillian.container.spi.context.DeploymentContext in project wildfly-swarm by wildfly-swarm.

the class SwarmURLResourceProvider method doLookup.

@Override
public Object doLookup(ArquillianResource resource, Annotation... __) {
    Container container = containerInstance.get();
    String javaVmArguments = null;
    String portDefinedInProperties = null;
    String offsetDefinedInProperties = null;
    if (container != null) {
        javaVmArguments = container.getContainerConfiguration().getContainerProperties().get("javaVmArguments");
    }
    if (javaVmArguments != null) {
        if (javaVmArguments.contains(SwarmProperties.HTTP_PORT) || javaVmArguments.contains(SwarmProperties.PORT_OFFSET)) {
            String[] properties = javaVmArguments.split("=| |\n");
            for (int i = 0; i < properties.length; i++) {
                if (properties[i].contains(SwarmProperties.HTTP_PORT)) {
                    portDefinedInProperties = properties[i + 1];
                }
                if (properties[i].contains(SwarmProperties.PORT_OFFSET)) {
                    offsetDefinedInProperties = properties[i + 1];
                }
            }
        }
    }
    // first cut - try to get the data from the sysprops
    // this will fail if the user sets any of these via code
    String host = System.getProperty(SwarmProperties.BIND_ADDRESS);
    if (host == null || host.equals("0.0.0.0")) {
        host = "localhost";
    }
    int port = 8080;
    final String portString = portDefinedInProperties != null ? portDefinedInProperties : System.getProperty(SwarmProperties.HTTP_PORT);
    final String portOffset = offsetDefinedInProperties != null ? offsetDefinedInProperties : System.getProperty(SwarmProperties.PORT_OFFSET);
    if (portString != null) {
        port = Integer.parseInt(portString);
    }
    if (portOffset != null) {
        port = port + Integer.parseInt(portOffset);
    }
    String contextPath = System.getProperty(SwarmProperties.CONTEXT_PATH);
    DeploymentContext deploymentContext = this.deploymentContext.get();
    if (deploymentContext != null && deploymentContext.isActive()) {
        if (deploymentContext.getObjectStore().get(ContextRoot.class) != null) {
            contextPath = deploymentContext.getObjectStore().get(ContextRoot.class).context();
        }
    }
    if (contextPath == null) {
        contextPath = "/";
    }
    if (!contextPath.startsWith("/")) {
        contextPath = "/" + contextPath;
    }
    try {
        return new URI("http", null, host, port, contextPath, null, null).toURL();
    } catch (MalformedURLException | URISyntaxException e) {
        throw new RuntimeException(e);
    }
}
Also used : DeploymentContext(org.jboss.arquillian.container.spi.context.DeploymentContext) Container(org.jboss.arquillian.container.spi.Container) MalformedURLException(java.net.MalformedURLException) URISyntaxException(java.net.URISyntaxException) URI(java.net.URI)

Aggregations

MalformedURLException (java.net.MalformedURLException)1 URI (java.net.URI)1 URISyntaxException (java.net.URISyntaxException)1 Container (org.jboss.arquillian.container.spi.Container)1 DeploymentContext (org.jboss.arquillian.container.spi.context.DeploymentContext)1