public static boolean isLegacySecurityRequired(Activation raxml) { boolean required = false; org.jboss.jca.common.api.metadata.resourceadapter.WorkManagerSecurity wmsecurity = raxml.getWorkManager() != null ? raxml.getWorkManager().getSecurity() : null; required = isLegacySecurityRequired(wmsecurity); if (!required) { List<ConnectionDefinition> connDefs = raxml.getConnectionDefinitions(); if (connDefs != null) { final List<ConnectionDefinition> clonedDefs; synchronized (raxml) { // Access to the collection is guarded by the instance clonedDefs = new ArrayList<>(connDefs); } for (ConnectionDefinition cd : clonedDefs) { Security cdSecurity = cd.getSecurity(); Credential cdRecoveryCredential = cd.getRecovery() == null? null : cd.getRecovery().getCredential(); if (isLegacySecurityRequired(cdSecurity) || isLegacySecurityRequired(cdRecoveryCredential)) { required = true; break; } } } } return required; }
private static boolean isLegacySecurityRequired(org.jboss.jca.common.api.metadata.resourceadapter.WorkManagerSecurity config) { // no security config if (config == null) return false; // security config uses elytron if (config instanceof WorkManagerSecurity && ((WorkManagerSecurity) config).isElytronEnabled()) return false; // check if legacy domain is non-null final String domain = config.getDomain(); return domain != null && domain.trim().length() > 0; }
private void addAdminObject(final Resource parent, AdminObject adminObject) { final Resource adminObjectResource = new IronJacamarResource.IronJacamarRuntimeResource(); final ModelNode model = adminObjectResource.getModel(); setAttribute(model, CLASS_NAME, adminObject.getClassName()); setAttribute(model, JNDINAME, adminObject.getJndiName()); setAttribute(model, USE_JAVA_CONTEXT, adminObject.isUseJavaContext()); setAttribute(model, ENABLED, adminObject.isEnabled()); if (adminObject.getConfigProperties() != null) { for (Map.Entry<String, String> config : adminObject.getConfigProperties().entrySet()) { addConfigProperties(adminObjectResource, config.getKey(), config.getValue()); } } final PathElement element = PathElement.pathElement(Constants.ADMIN_OBJECTS_NAME, adminObject.getJndiName()); parent.registerChild(element, adminObjectResource); }
final ModelNode model = ijResourceAdapter.getModel(); model.get(Constants.ARCHIVE.getName()).set(name); setAttribute(model, Constants.BOOTSTRAP_CONTEXT, ironJacamarMetadata.getBootstrapContext()); if (ironJacamarMetadata.getTransactionSupport() != null) model.get(Constants.TRANSACTION_SUPPORT.getName()).set(ironJacamarMetadata.getTransactionSupport().name()); if (ironJacamarMetadata.getWorkManager() != null && ironJacamarMetadata.getWorkManager().getSecurity() != null) { org.jboss.jca.common.api.metadata.resourceadapter.WorkManagerSecurity security = ironJacamarMetadata.getWorkManager().getSecurity(); model.get(Constants.WM_SECURITY.getName()).set(true); if (security.getDefaultGroups() != null) { for (String group : security.getDefaultGroups()) { model.get(Constants.WM_SECURITY_DEFAULT_GROUPS.getName()).add(group); if (security.getDefaultPrincipal() != null) model.get(Constants.WM_SECURITY_DEFAULT_PRINCIPAL.getName()).set(security.getDefaultPrincipal()); model.get(Constants.WM_SECURITY_MAPPING_REQUIRED.getName()).set(security.isMappingRequired()); if (security instanceof WorkManagerSecurity && ((WorkManagerSecurity) security).isElytronEnabled()) { model.get(Constants.WM_ELYTRON_SECURITY_DOMAIN.getName()).set(security.getDomain()); model.get(Constants.WM_SECURITY_DOMAIN.getName()).set(security.getDomain()); if (security.getGroupMappings() != null) { for (Map.Entry<String, String> entry : security.getGroupMappings().entrySet()) { final Resource mapping = new IronJacamarResource.IronJacamarRuntimeResource(); final ModelNode subModel = mapping.getModel(); if (security.getUserMappings() != null) { for (Map.Entry<String, String> entry : security.getUserMappings().entrySet()) { final Resource mapping = new IronJacamarResource.IronJacamarRuntimeResource(); final ModelNode subModel = mapping.getModel();
if (activation.getConnectionDefinitions() != null) { for (org.jboss.jca.common.api.metadata.resourceadapter.ConnectionDefinition def : activation.getConnectionDefinitions()) { String clz = def.getClassName(); if (activation.getAdminObjects() != null) { for (org.jboss.jca.common.api.metadata.resourceadapter.AdminObject def : activation.getAdminObjects()) { String clz = def.getClassName();
String jndiName = null; for (int i = 0; i < attributeSize; i++) { AdminObject.Attribute attribute = AdminObject.Attribute.forName(reader .getAttributeLocalName(i)); switch (attribute) { switch (reader.nextTag()) { case END_ELEMENT: { if (Activation.Tag.forName(reader.getLocalName()) == Activation.Tag.ADMIN_OBJECT) { if (AdminObject.Tag.forName(reader.getLocalName()) == AdminObject.Tag.UNKNOWN) { throw ParseUtils.unexpectedEndElement(reader); switch (AdminObject.Tag.forName(reader.getLocalName())) { case CONFIG_PROPERTY: { if (!configMap.containsKey(poolName)) {
ConnectionDefinition.Attribute attribute = ConnectionDefinition.Attribute.forName(reader.getAttributeLocalName(i)); String value = reader.getAttributeValue(i); switch (attribute) { switch (reader.nextTag()) { case END_ELEMENT: { if (Activation.Tag.forName(reader.getLocalName()) == Activation.Tag.CONNECTION_DEFINITION) { if (ConnectionDefinition.Tag.forName(reader.getLocalName()) == ConnectionDefinition.Tag.UNKNOWN) { throw ParseUtils.unexpectedEndElement(reader); switch (ConnectionDefinition.Tag.forName(reader.getLocalName())) { case CONFIG_PROPERTY: { if (!configMap.containsKey(poolName)) {
Security security = cd.getSecurity(); if (security != null) { final boolean elytronEnabled = (security instanceof SecurityMetadata && ((SecurityMetadata) security).isElytronEnabled()); if (cd.getRecovery() != null && cd.getRecovery().getCredential() != null && cd.getRecovery().getCredential().getSecurityDomain() != null) { if (!elytronEnabled) { builder.requires(SecurityDomainService.SERVICE_NAME.append(cd.getRecovery().getCredential().getSecurityDomain())); } else { builder.requires(context.getCapabilityServiceName(AUTHENTICATION_CONTEXT_CAPABILITY, cd.getRecovery().getCredential().getSecurityDomain(), AuthenticationContext.class)); final WorkManagerSecurity workManagerSecurity = resourceAdapter.getWorkManager().getSecurity(); if (workManagerSecurity != null) { final boolean elytronEnabled = (workManagerSecurity instanceof org.jboss.as.connector.metadata.api.resourceadapter.WorkManagerSecurity) && ((org.jboss.as.connector.metadata.api.resourceadapter.WorkManagerSecurity) workManagerSecurity).isElytronEnabled(); final String securityDomainName = workManagerSecurity.getDomain(); if (securityDomainName != null) { if (!elytronEnabled) {
switch (reader.nextTag()) { case END_ELEMENT: { if (Activation.Tag.forName(reader.getLocalName()) == Activation.Tag.WORKMANAGER) { return new WorkManagerImpl(security); } else { if (Activation.Tag.forName(reader.getLocalName()) == Activation.Tag.UNKNOWN) { throw new ParserException(bundle.unexpectedEndTag(reader.getLocalName())); switch (WorkManager.Tag.forName(reader.getLocalName())) { case SECURITY: { WM_SECURITY.parseAndSetParameter("true", operation, reader);
switch (reader.nextTag()) { case END_ELEMENT: { if (Activation.Tag.forName(reader.getLocalName()) == Activation.Tag.CONNECTION_DEFINITION) { if (ConnectionDefinition.Tag.forName(reader.getLocalName()) == ConnectionDefinition.Tag.UNKNOWN) { throw ParseUtils.unexpectedEndElement(reader); switch (ConnectionDefinition.Tag.forName(reader.getLocalName())) { case CONFIG_PROPERTY: { if (!configMap.containsKey(poolName)) {
private void writeRaElement(XMLExtendedStreamWriter streamWriter, ModelNode ra, final String name) throws XMLStreamException { streamWriter.writeStartElement(Activations.Tag.RESOURCE_ADAPTER.getLocalName()); streamWriter.writeAttribute(ResourceAdapterParser.Attribute.ID.getLocalName(), name); STATISTICS_ENABLED.marshallAsAttribute(ra, streamWriter); streamWriter.writeStartElement(Activation.Tag.BEAN_VALIDATION_GROUPS.getLocalName()); for (ModelNode bvg : ra.get(BEANVALIDATION_GROUPS.getName()).asList()) { streamWriter.writeStartElement(BEANVALIDATION_GROUPS.getXmlName()); streamWriter.writeStartElement(Activation.Tag.WORKMANAGER.getLocalName()); streamWriter.writeStartElement(WorkManager.Tag.SECURITY.getLocalName()); WM_SECURITY_MAPPING_REQUIRED.marshallAsElement(ra, streamWriter); WM_SECURITY_DOMAIN.marshallAsElement(ra, streamWriter); streamWriter.writeStartElement(Activation.Tag.CONNECTION_DEFINITIONS.getLocalName()); for (Property conDef : ra.get(CONNECTIONDEFINITIONS_NAME).asPropertyList()) { writeConDef(streamWriter, conDef.getValue(), conDef.getName(), isXa); streamWriter.writeStartElement(Activation.Tag.ADMIN_OBJECTS.getLocalName()); for (Property adminObject : ra.get(ADMIN_OBJECTS_NAME).asPropertyList()) { writeAdminObject(streamWriter, adminObject.getValue(), adminObject.getName());
@Override public void stop(StopContext context) { resourceAdapters.getValue().removeActivation(value); resourceAdaptersMap.getValue().remove(value.getArchive(), ServiceName.of(ConnectorServices.RA_SERVICE, name)); SUBSYSTEM_RA_LOGGER.debugf("Stopping ResourceAdapter Service"); }
private void parseResourceAdapters(final XMLExtendedStreamReader reader, final List<ModelNode> list, ModelNode parentAddress) throws XMLStreamException, ParserException, ValidateException { while (reader.hasNext()) { switch (reader.nextTag()) { case END_ELEMENT: { if (Tag.forName(reader.getLocalName()) == Tag.RESOURCE_ADAPTERS) { return; } else { if (Activations.Tag.forName(reader.getLocalName()) == Activations.Tag.UNKNOWN) { throw new ParserException(bundle.unexpectedEndTag(reader.getLocalName())); } } break; } case START_ELEMENT: { switch (Activations.Tag.forName(reader.getLocalName())) { case RESOURCE_ADAPTER: { parseResourceAdapter(reader, list, parentAddress); break; } default: throw new ParserException(bundle.unexpectedElement(reader.getLocalName())); } break; } } } throw new ParserException(bundle.unexpectedEndOfDocument()); }
private void writeNewConfigProperties(XMLExtendedStreamWriter streamWriter, ModelNode ra) throws XMLStreamException { if (ra.hasDefined(CONFIG_PROPERTIES.getName())) { for (Property connectionProperty : ra.get(CONFIG_PROPERTIES.getName()).asPropertyList()) { writeProperty(streamWriter, ra, connectionProperty.getName(), connectionProperty .getValue().get("value").asString(), Activation.Tag.CONFIG_PROPERTY.getLocalName()); } } }
@Override protected Callback createCallback(org.jboss.jca.common.api.metadata.resourceadapter.WorkManagerSecurity workManagerSecurity) { if (workManagerSecurity != null) { if (workManagerSecurity instanceof WorkManagerSecurity){ WorkManagerSecurity wms = (WorkManagerSecurity) workManagerSecurity; String[] defaultGroups = wms.getDefaultGroups() != null ? wms.getDefaultGroups().toArray(new String[workManagerSecurity.getDefaultGroups().size()]) : null; return new CallbackImpl(wms.isMappingRequired(), wms.getDomain(), wms.isElytronEnabled(), wms.getDefaultPrincipal(), defaultGroups, wms.getUserMappings(), wms.getGroupMappings()); } else { return super.createCallback(workManagerSecurity); } } return null; }
boolean aoOk = true; if (activation.getConnectionDefinitions() != null) { for (ConnectionDefinition def : activation.getConnectionDefinitions()) { String clz = def.getClassName(); if (clz != null) { ijMcfClasses.add(clz); if (activation.getAdminObjects() != null) { for (AdminObject def : activation.getAdminObjects()) { String clz = def.getClassName(); if (clz != null) { ijAoClasses.add(clz);
@Override public void start(StartContext context) throws StartException { resourceAdapters.getValue().addActivation(value); resourceAdaptersMap.getValue().putIfAbsent(value.getArchive(), ServiceName.of(ConnectorServices.RA_SERVICE, name)); SUBSYSTEM_RA_LOGGER.debugf("Starting ResourceAdapter Service"); }
switch (reader.nextTag()) { case END_ELEMENT: { if (ConnectionDefinition.Tag.forName(reader.getLocalName()) == ConnectionDefinition.Tag.TIMEOUT) {
private void writeAdminObject(XMLExtendedStreamWriter streamWriter, ModelNode adminObject, final String poolName) throws XMLStreamException { streamWriter.writeStartElement(Activation.Tag.ADMIN_OBJECT.getLocalName()); CLASS_NAME.marshallAsAttribute(adminObject, streamWriter); JNDINAME.marshallAsAttribute(adminObject, streamWriter); ENABLED.marshallAsAttribute(adminObject, streamWriter); USE_JAVA_CONTEXT.marshallAsAttribute(adminObject, streamWriter); streamWriter.writeAttribute("pool-name", poolName); writeNewConfigProperties(streamWriter, adminObject); streamWriter.writeEndElement(); }