@@ -1,5 +1,26 @@
package org.jboss.as.test.clustering.cluster.ejb.remote;
/*
* JBoss, Home of Professional Open Source.
* Copyright 2018, Red Hat, Inc., and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/

package org.jboss.as.test.clustering.cluster.ejb.remote;

import org.apache.commons.lang.math.RandomUtils;
import org.jboss.arquillian.container.test.api.Deployment;
@@ -53,48 +74,48 @@

private static final String MODULE_NAME = ClientClusterNodeSelectorTestCase.class.getSimpleName();
private static final long CLIENT_TOPOLOGY_UPDATE_WAIT = TimeoutUtil.adjust(2000);

/**
* Implementation of {@link ClusterNodeSelector} to be used for custom cluster node selection
*/
public static class CustomClusterNodeSelector implements ClusterNodeSelector {
private static volatile String PICK_NODE = null;

@Override
public String selectNode(
String clusterName, String[] connectedNodes, String[] totalAvailableNodes) {
public String selectNode(String clusterName, String[] connectedNodes, String[] totalAvailableNodes) {
if (PICK_NODE != null) {
return PICK_NODE;
}
return connectedNodes[0];
}
}

public ClientClusterNodeSelectorTestCase() throws Exception {
public ClientClusterNodeSelectorTestCase() {
super(FOUR_NODES);
}

@Deployment(name = DEPLOYMENT_1, managed = false, testable = false)
@TargetsContainer(NODE_1)
public static Archive<?> createDeploymentForContainer1() {
return createDeployment(MODULE_NAME);
return createDeployment();
}

@Deployment(name = DEPLOYMENT_2, managed = false, testable = false)
@TargetsContainer(NODE_2)
public static Archive<?> createDeploymentForContainer2() {
return createDeployment(MODULE_NAME);
return createDeployment();
}

@Deployment(name = DEPLOYMENT_3, managed = false, testable = false)
@TargetsContainer(NODE_3)
public static Archive<?> createDeploymentForContainer3() {
return createDeployment(MODULE_NAME);
return createDeployment();
}

@Deployment(name = DEPLOYMENT_4, managed = false, testable = false)
@TargetsContainer(NODE_4)
public static Archive<?> createDeploymentForContainer4() {
return createDeployment(MODULE_NAME);
return createDeployment();
}

/**
@@ -144,9 +165,7 @@ public void test(

ctx.close();
} finally {
if ((BKP != null)) {
EJBClientContext.getContextManager().setThreadDefault(BKP);
}
EJBClientContext.getContextManager().setThreadDefault(BKP);
}
}

@@ -167,8 +186,8 @@ private void callBeanOnNode(Heartbeat bean, String node) {
/**
* Test archive containing the EJB to call
*/
private static Archive<?> createDeployment(String moduleName) {
return ShrinkWrap.create(JavaArchive.class, moduleName + ".jar")
private static Archive<?> createDeployment() {
return ShrinkWrap.create(JavaArchive.class, MODULE_NAME + ".jar")
.addPackage(EJBDirectory.class.getPackage())
.addClasses(Result.class, Heartbeat.class, HeartbeatBean.class, RandomUtils.class)
.addAsManifestResource(PermissionUtils.createPermissionsXmlAsset(new PropertyPermission(NODE_NAME_PROPERTY, "read")), "permissions.xml")
@@ -28,15 +28,19 @@
import javax.transaction.UserTransaction;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.container.test.api.OperateOnDeployment;
import org.jboss.arquillian.container.test.api.TargetsContainer;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.jboss.as.arquillian.container.ManagementClient;
import org.jboss.as.test.clustering.cluster.AbstractClusteringTestCase;
import org.jboss.as.test.clustering.cluster.ejb.remote.bean.Incrementor;
import org.jboss.as.test.clustering.cluster.ejb.remote.bean.IncrementorBean;
import org.jboss.as.test.clustering.cluster.ejb.remote.bean.Result;
import org.jboss.as.test.clustering.cluster.ejb.remote.bean.StatefulIncrementorBean;
import org.jboss.as.test.clustering.ejb.EJBDirectory;
import org.jboss.as.test.clustering.ejb.RemoteEJBDirectory;
import org.jboss.as.test.shared.ServerReload;
import org.jboss.as.test.shared.integration.ejb.security.PermissionUtils;
import org.jboss.ejb.client.EJBClient;
import org.jboss.shrinkwrap.api.Archive;
@@ -75,7 +79,10 @@
}

@Test
public void test() throws Exception {
public void test(
@ArquillianResource @OperateOnDeployment(DEPLOYMENT_1) ManagementClient client1,
@ArquillianResource @OperateOnDeployment(DEPLOYMENT_2) ManagementClient client2
) throws Exception {
try (EJBDirectory directory = new RemoteEJBDirectory(MODULE_NAME)) {
Incrementor bean = directory.lookupStateful(StatefulIncrementorBean.class, Incrementor.class);

@@ -119,6 +126,13 @@ public void test() throws Exception {
// Expected
} finally {
tx.rollback();

// TODO remove workaround for WFLY-12128
undeploy(TWO_DEPLOYMENTS);
ServerReload.executeReloadAndWaitForCompletion(client1);
ServerReload.executeReloadAndWaitForCompletion(client2);
// Workaround the above yielding "DeploymentException: Cannot deploy StatefulFailoverTestCase.war: WFLYCTL0379: System boot is in process; execution of remote management operations is not currently available"
Thread.sleep(GRACE_TIME_TOPOLOGY_CHANGE);
}
}
}
@@ -46,13 +46,12 @@
@RunWith(Arquillian.class)
public abstract class AbstractDatabasePersistenceWebFailoverTestCase extends AbstractWebFailoverTestCase {

public AbstractDatabasePersistenceWebFailoverTestCase(String moduleName) {
// Use NON_TRANSACTIONAL to workaround for ISPN-10029
super(moduleName, CacheMode.INVALIDATION_SYNC, TransactionMode.TRANSACTIONAL);
public AbstractDatabasePersistenceWebFailoverTestCase(String deploymentName) {
super(deploymentName, CacheMode.INVALIDATION_SYNC, TransactionMode.TRANSACTIONAL);
}

static Archive<?> getDeployment(String moduleName) {
WebArchive war = ShrinkWrap.create(WebArchive.class, moduleName + ".war");
static Archive<?> getDeployment(String deploymentName) {
WebArchive war = ShrinkWrap.create(WebArchive.class, deploymentName);
war.addClasses(SimpleServlet.class, Mutable.class);
ClusterTestUtil.addTopologyListenerDependencies(war);
war.setWebXML(AbstractWebFailoverTestCase.class.getPackage(), "web.xml");
@@ -31,11 +31,10 @@
/**
* @author Paul Ferraro
*/
@ServerSetup({ CoarseDatabasePersistenceWebFailoverTestCase.ServerSetupTask.class, AbstractDatabasePersistenceWebFailoverTestCase.ServerSetupTask.class })
@org.junit.Ignore("Fails intermittently due to ISPN-10029")
@ServerSetup({ AbstractDatabasePersistenceWebFailoverTestCase.ServerSetupTask.class, CoarseDatabasePersistenceWebFailoverTestCase.ServerSetupTask.class })
public class CoarseDatabasePersistenceWebFailoverTestCase extends AbstractDatabasePersistenceWebFailoverTestCase {

private static final String MODULE_NAME = CoarseDatabasePersistenceWebFailoverTestCase.class.getSimpleName();
private static final String DEPLOYMENT_NAME = CoarseDatabasePersistenceWebFailoverTestCase.class.getSimpleName() + ".war";

@Deployment(name = DEPLOYMENT_1, managed = false, testable = false)
@TargetsContainer(NODE_1)
@@ -56,11 +55,11 @@
}

private static Archive<?> getDeployment() {
return getDeployment(MODULE_NAME);
return getDeployment(DEPLOYMENT_NAME);
}

public CoarseDatabasePersistenceWebFailoverTestCase() {
super(MODULE_NAME);
super(DEPLOYMENT_NAME);
}

public static class ServerSetupTask extends CLIServerSetupTask {
@@ -32,10 +32,9 @@
* @author Paul Ferraro
*/
@ServerSetup({ AbstractDatabasePersistenceWebFailoverTestCase.ServerSetupTask.class, FineDatabasePersistenceWebFailoverTestCase.ServerSetupTask.class })
@org.junit.Ignore("Fails intermittently due to ISPN-10029")
public class FineDatabasePersistenceWebFailoverTestCase extends AbstractDatabasePersistenceWebFailoverTestCase {

private static final String MODULE_NAME = FineDatabasePersistenceWebFailoverTestCase.class.getSimpleName();
private static final String DEPLOYMENT_NAME = FineDatabasePersistenceWebFailoverTestCase.class.getSimpleName() + ".war";

@Deployment(name = DEPLOYMENT_1, managed = false, testable = false)
@TargetsContainer(NODE_1)
@@ -56,11 +55,11 @@
}

private static Archive<?> getDeployment() {
return getDeployment(MODULE_NAME);
return getDeployment(DEPLOYMENT_NAME);
}

public FineDatabasePersistenceWebFailoverTestCase(String moduleName) {
super(moduleName);
public FineDatabasePersistenceWebFailoverTestCase() {
super(DEPLOYMENT_NAME);
}

public static class ServerSetupTask extends CLIServerSetupTask {
@@ -52,8 +52,7 @@
}

public AbstractHotRodPersistenceWebFailoverTestCase(String deploymentName) {
// Use NON_TRANSACTIONAL to workaround for ISPN-10029
super(deploymentName, CacheMode.INVALIDATION_SYNC, TransactionMode.NON_TRANSACTIONAL);
super(deploymentName, CacheMode.INVALIDATION_SYNC, TransactionMode.TRANSACTIONAL);
}

@Override
@@ -34,7 +34,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

@@ -10,7 +10,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<!-- ********************************************************************************** -->
@@ -11,7 +11,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-ts-integ-legacy-ejb-client</artifactId>
@@ -4,7 +4,7 @@
Set these VM properties in your IDE debugger
-Djava.util.logging.manager=org.jboss.logmanager.LogManager
-Djboss.home=${workspace_loc:wildfly-build}/target/wildfly-17.0.0.Beta1-SNAPSHOT
-Djboss.home=${workspace_loc:wildfly-build}/target/wildfly-17.0.0.Final-SNAPSHOT
-DallowConnectingToRunningServer=true
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
@@ -19,7 +19,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<!-- *********************************************************************************** -->
@@ -11,7 +11,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<!-- ********************************************************************************** -->
@@ -28,7 +28,7 @@
<parent>
<groupId>org.wildfly</groupId>
<artifactId>wildfly-ts-integ-mp</artifactId>
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-ts-integ-mp-health</artifactId>
@@ -28,7 +28,7 @@
<parent>
<groupId>org.wildfly</groupId>
<artifactId>wildfly-ts-integ-mp</artifactId>
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-ts-integ-mp-opentracing</artifactId>
@@ -28,7 +28,7 @@
<parent>
<groupId>org.wildfly</groupId>
<artifactId>wildfly-ts-integ</artifactId>
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-ts-integ-mp</artifactId>
@@ -11,7 +11,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<!-- ********************************************************************************** -->
@@ -11,7 +11,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<!-- ********************************************************************************** -->
@@ -11,7 +11,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-ts-integ</artifactId>
@@ -4,7 +4,7 @@
Set these VM properties in your IDE debugger
-Djava.util.logging.manager=org.jboss.logmanager.LogManager
-Djboss.home=${workspace_loc:jboss-as-build}/target/jboss-as-17.0.0.Beta1-SNAPSHOT
-Djboss.home=${workspace_loc:jboss-as-build}/target/jboss-as-17.0.0.Final-SNAPSHOT
-DallowConnectingToRunningServer=true
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
@@ -19,7 +19,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<!-- ********************************************************************************** -->
@@ -19,7 +19,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<!-- ********************************************************************************** -->
@@ -12,7 +12,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>


@@ -4,7 +4,7 @@
Set these VM properties in your IDE debugger
-Djava.util.logging.manager=org.jboss.logmanager.LogManager
-Djboss.home=${workspace_loc:wildfly-build}/target/wildfly-17.0.0.Beta1-SNAPSHOT
-Djboss.home=${workspace_loc:wildfly-build}/target/wildfly-17.0.0.Final-SNAPSHOT
-DallowConnectingToRunningServer=true
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
@@ -19,7 +19,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<!-- ********************************************************************************** -->
@@ -25,7 +25,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<!-- ********************************************************************************** -->
@@ -19,7 +19,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<!-- ********************************************************************************** -->
@@ -19,7 +19,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<!-- ********************************************************************************** -->
@@ -10,7 +10,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<!-- ********************************************************************************** -->
@@ -11,7 +11,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-ts-layers</artifactId>
@@ -33,7 +33,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-testsuite-integration-mixed-domain</artifactId>
@@ -59,7 +59,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-testsuite</artifactId>
@@ -11,7 +11,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>

@@ -32,7 +32,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-transactions</artifactId>
@@ -28,14 +28,14 @@
import org.jboss.as.controller.CapabilityServiceTarget;
import org.jboss.msc.service.AbstractService;
import org.jboss.msc.service.ServiceBuilder;
import org.jboss.msc.service.ServiceController;
import org.jboss.msc.service.ServiceName;
import org.jboss.msc.value.InjectedValue;

/**
* Service that exposes the TransactionSynchronizationRegistry
*
* @author Stuart Douglas
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
*/
public class TransactionSynchronizationRegistryService extends AbstractService<TransactionSynchronizationRegistry> {
/** @deprecated Use the "org.wildfly.transactions.transaction-synchronization-registry" capability */
@@ -51,13 +51,14 @@
private TransactionSynchronizationRegistryService() {
}

public static ServiceController<TransactionSynchronizationRegistry> addService(final CapabilityServiceTarget target) {
public static void addService(final CapabilityServiceTarget target) {
TransactionSynchronizationRegistryService service = new TransactionSynchronizationRegistryService();
ServiceBuilder<TransactionSynchronizationRegistry> serviceBuilder = target.addCapability(TRANSACTION_SYNCHRONIZATION_REGISTRY_CAPABILITY, service);
ServiceBuilder<?> serviceBuilder = target.addCapability(TRANSACTION_SYNCHRONIZATION_REGISTRY_CAPABILITY);
serviceBuilder.setInstance(service);
serviceBuilder.requires(TxnServices.JBOSS_TXN_LOCAL_TRANSACTION_CONTEXT);
serviceBuilder.addDependency(ArjunaTransactionManagerService.SERVICE_NAME, com.arjuna.ats.jbossatx.jta.TransactionManagerService.class, service.injectedArjunaTM);
serviceBuilder.addAliases(INTERNAL_SERVICE_NAME);
return serviceBuilder.install();
serviceBuilder.install();
}

@Override
@@ -102,7 +102,6 @@
import org.wildfly.iiop.openjdk.service.CorbaNamingService;

import com.arjuna.ats.internal.arjuna.utils.UuidProcessId;
import com.arjuna.ats.jbossatx.jta.RecoveryManagerService;
import com.arjuna.ats.jta.common.JTAEnvironmentBean;
import com.arjuna.ats.jts.common.jtsPropertyManager;
import org.wildfly.transaction.client.ContextTransactionManager;
@@ -114,6 +113,7 @@
* @author <a href="mailto:david.lloyd@redhat.com">David M. Lloyd</a>
* @author Emanuel Muckenhuber
* @author Scott Stark (sstark@redhat.com) (C) 2011 Red Hat Inc.
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
*/
class TransactionSubsystemAdd extends AbstractBoottimeAddStepHandler {

@@ -421,8 +421,9 @@ private void performRecoveryEnvBoottime(OperationContext context, ModelNode mode
final boolean recoveryListener = TransactionSubsystemRootResourceDefinition.RECOVERY_LISTENER.resolveModelAttribute(context, model).asBoolean();

final ArjunaRecoveryManagerService recoveryManagerService = new ArjunaRecoveryManagerService(recoveryListener, jts);
final ServiceBuilder<RecoveryManagerService> recoveryManagerServiceServiceBuilder = serviceTarget
.addCapability(XA_RESOURCE_RECOVERY_REGISTRY_CAPABILITY, recoveryManagerService)
final ServiceBuilder<?> recoveryManagerServiceServiceBuilder = serviceTarget
.addCapability(XA_RESOURCE_RECOVERY_REGISTRY_CAPABILITY)
.setInstance(recoveryManagerService)
.addCapabilityRequirement("org.wildfly.network.socket-binding", SocketBinding.class, recoveryManagerService.getRecoveryBindingInjector(), recoveryBindingName)
.addCapabilityRequirement("org.wildfly.network.socket-binding", SocketBinding.class, recoveryManagerService.getStatusBindingInjector(), recoveryStatusBindingName)
.addCapabilityRequirement("org.wildfly.management.socket-binding-manager", SocketBindingManager.class, recoveryManagerService.getBindingManager())
@@ -31,7 +31,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

@@ -37,6 +37,7 @@

/**
* @author <a href="mailto:tomaz.cerar@redhat.com">Tomaz Cerar</a> (c) 2013 Red Hat Inc.
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
*/
class AccessLogAdd extends AbstractAddStepHandler {

@@ -79,7 +80,8 @@ protected void performRuntime(OperationContext context, ModelNode operation, Mod
final String serverName = serverAddress.getLastElement().getValue();
final String hostName = hostAddress.getLastElement().getValue();

final CapabilityServiceBuilder<AccessLogService> builder = context.getCapabilityServiceTarget().addCapability(AccessLogDefinition.ACCESS_LOG_CAPABILITY, service)
final CapabilityServiceBuilder builder = context.getCapabilityServiceTarget().addCapability(AccessLogDefinition.ACCESS_LOG_CAPABILITY)
.setInstance(service)
.addCapabilityRequirement(Capabilities.REF_IO_WORKER, XnioWorker.class, service.getWorker(), worker)
.addDependency(PathManagerService.SERVICE_NAME, PathManager.class, service.getPathManager())
.addCapabilityRequirement(Capabilities.CAPABILITY_HOST, Host.class, service.getHost(), serverName, hostName);
@@ -33,6 +33,7 @@

/**
* @author <a href="mailto:tomaz.cerar@redhat.com">Tomaz Cerar</a> (c) 2012 Red Hat Inc.
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
*/
class AjpListenerAdd extends ListenerAdd {

@@ -53,7 +54,7 @@ ListenerService createService(String name, final String serverName, final Operat
}

@Override
void configureAdditionalDependencies(OperationContext context, CapabilityServiceBuilder<? extends UndertowListener> serviceBuilder, ModelNode model, ListenerService service) throws OperationFailedException {
void configureAdditionalDependencies(OperationContext context, CapabilityServiceBuilder serviceBuilder, ModelNode model, ListenerService service) throws OperationFailedException {
ModelNode redirectBindingRef = ListenerResourceDefinition.REDIRECT_SOCKET.resolveModelAttribute(context, model);
if (redirectBindingRef.isDefined()) {
serviceBuilder.addCapabilityRequirement(REF_SOCKET_BINDING, SocketBinding.class, service.getRedirectSocket(), redirectBindingRef.asString());
@@ -25,6 +25,9 @@
import org.jboss.msc.service.StartException;
import org.jboss.msc.service.StopContext;

/**
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
*/
public class ByteBufferPoolDefinition extends PersistentResourceDefinition {


@@ -128,10 +131,10 @@ protected void performRuntime(OperationContext context, ModelNode operation, Mod
final boolean direct = directModel.asBoolean(defaultDirectBuffers);

final ByteBufferPoolService service = new ByteBufferPoolService(direct, bufferSize, maxPoolSize, threadLocalCacheSize, leakDetectionPercent);
context.getCapabilityServiceTarget().addCapability(UNDERTOW_BUFFER_POOL_RUNTIME_CAPABILITY, service)
context.getCapabilityServiceTarget().addCapability(UNDERTOW_BUFFER_POOL_RUNTIME_CAPABILITY)
.setInstance(service)
.setInitialMode(ServiceController.Mode.ACTIVE)
.install();

}
}

@@ -43,14 +43,14 @@
import org.jboss.as.web.host.WebHost;
import org.jboss.dmr.ModelNode;
import org.jboss.msc.service.ServiceBuilder;
import org.jboss.msc.service.ServiceController;
import org.jboss.msc.service.ServiceController.Mode;
import org.jboss.msc.service.ServiceName;
import org.wildfly.extension.requestcontroller.RequestController;
import org.wildfly.extension.undertow.deployment.DefaultDeploymentMappingProvider;

/**
* @author <a href="mailto:tomaz.cerar@redhat.com">Tomaz Cerar</a> (c) 2013 Red Hat Inc.
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
*/
class HostAdd extends AbstractAddStepHandler {

@@ -96,7 +96,8 @@ protected void performRuntime(OperationContext context, ModelNode operation, Mod

final Host service = new Host(name, aliases == null ? new LinkedList<>(): aliases, defaultWebModule, defaultResponseCode, queueRequestsOnStart);

final ServiceBuilder<Host> builder = context.getCapabilityServiceTarget().addCapability(HostDefinition.HOST_CAPABILITY, service)
final ServiceBuilder<?> builder = context.getCapabilityServiceTarget().addCapability(HostDefinition.HOST_CAPABILITY)
.setInstance(service)
.addCapabilityRequirement(Capabilities.CAPABILITY_SERVER, Server.class, service.getServerInjection(), serverName)
.addCapabilityRequirement(Capabilities.CAPABILITY_UNDERTOW, UndertowService.class, service.getUndertowService())
.addDependency(SuspendController.SERVICE_NAME, SuspendController.class, service.getSuspendControllerInjectedValue())
@@ -135,11 +136,12 @@ protected void performRuntime(OperationContext context, ModelNode operation, Mod
}
}

private ServiceController<WebHost> addCommonHost(OperationContext context, List<String> aliases,
private void addCommonHost(OperationContext context, List<String> aliases,
String serverName, ServiceName virtualHostServiceName) {
WebHostService service = new WebHostService();
final CapabilityServiceBuilder<WebHost> builder = context.getCapabilityServiceTarget()
.addCapability(WebHost.CAPABILITY, service)
final CapabilityServiceBuilder<?> builder = context.getCapabilityServiceTarget()
.addCapability(WebHost.CAPABILITY)
.setInstance(service)
.addCapabilityRequirement(Capabilities.CAPABILITY_SERVER, Server.class, service.getServer(), serverName)
.addCapabilityRequirement(CommonWebServer.CAPABILITY_NAME, CommonWebServer.class)
.addDependency(virtualHostServiceName, Host.class, service.getHost());
@@ -156,6 +158,6 @@ protected void performRuntime(OperationContext context, ModelNode operation, Mod
}

builder.setInitialMode(Mode.PASSIVE);
return builder.install();
builder.install();
}
}
@@ -49,6 +49,7 @@
/**
* @author <a href="mailto:tomaz.cerar@redhat.com">Tomaz Cerar</a> (c) 2014 Red Hat Inc.
* @author Paul Ferraro
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
*/
class HostSingleSignOnServiceHandler implements ResourceServiceHandler {

@@ -93,7 +94,8 @@ public String getHostName() {
this.provider.getServiceConfigurator(managerServiceName, configuration).configure(context).build(target).setInitialMode(ServiceController.Mode.ON_DEMAND).install();

SingleSignOnService service = new SingleSignOnService(domain, path, httpOnly, secure, cookieName);
target.addCapability(HostSingleSignOnDefinition.HOST_SSO_CAPABILITY, service)
target.addCapability(HostSingleSignOnDefinition.HOST_SSO_CAPABILITY)
.setInstance(service)
.addAliases(serviceName)
.addDependency(virtualHostServiceName, Host.class, service.getHost())
.addDependency(managerServiceName, SingleSignOnManager.class, service.getSingleSignOnSessionManager())
@@ -51,6 +51,7 @@

/**
* @author Stuart Douglas
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
*/
public class HttpInvokerDefinition extends PersistentResourceDefinition {

@@ -130,8 +131,9 @@ protected void performRuntime(OperationContext context, ModelNode operation, Mod
final String serverName = serverAddress.getLastElement().getValue();
final String hostName = hostAddress.getLastElement().getValue();

final CapabilityServiceBuilder<HttpInvokerHostService> builder = context.getCapabilityServiceTarget()
.addCapability(HTTP_INVOKER_HOST_CAPABILITY, service)
final CapabilityServiceBuilder<?> builder = context.getCapabilityServiceTarget()
.addCapability(HTTP_INVOKER_HOST_CAPABILITY)
.setInstance(service)
.addCapabilityRequirement(HTTP_INVOKER_RUNTIME_CAPABILITY.getName(), PathHandler.class, service.getRemoteHttpInvokerServiceInjectedValue())
.addCapabilityRequirement(Capabilities.CAPABILITY_HOST, Host.class, service.getHost(), serverName, hostName)
;
@@ -35,6 +35,7 @@

/**
* @author <a href="mailto:tomaz.cerar@redhat.com">Tomaz Cerar</a> (c) 2012 Red Hat Inc.
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
*/
public class HttpListenerAdd extends ListenerAdd {

@@ -69,7 +70,7 @@ static void handleHttp2Options(OperationContext context, ModelNode model, Option
}

@Override
void configureAdditionalDependencies(OperationContext context, CapabilityServiceBuilder<? extends UndertowListener> serviceBuilder, ModelNode model, ListenerService service) throws OperationFailedException {
void configureAdditionalDependencies(OperationContext context, CapabilityServiceBuilder serviceBuilder, ModelNode model, ListenerService service) throws OperationFailedException {
ModelNode redirectBindingRef = ListenerResourceDefinition.REDIRECT_SOCKET.resolveModelAttribute(context, model);
if (redirectBindingRef.isDefined()) {
ServiceName serviceName = context.getCapabilityServiceName(REF_SOCKET_BINDING, redirectBindingRef.asString(), SocketBinding.class);
@@ -40,6 +40,7 @@
* Add handler for HTTPS listeners.
*
* @author <a href="mailto:darran.lofthouse@jboss.com">Darran Lofthouse</a>
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
*/
public class HttpsListenerAdd extends ListenerAdd {

@@ -78,7 +79,7 @@ ListenerService createService(String name, final String serverName, final Operat
}

@Override
void configureAdditionalDependencies(OperationContext context, CapabilityServiceBuilder<? extends UndertowListener> serviceBuilder, ModelNode model, ListenerService service) throws OperationFailedException {
void configureAdditionalDependencies(OperationContext context, CapabilityServiceBuilder serviceBuilder, ModelNode model, ListenerService service) throws OperationFailedException {
serviceBuilder.addDependency(HttpListenerAdd.REGISTRY_SERVICE_NAME, ListenerRegistry.class, ((HttpListenerService) service).getHttpListenerRegistry());

ModelNode sslContextModel = HttpsListenerResourceDefinition.SSL_CONTEXT.resolveModelAttribute(context, model);
@@ -50,6 +50,7 @@

/**
* @author <a href="mailto:tomaz.cerar@redhat.com">Tomaz Cerar</a> (c) 2012 Red Hat Inc.
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
*/
abstract class ListenerAdd extends AbstractAddStepHandler {

@@ -99,8 +100,8 @@ protected void performRuntime(OperationContext context, ModelNode operation, Mod
service.addWrapperHandler(handler -> new DisallowedMethodsHandler(handler, methodSet));
}

final CapabilityServiceBuilder<? extends UndertowListener> serviceBuilder = context.getCapabilityServiceTarget().addCapability(ListenerResourceDefinition.LISTENER_CAPABILITY, service);
serviceBuilder.addCapabilityRequirement(REF_IO_WORKER, XnioWorker.class, service.getWorker(), workerName)
final CapabilityServiceBuilder serviceBuilder = context.getCapabilityServiceTarget().addCapability(ListenerResourceDefinition.LISTENER_CAPABILITY);
serviceBuilder.setInstance(service).addCapabilityRequirement(REF_IO_WORKER, XnioWorker.class, service.getWorker(), workerName)
.addCapabilityRequirement(REF_SOCKET_BINDING, SocketBinding.class, service.getBinding(), bindingRef)
.addCapabilityRequirement(Capabilities.CAPABILITY_BYTE_BUFFER_POOL, ByteBufferPool.class, service.getBufferPool(), bufferPoolName)
.addCapabilityRequirement(Capabilities.CAPABILITY_SERVER, Server.class, service.getServerService(), serverName)
@@ -109,11 +110,10 @@ protected void performRuntime(OperationContext context, ModelNode operation, Mod

configureAdditionalDependencies(context, serviceBuilder, model, service);
serviceBuilder.install();

}

abstract ListenerService createService(String name, final String serverName, final OperationContext context, ModelNode model, OptionMap listenerOptions, OptionMap socketOptions) throws OperationFailedException;

abstract void configureAdditionalDependencies(OperationContext context, CapabilityServiceBuilder<? extends UndertowListener> serviceBuilder, ModelNode model, ListenerService service) throws OperationFailedException;
abstract void configureAdditionalDependencies(OperationContext context, CapabilityServiceBuilder serviceBuilder, ModelNode model, ListenerService service) throws OperationFailedException;

}
@@ -34,6 +34,7 @@

/**
* @author <a href="mailto:tomaz.cerar@redhat.com">Tomaz Cerar</a> (c) 2013 Red Hat Inc.
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
*/
class LocationAdd extends AbstractAddStepHandler {
static LocationAdd INSTANCE = new LocationAdd();
@@ -53,7 +54,8 @@ protected void performRuntime(OperationContext context, ModelNode operation, Mod
final String serverName = serverAddress.getLastElement().getValue();
final String hostName = hostAddress.getLastElement().getValue();
final ServiceName serviceName = UndertowService.locationServiceName(serverName, hostName, name);
final ServiceBuilder<LocationService> builder = context.getCapabilityServiceTarget().addCapability(LocationDefinition.LOCATION_CAPABILITY, service)
final ServiceBuilder builder = context.getCapabilityServiceTarget().addCapability(LocationDefinition.LOCATION_CAPABILITY)
.setInstance(service)
.addCapabilityRequirement(Capabilities.CAPABILITY_HANDLER, HttpHandler.class, service.getHttpHandler(),handler)
.addCapabilityRequirement(Capabilities.CAPABILITY_HOST, Host.class, service.getHost(), serverName, hostName);

@@ -42,6 +42,7 @@

/**
* @author <a href="mailto:tomaz.cerar@redhat.com">Tomaz Cerar</a> (c) 2013 Red Hat Inc.
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
*/
class ServerAdd extends AbstractAddStepHandler {

@@ -63,7 +64,8 @@ protected void performRuntime(OperationContext context, ModelNode operation, Res
final String defaultServerName = UndertowRootDefinition.DEFAULT_SERVER.resolveModelAttribute(context, parentModel).asString();

final Server service = new Server(name, defaultHost);
final CapabilityServiceBuilder<Server> builder = context.getCapabilityServiceTarget().addCapability(SERVER_CAPABILITY, service)
final CapabilityServiceBuilder<?> builder = context.getCapabilityServiceTarget().addCapability(SERVER_CAPABILITY)
.setInstance(service)
.addCapabilityRequirement(Capabilities.CAPABILITY_SERVLET_CONTAINER, ServletContainerService.class, service.getServletContainerInjector(), servletContainer)
.addCapabilityRequirement(Capabilities.CAPABILITY_UNDERTOW, UndertowService.class, service.getUndertowServiceInjector());

@@ -74,7 +76,8 @@ protected void performRuntime(OperationContext context, ModelNode operation, Res
builder.addAliases(UndertowService.DEFAULT_SERVER);//register default server service name

WebServerService commonWebServer = new WebServerService();
final ServiceBuilder<WebServerService> commonServerBuilder = context.getCapabilityServiceTarget().addCapability(CommonWebServer.CAPABILITY, commonWebServer)
final ServiceBuilder<?> commonServerBuilder = context.getCapabilityServiceTarget().addCapability(CommonWebServer.CAPABILITY)
.setInstance(commonWebServer)
.addCapabilityRequirement(Capabilities.CAPABILITY_SERVER, Server.class, commonWebServer.getServerInjectedValue(), name)
.setInitialMode(ServiceController.Mode.PASSIVE);

@@ -104,7 +107,7 @@ protected void recordCapabilitiesAndRequirements(OperationContext context, Model
}
}

private void addCommonHostListenerDeps(OperationContext context, ServiceBuilder<WebServerService> builder, final PathElement listenerPath) {
private void addCommonHostListenerDeps(OperationContext context, ServiceBuilder<?> builder, final PathElement listenerPath) {
ModelNode listeners = Resource.Tools.readModel(context.readResource(PathAddress.pathAddress(listenerPath)), 1);
if (listeners.isDefined()) {
for (Property p : listeners.asPropertyList()) {
@@ -51,6 +51,7 @@

/**
* @author <a href="mailto:tomaz.cerar@redhat.com">Tomaz Cerar</a> (c) 2013 Red Hat Inc.
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
*/
final class ServletContainerAdd extends AbstractBoottimeAddStepHandler {
static final ServletContainerAdd INSTANCE = new ServletContainerAdd();
@@ -140,8 +141,8 @@ public void installRuntimeServices(OperationContext context, ModelNode model, St
welcomeFiles, directoryListingEnabled, proactiveAuth, sessionIdLength, authenticationMechanisms, maxSessions, crawlerSessionManagerConfig, disableFileWatchService, disableSessionIdReususe, fileCacheMetadataSize, fileCacheMaxFileSize, fileCacheTimeToLive, defaultCookieVersion);


final CapabilityServiceBuilder<ServletContainerService> builder = context.getCapabilityServiceTarget()
.addCapability(ServletContainerDefinition.SERVLET_CONTAINER_CAPABILITY, container);
final CapabilityServiceBuilder<?> builder = context.getCapabilityServiceTarget()
.addCapability(ServletContainerDefinition.SERVLET_CONTAINER_CAPABILITY).setInstance(container);
if(bufferCache != null) {
builder.addDependency(BufferCacheService.SERVICE_NAME.append(bufferCache), DirectBufferCache.class, container.getBufferCacheInjectedValue());
}
@@ -69,6 +69,7 @@
* Handler responsible for adding the subsystem resource to the model
*
* @author <a href="mailto:tomaz.cerar@redhat.com">Tomaz Cerar</a> (c) 2012 Red Hat Inc.
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
*/
class UndertowSubsystemAdd extends AbstractBoottimeAddStepHandler {

@@ -105,7 +106,8 @@ protected void performBoottime(OperationContext context, ModelNode operation, Re

DefaultDeploymentMappingProvider.instance().clear();//we clear provider on system boot, as on reload it could cause issues.

context.getCapabilityServiceTarget().addCapability(UndertowRootDefinition.UNDERTOW_CAPABILITY, new UndertowService(defaultContainer, defaultServer, defaultVirtualHost, instanceId, stats))
context.getCapabilityServiceTarget().addCapability(UndertowRootDefinition.UNDERTOW_CAPABILITY)
.setInstance(new UndertowService(defaultContainer, defaultServer, defaultVirtualHost, instanceId, stats))
.setInitialMode(ServiceController.Mode.ACTIVE)
.addAliases(UndertowService.UNDERTOW)
.install();
@@ -152,7 +154,8 @@ protected void execute(DeploymentProcessorTarget processorTarget) {
}, OperationContext.Stage.RUNTIME);

context.getCapabilityServiceTarget()
.addCapability(HTTP_INVOKER_RUNTIME_CAPABILITY, new RemoteHttpInvokerService())
.addCapability(HTTP_INVOKER_RUNTIME_CAPABILITY)
.setInstance(new RemoteHttpInvokerService())
.install();
}

@@ -64,6 +64,7 @@
* standard filter service
*
* @author Stuart Douglas
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
*/
public class ModClusterService extends FilterService {

@@ -294,7 +295,8 @@ static void install(String name, CapabilityServiceTarget serviceTarget, ModelNod
final String mgmtSocketBindingRef = ModClusterDefinition.MANAGEMENT_SOCKET_BINDING.resolveModelAttribute(operationContext, model).asString();
final ModelNode advertiseSocketBindingRef = ModClusterDefinition.ADVERTISE_SOCKET_BINDING.resolveModelAttribute(operationContext, model);
final String workerRef = ModClusterDefinition.WORKER.resolveModelAttribute(operationContext, model).asString();
CapabilityServiceBuilder serviceBuilder = serviceTarget.addCapability(ModClusterDefinition.MOD_CLUSTER_FILTER_CAPABILITY, service);
CapabilityServiceBuilder serviceBuilder = serviceTarget.addCapability(ModClusterDefinition.MOD_CLUSTER_FILTER_CAPABILITY);
serviceBuilder.setInstance(service);
serviceBuilder.addCapabilityRequirement(Capabilities.REF_SOCKET_BINDING, SocketBinding.class, service.managementSocketBinding, mgmtSocketBindingRef);
if (advertiseSocketBindingRef.isDefined()) {
serviceBuilder.addCapabilityRequirement(Capabilities.REF_SOCKET_BINDING, SocketBinding.class, service.advertiseSocketBinding, advertiseSocketBindingRef.asString());
@@ -22,7 +22,6 @@

package org.wildfly.extension.undertow.handlers;

import io.undertow.server.HttpHandler;
import org.jboss.as.controller.AbstractAddStepHandler;
import org.jboss.as.controller.CapabilityServiceBuilder;
import org.jboss.as.controller.OperationContext;
@@ -35,6 +34,7 @@

/**
* @author Tomaz Cerar (c) 2013 Red Hat Inc.
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
*/
class HandlerAdd extends AbstractAddStepHandler {
private Handler handler;
@@ -50,7 +50,8 @@ protected void performRuntime(OperationContext context, ModelNode operation, Mod

final HandlerService service = new HandlerService(handler.createHandler(context, model), name);

CapabilityServiceBuilder<HttpHandler> builder = context.getCapabilityServiceTarget().addCapability(Handler.CAPABILITY, service)
CapabilityServiceBuilder<?> builder = context.getCapabilityServiceTarget().addCapability(Handler.CAPABILITY)
.setInstance(service)
.setInitialMode(ServiceController.Mode.ON_DEMAND);
final RuntimeCapability newCapability = Handler.CAPABILITY.fromBaseCapability(context.getCurrentAddress());
if (context.hasOptionalCapability(Capabilities.REF_REQUEST_CONTROLLER, newCapability.getName(), null)) {
@@ -76,6 +76,7 @@
/**
* @author Stuart Douglas
* @author Tomaz Cerar
* @author <a href="mailto:ropalka@redhat.com">Richard Opalka</a>
*/
public class ReverseProxyHandlerHost extends PersistentResourceDefinition {

@@ -185,8 +186,9 @@ protected void performRuntime(OperationContext context, ModelNode operation, Mod
jvmRoute = null;
}
ReverseProxyHostService service = new ReverseProxyHostService(scheme, jvmRoute, path, enableHttp2);
CapabilityServiceBuilder<ReverseProxyHostService> builder = context.getCapabilityServiceTarget()
.addCapability(REVERSE_PROXY_HOST_RUNTIME_CAPABILITY, service)
CapabilityServiceBuilder builder = context.getCapabilityServiceTarget()
.addCapability(REVERSE_PROXY_HOST_RUNTIME_CAPABILITY)
.setInstance(service)
.addCapabilityRequirement(Capabilities.CAPABILITY_HANDLER, HttpHandler.class, service.proxyHandler, proxyName)
.addCapabilityRequirement(Capabilities.REF_OUTBOUND_SOCKET, OutboundSocketBinding.class, service.socketBinding, socketBinding);

@@ -33,7 +33,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-web-common</artifactId>
@@ -33,7 +33,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-webservices</artifactId>
@@ -33,7 +33,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-webservices-server-integration</artifactId>
@@ -33,7 +33,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-webservices-tests-integration</artifactId>
@@ -10,7 +10,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-weld-bean-validation</artifactId>
@@ -10,7 +10,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-weld-common</artifactId>
@@ -10,7 +10,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-weld-ejb</artifactId>
@@ -10,7 +10,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-weld-jpa</artifactId>
@@ -33,7 +33,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

@@ -10,7 +10,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-weld-spi</artifactId>
@@ -10,7 +10,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-weld</artifactId>
@@ -10,7 +10,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-weld-transactions</artifactId>
@@ -10,7 +10,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-weld-webservices</artifactId>
@@ -33,7 +33,7 @@
Maintain separation between the artifact id and the version to help prevent
merge conflicts between commits changing the GA and those changing the V.
-->
<version>17.0.0.Beta1-SNAPSHOT</version>
<version>17.0.0.Final-SNAPSHOT</version>
</parent>

<artifactId>wildfly-xts</artifactId>