Skip to content

Commit

Permalink
WFLY-4303 Allow expressions in jboss-ejb-client.xml
Browse files Browse the repository at this point in the history
remove duplicate code and allow expressions for all versions of namespace
  • Loading branch information
wfink committed Mar 16, 2015
1 parent 09ea8ef commit 2aba79f
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 433 deletions.
Expand Up @@ -47,6 +47,7 @@

import org.jboss.as.ee.logging.EeLogger;
import org.jboss.as.ee.metadata.EJBClientDescriptorMetaData;
import org.jboss.metadata.property.PropertyReplacer;
import org.jboss.staxmapper.XMLElementReader;
import org.jboss.staxmapper.XMLExtendedStreamReader;

Expand All @@ -55,17 +56,19 @@
*
* @author Jaikiran Pai
* @author <a href="mailto:tadamski@redhat.com">Tomasz Adamski</a>
* @author <a href="mailto:wfink@redhat.com">Wolf-Dieter Fink</a>
*/
class EJBClientDescriptor10Parser implements XMLElementReader<EJBClientDescriptorMetaData> {

public static final String NAMESPACE_1_0 = "urn:jboss:ejb-client:1.0";

public static final EJBClientDescriptor10Parser INSTANCE = new EJBClientDescriptor10Parser();
protected final PropertyReplacer propertyReplacer;


protected EJBClientDescriptor10Parser() {
protected EJBClientDescriptor10Parser(final PropertyReplacer propertyReplacer) {
this.propertyReplacer = propertyReplacer;
}


@Override
public void readElement(final XMLExtendedStreamReader reader, final EJBClientDescriptorMetaData ejbClientDescriptorMetaData) throws XMLStreamException {
while (reader.hasNext()) {
Expand Down Expand Up @@ -131,14 +134,14 @@ protected void parseEJBReceivers(final XMLExtendedStreamReader reader, final EJB
final int count = reader.getAttributeCount();
for (int i = 0; i < count; i++) {
final EJBClientDescriptorXMLAttribute attribute = EJBClientDescriptorXMLAttribute.forName(reader.getAttributeLocalName(i));
final String val = reader.getAttributeValue(i);
final String value = readResolveValue(reader, i);
switch (attribute) {
case EXCLUDE_LOCAL_RECEIVER:
final boolean excludeLocalReceiver = Boolean.parseBoolean(val.trim());
final boolean excludeLocalReceiver = Boolean.parseBoolean(value);
ejbClientDescriptorMetaData.setExcludeLocalReceiver(excludeLocalReceiver);
break;
case LOCAL_RECEIVER_PASS_BY_VALUE:
localReceiverPassByValue = Boolean.parseBoolean(val.trim());
localReceiverPassByValue = Boolean.parseBoolean(value);
break;
default:
unexpectedContent(reader);
Expand Down Expand Up @@ -179,7 +182,7 @@ protected void parseRemotingReceiver(final XMLExtendedStreamReader reader, final
required.remove(attribute);
switch (attribute) {
case OUTBOUND_CONNECTION_REF:
outboundConnectionRef = reader.getAttributeValue(i).trim();
outboundConnectionRef = readResolveValue(reader, i);
ejbClientDescriptorMetaData.addRemotingReceiverConnectionRef(outboundConnectionRef);
break;
default:
Expand Down Expand Up @@ -280,4 +283,8 @@ protected static void unexpectedContent(final XMLStreamReader reader) throws XML
throw EeLogger.ROOT_LOGGER.errorParsingEJBClientDescriptor(b.toString(), reader.getLocation());
}

protected String readResolveValue(final XMLExtendedStreamReader reader, final int index) {
return propertyReplacer.replaceProperties(reader.getAttributeValue(index).trim());
}

}
Expand Up @@ -32,22 +32,22 @@
import javax.xml.stream.XMLStreamException;

import org.jboss.as.ee.metadata.EJBClientDescriptorMetaData;
import org.jboss.metadata.property.PropertyReplacer;
import org.jboss.staxmapper.XMLExtendedStreamReader;

/**
* Parser for urn:jboss:ejb-client:1.1:jboss-ejb-client
*
* @author Jaikiran Pai
* @author <a href="mailto:tadamski@redhat.com">Tomasz Adamski</a>
* @author <a href="mailto:wfink@redhat.com">Wolf-Dieter Fink</a>
*/
class EJBClientDescriptor11Parser extends EJBClientDescriptor10Parser {

public static final String NAMESPACE_1_1 = "urn:jboss:ejb-client:1.1";

public static final EJBClientDescriptor11Parser INSTANCE = new EJBClientDescriptor11Parser();


protected EJBClientDescriptor11Parser() {
protected EJBClientDescriptor11Parser(final PropertyReplacer propertyReplacer) {
super(propertyReplacer);
}

protected void parseClientContext(final XMLExtendedStreamReader reader, final EJBClientDescriptorMetaData ejbClientDescriptorMetaData) throws XMLStreamException {
Expand Down Expand Up @@ -120,24 +120,25 @@ protected void parseCluster(final XMLExtendedStreamReader reader, final EJBClien
for (int i = 0; i < count; i++) {
final EJBClientDescriptorXMLAttribute attribute = EJBClientDescriptorXMLAttribute.forName(reader.getAttributeLocalName(i));
required.remove(attribute);
final String value = readResolveValue(reader, i);
switch (attribute) {
case NAME:
clusterName = reader.getAttributeValue(i).trim();
clusterName = value;
break;
case CONNECT_TIMEOUT:
connectTimeout = reader.getLongAttributeValue(i);
connectTimeout = Long.parseLong(value);
break;
case CLUSTER_NODE_SELECTOR:
clusterNodeSelector = reader.getAttributeValue(i).trim();
clusterNodeSelector = value;
break;
case MAX_ALLOWED_CONNECTED_NODES:
maxAllowedConnectedNodes = reader.getLongAttributeValue(i);
maxAllowedConnectedNodes = Long.parseLong(value);
break;
case USERNAME:
userName = reader.getAttributeValue(i).trim();
userName = value;
break;
case SECURITY_REALM:
securityRealm = reader.getAttributeValue(i).trim();
securityRealm = value;
break;
default:
unexpectedContent(reader);
Expand Down Expand Up @@ -252,18 +253,19 @@ protected void parseClusterNode(final XMLExtendedStreamReader reader, final EJBC
for (int i = 0; i < count; i++) {
final EJBClientDescriptorXMLAttribute attribute = EJBClientDescriptorXMLAttribute.forName(reader.getAttributeLocalName(i));
required.remove(attribute);
final String value = readResolveValue(reader, i);
switch (attribute) {
case NAME:
nodeName = reader.getAttributeValue(i).trim();
nodeName = value;
break;
case CONNECT_TIMEOUT:
connectTimeout = reader.getLongAttributeValue(i);
connectTimeout = Long.parseLong(value);
break;
case USERNAME:
userName = reader.getAttributeValue(i).trim();
userName = value;
break;
case SECURITY_REALM:
securityRealm = reader.getAttributeValue(i).trim();
securityRealm = value;
break;
default:
unexpectedContent(reader);
Expand Down Expand Up @@ -316,12 +318,13 @@ protected Properties parseProperty(final XMLExtendedStreamReader reader) throws
for (int i = 0; i < count; i++) {
final EJBClientDescriptorXMLAttribute attribute = EJBClientDescriptorXMLAttribute.forName(reader.getAttributeLocalName(i));
required.remove(attribute);
final String val = readResolveValue(reader, i);
switch (attribute) {
case NAME:
name = reader.getAttributeValue(i).trim();
name = val;
break;
case VALUE:
value = reader.getAttributeValue(i).trim();
value = val;
break;
default:
unexpectedContent(reader);
Expand Down
Expand Up @@ -32,21 +32,22 @@
import javax.xml.stream.XMLStreamException;

import org.jboss.as.ee.metadata.EJBClientDescriptorMetaData;
import org.jboss.metadata.property.PropertyReplacer;
import org.jboss.staxmapper.XMLExtendedStreamReader;

/**
* Parser for urn:jboss:ejb-client:1.2:jboss-ejb-client
*
* @author Jaikiran Pai
* @author <a href="mailto:tadamski@redhat.com">Tomasz Adamski</a>
* @author <a href="mailto:wfink@redhat.com">Wolf-Dieter Fink</a>
*/
class EJBClientDescriptor12Parser extends EJBClientDescriptor11Parser {

public static final String NAMESPACE_1_2 = "urn:jboss:ejb-client:1.2";

public static final EJBClientDescriptor12Parser INSTANCE = new EJBClientDescriptor12Parser();

protected EJBClientDescriptor12Parser() {
protected EJBClientDescriptor12Parser(final PropertyReplacer propertyReplacer) {
super(propertyReplacer);
}

protected void parseClientContext(final XMLExtendedStreamReader reader,
Expand Down Expand Up @@ -101,55 +102,9 @@ protected void parseClientContext(final XMLExtendedStreamReader reader,
unexpectedEndOfDocument(reader.getLocation());
}

protected void parseEJBReceivers(final XMLExtendedStreamReader reader,
final EJBClientDescriptorMetaData ejbClientDescriptorMetaData) throws XMLStreamException {

// initialize the local-receiver-pass-by-value to the default true
Boolean localReceiverPassByValue = null;

final int count = reader.getAttributeCount();
for (int i = 0; i < count; i++) {
final EJBClientDescriptorXMLAttribute attribute = EJBClientDescriptorXMLAttribute.forName(reader
.getAttributeLocalName(i));
final String val = reader.getAttributeValue(i);
switch (attribute) {
case EXCLUDE_LOCAL_RECEIVER:
final boolean excludeLocalReceiver = Boolean.parseBoolean(val.trim());
ejbClientDescriptorMetaData.setExcludeLocalReceiver(excludeLocalReceiver);
break;
case LOCAL_RECEIVER_PASS_BY_VALUE:
localReceiverPassByValue = Boolean.parseBoolean(val.trim());
break;
default:
unexpectedContent(reader);
}
}
// set the local receiver pass by value into the metadata
ejbClientDescriptorMetaData.setLocalReceiverPassByValue(localReceiverPassByValue);
while (reader.hasNext()) {
switch (reader.nextTag()) {
case END_ELEMENT: {
return;
}
case START_ELEMENT: {
final EJBClientDescriptorXMLElement element = EJBClientDescriptorXMLElement.forName(reader.getLocalName());
switch (element) {
case REMOTING_EJB_RECEIVER:
this.parseRemotingReceiver(reader, ejbClientDescriptorMetaData);
break;
default:
unexpectedElement(reader);
}
break;
}
default: {
unexpectedContent(reader);
}
}
}
unexpectedEndOfDocument(reader.getLocation());
}

/**
* connectTimeout added
*/
protected void parseRemotingReceiver(final XMLExtendedStreamReader reader,
final EJBClientDescriptorMetaData ejbClientDescriptorMetaData) throws XMLStreamException {
String outboundConnectionRef = null;
Expand All @@ -162,14 +117,15 @@ protected void parseRemotingReceiver(final XMLExtendedStreamReader reader,
final EJBClientDescriptorXMLAttribute attribute = EJBClientDescriptorXMLAttribute.forName(reader
.getAttributeLocalName(i));
required.remove(attribute);
final String value = readResolveValue(reader, i);
switch (attribute) {
case OUTBOUND_CONNECTION_REF:
outboundConnectionRef = reader.getAttributeValue(i).trim();
outboundConnectionRef = value;
remotingReceiverConfiguration = ejbClientDescriptorMetaData
.addRemotingReceiverConnectionRef(outboundConnectionRef);
break;
case CONNECT_TIMEOUT:
connectTimeout = reader.getLongAttributeValue(i);
connectTimeout = Long.parseLong(value);
break;
default:
unexpectedContent(reader);
Expand Down

0 comments on commit 2aba79f

Please sign in to comment.