Skip to content

Commit

Permalink
Replace PersistentResourceXMLDescription implementation with delegati…
Browse files Browse the repository at this point in the history
…on to new ResourceXMLElement.
  • Loading branch information
pferraro committed Nov 27, 2024
1 parent a1b5d43 commit b6689e8
Show file tree
Hide file tree
Showing 8 changed files with 289 additions and 699 deletions.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
/**
* An {@link XMLElementReader} based on a {@link PersistentResourceXMLDescription}.
* @author Paul Ferraro
* @deprecated Superseded by {@link org.jboss.as.controller.persistence.xml.SubsystemResourceXMLElementReader}.
*/
@Deprecated(forRemoval = true)
public class PersistentResourceXMLDescriptionReader implements XMLElementReader<List<ModelNode>> {
private final Supplier<PersistentResourceXMLDescription> description;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,9 @@
/**
* An {@link XMLElementWriter} based on a {@link PersistentResourceXMLDescription}.
* @author Paul Ferraro
* @deprecated Superseded by {@link org.jboss.as.controller.persistence.xml.SubsystemResourceXMLElementWriter}.
*/
@Deprecated(forRemoval = true)
public class PersistentResourceXMLDescriptionWriter implements XMLElementWriter<SubsystemMarshallingContext> {
private final Supplier<PersistentResourceXMLDescription> description;

Expand Down Expand Up @@ -47,9 +49,10 @@ public <S extends PersistentSubsystemSchema<S>> PersistentResourceXMLDescription

@Override
public void writeContent(XMLExtendedStreamWriter writer, SubsystemMarshallingContext context) throws XMLStreamException {
ModelNode subsystemModel = context.getModelNode();
PersistentResourceXMLDescription description = this.description.get();
ModelNode model = new ModelNode();
model.get(description.getPathElement().getKeyValuePair()).set(context.getModelNode());
model.get(description.getPathElement().getKeyValuePair()).set(subsystemModel.isDefined() ? subsystemModel : new ModelNode().setEmptyObject());
description.persist(writer, model);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@

/**
* @author Tomaz Cerar (c) 2015 Red Hat Inc.
* @deprecated Superseded by org.wildfly.subsystem.SubsystemPersistence
*/
@Deprecated(forRemoval = true)
public abstract class PersistentResourceXMLParser implements XMLStreamConstants, XMLElementReader<List<ModelNode>>, XMLElementWriter<SubsystemMarshallingContext>, UnaryOperator<PersistentResourceXMLDescription> {

private final AtomicReference<PersistentResourceXMLDescription> cachedDescription = new AtomicReference<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,27 @@

import javax.xml.stream.XMLStreamException;

import org.jboss.as.controller.persistence.xml.ResourceXMLElement;
import org.jboss.as.controller.persistence.xml.SubsystemResourceXMLSchema;
import org.jboss.dmr.ModelNode;
import org.jboss.staxmapper.XMLExtendedStreamReader;

/**
* Defines a versioned schema for a subsystem defined via a {@link PersistentResourceXMLDescription}.
* @author Paul Ferraro
* @param <S> the schema type
* @deprecated Superseded by {@link SubsystemResourceXMLSchema}.
*/
public interface PersistentSubsystemSchema<S extends PersistentSubsystemSchema<S>> extends SubsystemSchema<S> {
@Deprecated(forRemoval = true)
public interface PersistentSubsystemSchema<S extends PersistentSubsystemSchema<S>> extends SubsystemResourceXMLSchema<S> {

PersistentResourceXMLDescription getXMLDescription();

@Override
default ResourceXMLElement getSubsystemResourceXMLElement() {
return this.getXMLDescription().getXMLElement();
}

@Override
default void readElement(XMLExtendedStreamReader reader, List<ModelNode> value) throws XMLStreamException {
new PersistentResourceXMLDescriptionReader(this.getXMLDescription()).readElement(reader, value);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@

/**
* @author Tomaz Cerar (c) 2017 Red Hat Inc.
* @deprecated To be removed without replacement.
*/
@Deprecated(forRemoval = true)
@FunctionalInterface
public interface ResourceMarshaller {
void persist(XMLExtendedStreamWriter writer, ModelNode model) throws XMLStreamException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@

/**
* @author Tomaz Cerar (c) 2017 Red Hat Inc.
* @deprecated To be removed without replacement.
*/
@Deprecated(forRemoval = true)
@FunctionalInterface
public interface ResourceParser {
void parse(final XMLExtendedStreamReader reader, PathAddress parentAddress, List<ModelNode> list) throws XMLStreamException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@
import java.util.Set;

import org.jboss.as.controller.Feature;
import org.jboss.as.controller.PersistentResourceXMLDescription;
import org.jboss.as.controller.PersistentResourceXMLDescriptionReader;
import org.jboss.as.controller.PersistentResourceXMLDescriptionWriter;
import org.jboss.as.controller.PersistentSubsystemSchema;
import org.jboss.as.controller.SubsystemSchema;
import org.jboss.as.controller.persistence.SubsystemMarshallingContext;
import org.jboss.as.controller.persistence.xml.ResourceXMLElement;
import org.jboss.as.controller.persistence.xml.SubsystemResourceXMLElementReader;
import org.jboss.as.controller.persistence.xml.SubsystemResourceXMLElementWriter;
import org.jboss.as.controller.persistence.xml.SubsystemResourceXMLSchema;
import org.jboss.as.version.Stability;
import org.jboss.dmr.ModelNode;
import org.jboss.staxmapper.XMLElementReader;
Expand Down Expand Up @@ -58,7 +58,7 @@ default XMLElementReader<List<ModelNode>> getReader(S schema) {
* @param currentSchema the current schema version
* @return a subsystem persistence configuration
*/
static <S extends Enum<S> & PersistentSubsystemSchema<S>> SubsystemPersistence<S> of(S currentSchema) {
static <S extends Enum<S> & SubsystemResourceXMLSchema<S>> SubsystemPersistence<S> of(S currentSchema) {
return of(EnumSet.of(currentSchema));
}

Expand All @@ -68,13 +68,13 @@ static <S extends Enum<S> & PersistentSubsystemSchema<S>> SubsystemPersistence<S
* @param currentSchemas the current schema versions
* @return a subsystem persistence configuration
*/
static <S extends Enum<S> & PersistentSubsystemSchema<S>> SubsystemPersistence<S> of(Set<S> currentSchemas) {
static <S extends Enum<S> & SubsystemResourceXMLSchema<S>> SubsystemPersistence<S> of(Set<S> currentSchemas) {
Assert.assertFalse(currentSchemas.isEmpty());
Class<S> schemaClass = currentSchemas.iterator().next().getDeclaringClass();
// Build PersistentResourceXMLDescription for current schemas to share between reader and writer.
Map<S, PersistentResourceXMLDescription> currentXMLDescriptions = new EnumMap<>(schemaClass);
// Build ResourceXMLElement for current schemas to share between reader and writer.
Map<S, ResourceXMLElement> currentElements = new EnumMap<>(schemaClass);
for (S currentSchema : currentSchemas) {
currentXMLDescriptions.put(currentSchema, currentSchema.getXMLDescription());
currentElements.put(currentSchema, currentSchema.getSubsystemResourceXMLElement());
}
Map<Stability, S> currentSchemaPerStability = Feature.map(currentSchemas);
return new SubsystemPersistence<>() {
Expand All @@ -85,13 +85,13 @@ public Set<S> getSchemas() {

@Override
public XMLElementReader<List<ModelNode>> getReader(S schema) {
return Optional.ofNullable(currentXMLDescriptions.get(schema)).<XMLElementReader<List<ModelNode>>>map(PersistentResourceXMLDescriptionReader::new).orElse(schema);
return Optional.ofNullable(currentElements.get(schema)).<XMLElementReader<List<ModelNode>>>map(SubsystemResourceXMLElementReader::new).orElse(schema);
}

@Override
public XMLElementWriter<SubsystemMarshallingContext> getWriter(Stability stability) {
S currentSchema = currentSchemaPerStability.get(stability);
return new PersistentResourceXMLDescriptionWriter(currentXMLDescriptions.get(currentSchema));
return new SubsystemResourceXMLElementWriter(currentElements.get(currentSchema));
}
};
}
Expand Down

0 comments on commit b6689e8

Please sign in to comment.