Skip to content

Commit

Permalink
[WFLY-6400] Process Elytron security information from annotation prop…
Browse files Browse the repository at this point in the history
…erties.

Also: fix the code that reads security setting. The way it was before, it was impossible to read the domain successfully
  • Loading branch information
fl4via committed Jan 18, 2017
1 parent db64e83 commit f607aef
Showing 1 changed file with 32 additions and 35 deletions.
Expand Up @@ -22,16 +22,9 @@

package org.jboss.as.connector.services.resourceadapters;

import static org.jboss.as.connector.logging.ConnectorLogger.ROOT_LOGGER;
import static org.jboss.as.connector.logging.ConnectorLogger.SUBSYSTEM_RA_LOGGER;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import javax.resource.spi.TransactionSupport;

import org.jboss.as.connector.logging.ConnectorLogger;
import org.jboss.as.connector.metadata.api.common.Security;
import org.jboss.as.connector.metadata.common.SecurityImpl;
import org.jboss.as.connector.services.mdr.AS7MetadataRepository;
import org.jboss.as.connector.services.resourceadapters.deployment.registry.ResourceAdapterDeploymentRegistry;
import org.jboss.as.connector.subsystems.jca.JcaSubsystemConfiguration;
Expand All @@ -44,15 +37,13 @@
import org.jboss.as.txn.service.TxnServices;
import org.jboss.jca.common.api.metadata.Defaults;
import org.jboss.jca.common.api.metadata.common.Pool;
import org.jboss.jca.common.api.metadata.common.Security;
import org.jboss.jca.common.api.metadata.common.TransactionSupportEnum;
import org.jboss.jca.common.api.metadata.resourceadapter.Activation;
import org.jboss.jca.common.api.metadata.resourceadapter.AdminObject;
import org.jboss.jca.common.api.metadata.spec.ConnectionDefinition;
import org.jboss.jca.common.api.metadata.spec.Connector;
import org.jboss.jca.common.api.metadata.spec.ResourceAdapter;
import org.jboss.jca.common.metadata.common.PoolImpl;
import org.jboss.jca.common.metadata.common.SecurityImpl;
import org.jboss.jca.common.metadata.common.XaPoolImpl;
import org.jboss.jca.common.metadata.resourceadapter.ActivationImpl;
import org.jboss.jca.core.api.connectionmanager.ccm.CachedConnectionManager;
Expand All @@ -61,20 +52,20 @@
import org.jboss.jca.core.spi.transaction.TransactionIntegration;
import org.jboss.modules.Module;
import org.jboss.msc.inject.Injector;
import org.jboss.msc.service.Service;
import org.jboss.msc.service.ServiceBuilder;
import org.jboss.msc.service.ServiceController;
import org.jboss.msc.service.ServiceName;
import org.jboss.msc.service.ServiceTarget;
import org.jboss.msc.service.StartContext;
import org.jboss.msc.service.StartException;
import org.jboss.msc.service.StopContext;
import org.jboss.msc.value.InjectedValue;
import org.jboss.security.SubjectFactory;

