public Object doLookup()

in arquillian/adapter/src/main/java/org/wildfly/swarm/arquillian/adapter/resources/SwarmURLResourceProvider.java [46:108]


    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);
        }
    }