/** * Copyright 2016 Red Hat, Inc, and individual 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.wildfly.swarm.maven.plugin; import java.util.Arrays; import java.util.HashSet; import java.util.Set; /** * A Java EE technology that is used in the testing project. It always corresponds to a fraction. */ public enum IncludedTechnology { SERVLET("undertow", "org.jboss.spec.javax.servlet", "jboss-servlet-api_3.0_spec", "1.0.2.Final"), JAX_RS("jaxrs", "org.jboss.spec.javax.ws.rs", "jboss-jaxrs-api_2.0_spec", "1.0.0.Final", SERVLET), EJB("ejb", "org.jboss.spec.javax.ejb", "jboss-ejb-api_3.2_spec", "1.0.0.Final", SERVLET), // transitively depends on servlet // the remaining technologies are NOT supposed to be used in the testing project; // instead, they are listed to facilitate checking that they aren't present by some mistake EJB_REMOTE("ejb-remote", null, null, null), ; private final String fraction; private final String specificationGroupId; private final String specificationArtifactId; private final String specificationVersion; private final IncludedTechnology[] dependsOn; IncludedTechnology(String fraction, String specificationGroupId, String specificationArtifactId, String specificationVersion, IncludedTechnology... dependsOn) { this.fraction = fraction; this.specificationGroupId = specificationGroupId; this.specificationArtifactId = specificationArtifactId; this.specificationVersion = specificationVersion; this.dependsOn = dependsOn; } public String fraction() { return fraction; } public Set<IncludedTechnology> dependsOn() { return new HashSet<>(Arrays.asList(dependsOn)); } public String dependencySnippet(Dependencies dependencies) { switch (dependencies) { case FRACTIONS: return "<dependency>\n" + " <groupId>org.wildfly.swarm</groupId>\n" + " <artifactId>" + fraction + "</artifactId>\n" + "</dependency>\n"; case JAVA_EE_APIS: return "<dependency>\n" + " <groupId>" + specificationGroupId + "</groupId>\n" + " <artifactId>" + specificationArtifactId + "</artifactId>\n" + " <version>" + specificationVersion + "</version>\n" + " <scope>provided</scope>\n" + "</dependency>\n"; } throw new IllegalArgumentException("IncludedTechnology: " + this + ", Dependencies: " + dependencies); } }