Skip to content

Commit

Permalink
WFLY-8513 Fix mail subsystem xsd & model version
Browse files Browse the repository at this point in the history
  • Loading branch information
ctomc committed Apr 6, 2017
1 parent 9aa1be7 commit 9eba5a8
Show file tree
Hide file tree
Showing 10 changed files with 44 additions and 99 deletions.
Expand Up @@ -63,14 +63,14 @@ static StandardResourceDescriptionResolver getResourceDescriptionResolver(final

@Override
public void initializeParsers(ExtensionParsingContext context) {
context.setSubsystemXmlMapping(SUBSYSTEM_NAME, Namespace.MAIL_1_0.getUriString(), MailSubsystemParser.INSTANCE);
context.setSubsystemXmlMapping(SUBSYSTEM_NAME, Namespace.MAIL_1_1.getUriString(), MailSubsystemParser.INSTANCE);
context.setSubsystemXmlMapping(SUBSYSTEM_NAME, Namespace.MAIL_1_2.getUriString(), MailSubsystemParser.INSTANCE);
context.setSubsystemXmlMapping(SUBSYSTEM_NAME, Namespace.MAIL_2_0.getUriString(), MailSubsystemParser2_0.INSTANCE);
context.setSubsystemXmlMapping(SUBSYSTEM_NAME, Namespace.MAIL_2_1.getUriString(), MailSubsystemParser2_1.INSTANCE);
context.setSubsystemXmlMapping(SUBSYSTEM_NAME, Namespace.MAIL_1_0.getUriString(), MailSubsystemParser::new);
context.setSubsystemXmlMapping(SUBSYSTEM_NAME, Namespace.MAIL_1_1.getUriString(), MailSubsystemParser::new);
context.setSubsystemXmlMapping(SUBSYSTEM_NAME, Namespace.MAIL_1_2.getUriString(), MailSubsystemParser::new);
context.setSubsystemXmlMapping(SUBSYSTEM_NAME, Namespace.MAIL_2_0.getUriString(), MailSubsystemParser2_0::new);
context.setSubsystemXmlMapping(SUBSYSTEM_NAME, Namespace.MAIL_3_0.getUriString(), MailSubsystemParser3_0::new);
}

private static final ModelVersion CURRENT_MODEL_VERSION = ModelVersion.create(2, 1, 0);
private static final ModelVersion CURRENT_MODEL_VERSION = ModelVersion.create(3, 0, 0);


@Override
Expand All @@ -83,7 +83,7 @@ public void initialize(ExtensionContext context) {
if (context.isRegisterTransformers()) {
registerTransformers(subsystem);
}
subsystem.registerXMLElementWriter(MailSubsystemParser2_1.INSTANCE);
subsystem.registerXMLElementWriter(new MailSubsystemParser3_0());
}

private void registerTransformers(SubsystemRegistration subsystem) {
Expand Down
Expand Up @@ -53,14 +53,13 @@
import org.jboss.staxmapper.XMLExtendedStreamReader;

/**
* The default subsystem parser / writer
* The 1.x subsystem parser / writer
*
* @author <a href="tomaz.cerar@gmail.com">Tomaz Cerar</a>
*/
class MailSubsystemParser implements XMLStreamConstants, XMLElementReader<List<ModelNode>> {
static final MailSubsystemParser INSTANCE = new MailSubsystemParser();

private MailSubsystemParser() {
MailSubsystemParser() {

}

Expand Down
Expand Up @@ -26,49 +26,38 @@

import static org.jboss.as.controller.PersistentResourceXMLDescription.builder;

import java.util.List;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;

import org.jboss.as.controller.PathAddress;
import org.jboss.as.controller.PersistentResourceXMLDescription;
import org.jboss.as.controller.persistence.SubsystemMarshallingContext;
import org.jboss.dmr.ModelNode;
import org.jboss.staxmapper.XMLElementReader;
import org.jboss.staxmapper.XMLElementWriter;
import org.jboss.staxmapper.XMLExtendedStreamReader;
import org.jboss.staxmapper.XMLExtendedStreamWriter;
import org.jboss.as.controller.PersistentResourceXMLParser;

/**
* @author Tomaz Cerar (c) 2013 Red Hat Inc.
*/
public class MailSubsystemParser2_0 implements XMLStreamConstants, XMLElementReader<List<ModelNode>>, XMLElementWriter<SubsystemMarshallingContext> {
protected static final MailSubsystemParser2_0 INSTANCE = new MailSubsystemParser2_0();
private static final PersistentResourceXMLDescription xmlDescription;
public class MailSubsystemParser2_0 extends PersistentResourceXMLParser {
private final PersistentResourceXMLDescription xmlDescription;

static {
xmlDescription = builder(MailSubsystemResource.INSTANCE)
MailSubsystemParser2_0() {
xmlDescription = builder(MailSubsystemResource.INSTANCE.getPathElement(), Namespace.MAIL_2_0.getUriString())
.addChild(
builder(MailSessionDefinition.INSTANCE)
builder(MailSessionDefinition.INSTANCE.getPathElement())
.addAttributes(MailSessionDefinition.DEBUG, MailSessionDefinition.JNDI_NAME, MailSessionDefinition.FROM)
.addChild(
builder(MailServerDefinition.INSTANCE_SMTP)
builder(MailServerDefinition.INSTANCE_SMTP.getPathElement())
.addAttributes(MailServerDefinition.OUTBOUND_SOCKET_BINDING_REF, MailServerDefinition.SSL, MailServerDefinition.TLS, MailServerDefinition.USERNAME, MailServerDefinition.PASSWORD)
.setXmlElementName(MailSubsystemModel.SMTP_SERVER)

)
.addChild(
builder(MailServerDefinition.INSTANCE_POP3)
builder(MailServerDefinition.INSTANCE_POP3.getPathElement())
.addAttributes(MailServerDefinition.OUTBOUND_SOCKET_BINDING_REF, MailServerDefinition.SSL, MailServerDefinition.TLS, MailServerDefinition.USERNAME, MailServerDefinition.PASSWORD)
.setXmlElementName(MailSubsystemModel.POP3_SERVER)
)
.addChild(
builder(MailServerDefinition.INSTANCE_IMAP)
builder(MailServerDefinition.INSTANCE_IMAP.getPathElement())
.addAttributes(MailServerDefinition.OUTBOUND_SOCKET_BINDING_REF, MailServerDefinition.SSL, MailServerDefinition.TLS, MailServerDefinition.USERNAME, MailServerDefinition.PASSWORD)
.setXmlElementName(MailSubsystemModel.IMAP_SERVER)
)
.addChild(
builder(MailServerDefinition.INSTANCE_CUSTOM)
builder(MailServerDefinition.INSTANCE_CUSTOM.getPathElement())
.addAttributes(MailServerDefinition.OUTBOUND_SOCKET_BINDING_REF_OPTIONAL, MailServerDefinition.SSL, MailServerDefinition.TLS, MailServerDefinition.USERNAME, MailServerDefinition.PASSWORD, MailServerDefinition.PROPERTIES)
.setXmlElementName(MailSubsystemModel.CUSTOM_SERVER)
)
Expand All @@ -77,21 +66,9 @@ public class MailSubsystemParser2_0 implements XMLStreamConstants, XMLElementRea
}


/**
* {@inheritDoc}
*/
@Override
public void writeContent(XMLExtendedStreamWriter writer, SubsystemMarshallingContext context) throws XMLStreamException {
ModelNode model = new ModelNode();
model.get(MailSubsystemResource.INSTANCE.getPathElement().getKeyValuePair()).set(context.getModelNode());//this is bit of workaround for SPRD to work properly
xmlDescription.persist(writer, model, Namespace.CURRENT.getUriString());
public PersistentResourceXMLDescription getParserDescription() {
return xmlDescription;
}

/**
* {@inheritDoc}
*/
@Override
public void readElement(XMLExtendedStreamReader reader, List<ModelNode> list) throws XMLStreamException {
xmlDescription.parse(reader, PathAddress.EMPTY_ADDRESS, list);
}
}
Expand Up @@ -26,73 +26,42 @@

import static org.jboss.as.controller.PersistentResourceXMLDescription.builder;

import java.util.List;

import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;

import org.jboss.as.controller.PathAddress;
import org.jboss.as.controller.PersistentResourceXMLDescription;
import org.jboss.as.controller.persistence.SubsystemMarshallingContext;
import org.jboss.dmr.ModelNode;
import org.jboss.staxmapper.XMLElementReader;
import org.jboss.staxmapper.XMLElementWriter;
import org.jboss.staxmapper.XMLExtendedStreamReader;
import org.jboss.staxmapper.XMLExtendedStreamWriter;
import org.jboss.as.controller.PersistentResourceXMLParser;

/**
* @author Tomaz Cerar (c) 2013 Red Hat Inc.
* @author Tomaz Cerar (c) 2017 Red Hat Inc.
*/
public class MailSubsystemParser2_1 implements XMLStreamConstants, XMLElementReader<List<ModelNode>>, XMLElementWriter<SubsystemMarshallingContext> {
protected static final MailSubsystemParser2_1 INSTANCE = new MailSubsystemParser2_1();
private static final PersistentResourceXMLDescription xmlDescription;
class MailSubsystemParser3_0 extends PersistentResourceXMLParser {

static {
xmlDescription = builder(MailSubsystemResource.INSTANCE)
@Override
public PersistentResourceXMLDescription getParserDescription() {
return builder(MailSubsystemResource.INSTANCE.getPathElement(), Namespace.MAIL_3_0.getUriString())
.addChild(
builder(MailSessionDefinition.INSTANCE)
builder(MailSessionDefinition.INSTANCE.getPathElement())
.addAttributes(MailSessionDefinition.DEBUG, MailSessionDefinition.JNDI_NAME, MailSessionDefinition.FROM)
.addChild(
builder(MailServerDefinition.INSTANCE_SMTP)
builder(MailServerDefinition.INSTANCE_SMTP.getPathElement())
.addAttributes(MailServerDefinition.OUTBOUND_SOCKET_BINDING_REF, MailServerDefinition.SSL, MailServerDefinition.TLS, MailServerDefinition.USERNAME, MailServerDefinition.PASSWORD, MailServerDefinition.CREDENTIAL_REFERENCE)
.setXmlElementName(MailSubsystemModel.SMTP_SERVER)

)
.addChild(
builder(MailServerDefinition.INSTANCE_POP3)
builder(MailServerDefinition.INSTANCE_POP3.getPathElement())
.addAttributes(MailServerDefinition.OUTBOUND_SOCKET_BINDING_REF, MailServerDefinition.SSL, MailServerDefinition.TLS, MailServerDefinition.USERNAME, MailServerDefinition.PASSWORD, MailServerDefinition.CREDENTIAL_REFERENCE)
.setXmlElementName(MailSubsystemModel.POP3_SERVER)
)
.addChild(
builder(MailServerDefinition.INSTANCE_IMAP)
builder(MailServerDefinition.INSTANCE_IMAP.getPathElement())
.addAttributes(MailServerDefinition.OUTBOUND_SOCKET_BINDING_REF, MailServerDefinition.SSL, MailServerDefinition.TLS, MailServerDefinition.USERNAME, MailServerDefinition.PASSWORD, MailServerDefinition.CREDENTIAL_REFERENCE)
.setXmlElementName(MailSubsystemModel.IMAP_SERVER)
)
.addChild(
builder(MailServerDefinition.INSTANCE_CUSTOM)
builder(MailServerDefinition.INSTANCE_CUSTOM.getPathElement())
.addAttributes(MailServerDefinition.OUTBOUND_SOCKET_BINDING_REF_OPTIONAL, MailServerDefinition.SSL, MailServerDefinition.TLS, MailServerDefinition.USERNAME, MailServerDefinition.PASSWORD, MailServerDefinition.CREDENTIAL_REFERENCE, MailServerDefinition.PROPERTIES)
.setXmlElementName(MailSubsystemModel.CUSTOM_SERVER)
)
)
.build();
}


/**
* {@inheritDoc}
*/
@Override
public void writeContent(XMLExtendedStreamWriter writer, SubsystemMarshallingContext context) throws XMLStreamException {
ModelNode model = new ModelNode();
model.get(MailSubsystemResource.INSTANCE.getPathElement().getKeyValuePair()).set(context.getModelNode());//this is bit of workaround for SPRD to work properly
xmlDescription.persist(writer, model, Namespace.CURRENT.getUriString());
}

/**
* {@inheritDoc}
*/
@Override
public void readElement(XMLExtendedStreamReader reader, List<ModelNode> list) throws XMLStreamException {
xmlDescription.parse(reader, PathAddress.EMPTY_ADDRESS, list);
}
}
4 changes: 2 additions & 2 deletions mail/src/main/java/org/jboss/as/mail/extension/Namespace.java
Expand Up @@ -36,12 +36,12 @@ enum Namespace {
MAIL_1_1("urn:jboss:domain:mail:1.1"),
MAIL_1_2("urn:jboss:domain:mail:1.2"),
MAIL_2_0("urn:jboss:domain:mail:2.0"),
MAIL_2_1("urn:jboss:domain:mail:2.1");
MAIL_3_0("urn:jboss:domain:mail:3.0");

/**
* The current namespace version.
*/
public static final Namespace CURRENT = MAIL_2_1;
public static final Namespace CURRENT = MAIL_3_0;

private final String name;

Expand Down
Expand Up @@ -25,8 +25,8 @@
-->

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="urn:jboss:domain:mail:2.1"
targetNamespace="urn:jboss:domain:mail:2.1"
xmlns="urn:jboss:domain:mail:3.0"
targetNamespace="urn:jboss:domain:mail:3.0"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
version="1.0">
Expand Down
2 changes: 1 addition & 1 deletion mail/src/main/resources/subsystem-templates/mail.xml
Expand Up @@ -2,7 +2,7 @@
<!-- See src/resources/configuration/ReadMe.txt for how the configuration assembly works -->
<config>
<extension-module>org.jboss.as.mail</extension-module>
<subsystem xmlns="urn:jboss:domain:mail:2.1">
<subsystem xmlns="urn:jboss:domain:mail:3.0">
<mail-session name="default" jndi-name="java:jboss/mail/Default">
<smtp-server outbound-socket-binding-ref="mail-smtp"/>
</mail-session>
Expand Down
Expand Up @@ -48,8 +48,8 @@ public void testParseSubsystem() throws Exception {
List<ModelNode> operations = super.parse(getSubsystemXml());

///Check that we have the expected number of operations
log.info("operations: " + operations);
log.info("operations.size: " + operations.size());
//log.info("operations: " + operations);
//log.info("operations.size: " + operations.size());
Assert.assertEquals(7, operations.size());

//Check that each operation has the correct content
Expand Down
Expand Up @@ -53,19 +53,19 @@
/**
* @author <a href="mailto:tomaz.cerar@redhat.com">Tomaz Cerar</a>
*/
public class MailSubsystem21TestCase extends AbstractSubsystemBaseTest {
public MailSubsystem21TestCase() {
public class MailSubsystem30TestCase extends AbstractSubsystemBaseTest {
public MailSubsystem30TestCase() {
super(MailExtension.SUBSYSTEM_NAME, new MailExtension());
}

@Override
protected String getSubsystemXml() throws IOException {
return readResource("subsystem_2_1.xml");
return readResource("subsystem_3_0.xml");
}

@Override
protected String getSubsystemXsdPath() throws Exception {
return "schema/wildfly-mail_2_1.xsd";
return "schema/wildfly-mail_3_0.xsd";
}

@Override
Expand Down
Expand Up @@ -22,7 +22,7 @@
~
-->

<subsystem xmlns="urn:jboss:domain:mail:2.1">
<subsystem xmlns="urn:jboss:domain:mail:3.0">
<mail-session name="defaultMail" jndi-name="java:/Mail" from="user dot name at domain dot tld">
<smtp-server outbound-socket-binding-ref="mail-smtp" tls="true" username="${exp.name:nobody}">
<credential-reference clear-text="pass"/>
Expand Down

0 comments on commit 9eba5a8

Please sign in to comment.