public class DirectConnectionFactoryActivatorService implements Service<ContextNames.BindInfo> {
public static final ServiceName SERVICE_NAME_BASE =
ServiceName.JBOSS.append("connector").append("direct-connection-factory-activator");
import javax.resource.spi.TransactionSupport;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import static org.jboss.as.connector.logging.ConnectorLogger.ROOT_LOGGER;
import static org.jboss.as.connector.logging.ConnectorLogger.SUBSYSTEM_RA_LOGGER;

public class DirectConnectionFactoryActivatorService implements org.jboss.msc.service.Service<org.jboss.as.naming.deployment.ContextNames.BindInfo> {
public static final org.jboss.msc.service.ServiceName SERVICE_NAME_BASE =
org.jboss.msc.service.ServiceName.JBOSS.append("connector").append("direct-connection-factory-activator");

protected final InjectedValue<AS7MetadataRepository> mdr = new InjectedValue<AS7MetadataRepository>();

Expand Down Expand Up @@ -123,7 +114,7 @@ public ContextNames.BindInfo getValue() throws IllegalStateException, IllegalArg
}

@Override
public void start(StartContext context) throws StartException {
public void start(org.jboss.msc.service.StartContext context) throws org.jboss.msc.service.StartException {
ROOT_LOGGER.debugf("started DirectConnectionFactoryActivatorService %s", context.getController().getName());
String cfInterface = null;

Expand All @@ -149,14 +140,20 @@ public void start(StartContext context) throws StartException {
Map<String, String> mcfConfigProperties = new HashMap<String, String>();
String securitySetting = null;
String securitySettingDomain = null;
boolean elytronEnabled = false;

if (properties != null) {
for (Map.Entry<String,String> prop : properties.entrySet()) {
String key = prop.getKey();
String value = prop.getValue();
if (key.startsWith("ironjacamar.security")) {
if (key.equals("ironjacamar.security")) {
securitySetting = value;
} else if (key.startsWith("ironjacamar.security.domain")) {
} else if (key.equals("ironjacamar.security.elytron") && value.equals("true")) {
elytronEnabled = true;
} else if (key.equals("ironjacamar.security.elytron-authentication-context")) {
securitySettingDomain = value;
elytronEnabled = true;
} else if (key.equals("ironjacamar.security.domain")) {
securitySettingDomain = value;
} else {
if (key.startsWith("ra.")) {
Expand Down Expand Up @@ -184,13 +181,13 @@ public void start(StartContext context) throws StartException {
Security security = null;
if (securitySetting != null) {
if ("".equals(securitySetting)) {
security = new SecurityImpl(null, null, false);
security = new SecurityImpl(null, null, false, false);
} else if ("application".equals(securitySetting)) {
security = new SecurityImpl(null, null, true);
security = new SecurityImpl(null, null, true, false);
} else if ("domain".equals(securitySetting) && securitySettingDomain != null) {
security = new SecurityImpl(securitySettingDomain, null, false);
security = new SecurityImpl(securitySettingDomain, null, false, elytronEnabled);
} else if ("domain-and-application".equals(securitySetting) && securitySettingDomain != null) {
security = new SecurityImpl(null, securitySettingDomain, false);
security = new SecurityImpl(null, securitySettingDomain, false, elytronEnabled);
}
}

Expand Down Expand Up @@ -231,9 +228,9 @@ public void start(StartContext context) throws StartException {
ResourceAdapterActivatorService activator = new ResourceAdapterActivatorService(cmd, activation, module.getClassLoader(), serviceName);
activator.setCreateBinderService(false);
activator.setBindInfo(bindInfo);
ServiceTarget serviceTarget = context.getChildTarget();
ServiceName activatorServiceName = ConnectorServices.RESOURCE_ADAPTER_ACTIVATOR_SERVICE.append(serviceName);
ServiceBuilder connectionFactoryServiceBuilder = serviceTarget
org.jboss.msc.service.ServiceTarget serviceTarget = context.getChildTarget();
org.jboss.msc.service.ServiceName activatorServiceName = ConnectorServices.RESOURCE_ADAPTER_ACTIVATOR_SERVICE.append(serviceName);
org.jboss.msc.service.ServiceBuilder connectionFactoryServiceBuilder = serviceTarget
.addService(activatorServiceName, activator)
.addDependency(ConnectorServices.IRONJACAMAR_MDR, AS7MetadataRepository.class,
activator.getMdrInjector())
Expand All @@ -258,11 +255,11 @@ public void start(StartContext context) throws StartException {
.addDependency(ConnectorServices.BOOTSTRAP_CONTEXT_SERVICE.append("default"));


connectionFactoryServiceBuilder.setInitialMode(ServiceController.Mode.ACTIVE).install();
connectionFactoryServiceBuilder.setInitialMode(org.jboss.msc.service.ServiceController.Mode.ACTIVE).install();


} catch (Exception e) {
throw new StartException(e);
throw new org.jboss.msc.service.StartException(e);
}
}

Expand All @@ -271,7 +268,7 @@ public Injector<AS7MetadataRepository> getMdrInjector() {
}

@Override
public void stop(StopContext context) {
public void stop(org.jboss.msc.service.StopContext context) {
ROOT_LOGGER.debugf("stopped DirectConnectionFactoryActivatorService %s", context.getController().getName());

}
Expand Down

0 comments on commit f607aef

Please sign in to comment.