Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WFLY-19078 [Preview] - Update the elytron-oidc-client subsystem parser to enumerate schema versions #17705

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -20,13 +20,15 @@
<module name="org.jboss.staxmapper"/>
<module name="org.jboss.as.controller"/>
<module name="org.jboss.as.server"/>
<module name="org.jboss.as.version"/>
<module name="org.jboss.as.web-common"/>
<module name="org.jboss.metadata.common"/>
<module name="org.jboss.metadata.web"/>
<module name="org.jboss.modules"/>
<module name="org.jboss.msc"/>
<module name="org.jboss.logging"/>
<module name="org.wildfly.common"/>
<module name="org.wildfly.subsystem"/>
<module name="org.wildfly.security.elytron-http-oidc"/>
<module name="org.wildfly.security.elytron-private"/>
</dependencies>
Expand Down
4 changes: 4 additions & 0 deletions elytron-oidc-client/pom.xml
Expand Up @@ -160,5 +160,9 @@
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.wildfly.core</groupId>
<artifactId>wildfly-subsystem</artifactId>
</dependency>
</dependencies>
</project>
Expand Up @@ -16,12 +16,14 @@
import org.jboss.as.controller.OperationFailedException;
import org.jboss.as.controller.PathElement;
import org.jboss.as.controller.ResourceDefinition;
import org.jboss.as.controller.ResourceRegistration;
import org.jboss.as.controller.SimpleAttributeDefinition;
import org.jboss.as.controller.SimpleAttributeDefinitionBuilder;
import org.jboss.as.controller.SimpleResourceDefinition;
import org.jboss.as.controller.operations.validation.StringLengthValidator;
import org.jboss.as.controller.registry.ManagementResourceRegistration;
import org.jboss.as.controller.registry.OperationEntry;
import org.jboss.as.version.Stability;
import org.jboss.dmr.ModelNode;
import org.jboss.dmr.ModelType;

Expand All @@ -32,6 +34,7 @@
*/
class CredentialDefinition extends SimpleResourceDefinition {

static final ResourceRegistration PATH = ResourceRegistration.of(PathElement.pathElement(ElytronOidcDescriptionConstants.CREDENTIAL), Stability.DEFAULT);
protected static final SimpleAttributeDefinition SECRET =
new SimpleAttributeDefinitionBuilder(ElytronOidcDescriptionConstants.SECRET, ModelType.STRING, true)
.setAllowExpression(true)
Expand Down
@@ -0,0 +1,33 @@
/*
* Copyright The WildFly Authors
* SPDX-License-Identifier: Apache-2.0
*/

package org.wildfly.extension.elytron.oidc;

import org.jboss.as.controller.ModelVersion;
import org.jboss.as.controller.SubsystemModel;

/**
* Enumeration of elytron-oidc-client subsystem model versions.
* @author <a href="mailto:prpaul@redhat.com">Prarthona Paul</a>
*/

enum ElytronOidcClientSubsystemModel implements SubsystemModel {
VERSION_1_0_0(1, 0, 0),
VERSION_2_0_0(2, 0, 0),
VERSION_3_0_0(3, 0, 0), // WildFly 32.0-present
;
static final ElytronOidcClientSubsystemModel CURRENT = VERSION_3_0_0;

private final ModelVersion version;

ElytronOidcClientSubsystemModel(int major, int minor, int micro) {
this.version = ModelVersion.create(major, minor, micro);
}

@Override
public ModelVersion getVersion() {
return this.version;
}
}
Expand Up @@ -7,10 +7,12 @@

import static org.jboss.as.controller.descriptions.ModelDescriptionConstants.SUBSYSTEM;

import java.util.EnumSet;

import org.jboss.as.controller.Extension;
import org.jboss.as.controller.ExtensionContext;
import org.jboss.as.controller.ModelVersion;
import org.jboss.as.controller.PathElement;
import org.jboss.as.controller.PersistentResourceXMLDescriptionWriter;
import org.jboss.as.controller.SubsystemRegistration;
import org.jboss.as.controller.descriptions.ResourceDescriptionResolver;
import org.jboss.as.controller.descriptions.StandardResourceDescriptionResolver;
Expand All @@ -34,13 +36,6 @@ public class ElytronOidcExtension implements Extension {

private static final String RESOURCE_NAME = ElytronOidcExtension.class.getPackage().getName() + ".LocalDescriptions";

protected static final ModelVersion VERSION_1_0_0 = ModelVersion.create(1, 0, 0);
protected static final ModelVersion VERSION_2_0_0 = ModelVersion.create(2, 0, 0);
private static final ModelVersion CURRENT_MODEL_VERSION = VERSION_2_0_0;

private static final ElytronOidcSubsystemParser_1_0 ELYTRON_OIDC_SUBSYSTEM_PARSER_1_0 = new ElytronOidcSubsystemParser_1_0();
private static final ElytronOidcSubsystemParser_2_0 CURRENT_PARSER = new ElytronOidcSubsystemParser_2_0();

static ResourceDescriptionResolver getResourceDescriptionResolver(final String... keyPrefixes) {
StringBuilder sb = new StringBuilder(SUBSYSTEM_NAME);
if (keyPrefixes != null) {
Expand All @@ -51,19 +46,17 @@ static ResourceDescriptionResolver getResourceDescriptionResolver(final String..
return new StandardResourceDescriptionResolver(sb.toString(), RESOURCE_NAME, ElytronOidcExtension.class.getClassLoader(),
true, false);
}

@Override
public void initialize(ExtensionContext context) {
final SubsystemRegistration subsystem = context.registerSubsystem(SUBSYSTEM_NAME, CURRENT_MODEL_VERSION);
subsystem.registerXMLElementWriter(CURRENT_PARSER);
final SubsystemRegistration subsystem = context.registerSubsystem(SUBSYSTEM_NAME, ElytronOidcClientSubsystemModel.CURRENT.getVersion());
subsystem.registerXMLElementWriter(new PersistentResourceXMLDescriptionWriter(ElytronOidcSubsystemSchema.CURRENT.get(context.getStability())));

final ManagementResourceRegistration registration = subsystem.registerSubsystemModel(new ElytronOidcSubsystemDefinition());
registration.registerOperationHandler(GenericSubsystemDescribeHandler.DEFINITION, GenericSubsystemDescribeHandler.INSTANCE);
}

public void initializeParsers(ExtensionParsingContext context) {
context.setSubsystemXmlMapping(SUBSYSTEM_NAME, ElytronOidcSubsystemParser_1_0.NAMESPACE_1_0, ELYTRON_OIDC_SUBSYSTEM_PARSER_1_0);
context.setSubsystemXmlMapping(SUBSYSTEM_NAME, ElytronOidcSubsystemParser_2_0.NAMESPACE_2_0, CURRENT_PARSER);
context.setSubsystemXmlMappings(SUBSYSTEM_NAME, EnumSet.allOf(ElytronOidcSubsystemSchema.class));
}


}
Expand Up @@ -14,6 +14,7 @@
import org.jboss.as.controller.AttributeDefinition;
import org.jboss.as.controller.OperationContext;
import org.jboss.as.controller.OperationFailedException;
import org.jboss.as.controller.PathElement;
import org.jboss.as.controller.PersistentResourceDefinition;
import org.jboss.as.controller.ReloadRequiredRemoveStepHandler;
import org.jboss.as.controller.SimpleResourceDefinition;
Expand All @@ -25,13 +26,15 @@
import org.jboss.msc.service.ServiceController;
import org.jboss.msc.service.ServiceName;
import org.jboss.msc.service.ServiceTarget;
import org.wildfly.subsystem.resource.SubsystemResourceDefinitionRegistrar;

/**
* Root subsystem definition for the Elytron OpenID Connect subsystem.
*
* @author <a href="mailto:fjuma@redhat.com">Farah Juma</a>
*/
class ElytronOidcSubsystemDefinition extends PersistentResourceDefinition {
static final PathElement PATH = SubsystemResourceDefinitionRegistrar.pathElement(ElytronOidcExtension.SUBSYSTEM_NAME);
static final String CONFIG_CAPABILITY_NAME = "org.wildlfly.elytron.oidc";
static final String ELYTRON_CAPABILITY_NAME = "org.wildfly.security.elytron";

Expand Down