Skip to content

Commit

Permalink
writeJavaMethodDescriptor cleanup
Browse files Browse the repository at this point in the history
- amended commit where I originally renamed these methods, but I put
  the original name back, so I am committing just the cleanup around here.

Signed-off-by: David Matějček <david.matejcek@omnifish.ee>
  • Loading branch information
dmatej committed Sep 18, 2022
1 parent 88292e8 commit 58f3a86
Show file tree
Hide file tree
Showing 7 changed files with 90 additions and 107 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/*
* Copyright (c) 2022 Contributors to the Eclipse Foundation
* Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
Expand All @@ -16,39 +17,43 @@

package com.sun.enterprise.deployment.node;

import java.util.Map;

import com.sun.enterprise.deployment.MethodDescriptor;
import com.sun.enterprise.deployment.xml.RuntimeTagNames;
import com.sun.enterprise.deployment.xml.TagNames;

import java.util.Map;

import org.w3c.dom.Node;

/**
* This class handle the method element
*
* @author Jerome Dochez
* @version
* @author Jerome Dochez
*/
public class MethodNode extends DeploymentDescriptorNode<MethodDescriptor> {

private MethodDescriptor descriptor;

@Override
public MethodDescriptor getDescriptor() {
if (descriptor == null) descriptor = new MethodDescriptor();
if (descriptor == null) {
descriptor = new MethodDescriptor();
}
return descriptor;
}


@Override
protected Map getDispatchTable() {
Map table = super.getDispatchTable();
protected Map<String, String> getDispatchTable() {
Map<String, String> table = super.getDispatchTable();
table.put(TagNames.EJB_NAME, "setEjbName");
table.put(TagNames.METHOD_INTF, "setEjbClassSymbol");
table.put(TagNames.METHOD_NAME, "setName");
table.put(TagNames.METHOD_PARAM, "addParameterClass");
return table;
}


@Override
public boolean endElement(XMLElement element) {
String qname = element.getQName();
Expand All @@ -67,23 +72,22 @@ public boolean endElement(XMLElement element) {
public Node writeDescriptor(Node parent, String nodeName, MethodDescriptor descriptor, String ejbName) {
Node methodNode = super.writeDescriptor(parent, nodeName, descriptor);
writeLocalizedDescriptions(methodNode, descriptor);
if (ejbName != null && ejbName.length() > 0) {
if (ejbName != null && !ejbName.isEmpty()) {
appendTextChild(methodNode, TagNames.EJB_NAME, ejbName);
}
String methodIntfSymbol = descriptor.getEjbClassSymbol();
if( (methodIntfSymbol != null) &&
!methodIntfSymbol.equals(MethodDescriptor.EJB_BEAN) ) {
appendTextChild(methodNode, TagNames.METHOD_INTF,
methodIntfSymbol);
if (methodIntfSymbol != null && !methodIntfSymbol.equals(MethodDescriptor.EJB_BEAN)) {
appendTextChild(methodNode, TagNames.METHOD_INTF, methodIntfSymbol);
}
appendTextChild(methodNode, TagNames.METHOD_NAME, descriptor.getName());
if (descriptor.getParameterClassNames()!=null) {
if (descriptor.getParameterClassNames() != null) {
Node paramsNode = appendChild(methodNode, TagNames.METHOD_PARAMS);
writeMethodParams(paramsNode, descriptor);
}
return methodNode;
}


/**
* write the method descriptor class to a query-method DOM tree and return it
*
Expand All @@ -100,43 +104,42 @@ public Node writeQueryMethodDescriptor(Node parent, String nodeName, MethodDescr
return methodNode;
}


/**
* write the method descriptor class to a java-method DOM tree and return it
* Write the method descriptor class to a java-method DOM tree and return it
*
* @param parent node in the DOM tree
* @param node name for the root element of this xml fragment
* @param the descriptor to write
* @param nodeName node name for the root element of this xml fragment
* @param methodDescriptor the descriptor to write
* @return the DOM tree top node
*/
public Node writeJavaMethodDescriptor(Node parent, String nodeName,
MethodDescriptor descriptor) {
// Write out the java method description. In the case of a void
public Node writeJavaMethodDescriptor(Node parent, String nodeName, MethodDescriptor methodDescriptor) {
// Write out the java method description. In the case of a void
// method, a <method-params> element will *not* be written out.
return writeJavaMethodDescriptor(parent, nodeName, descriptor, false);
return writeJavaMethodDescriptor(parent, nodeName, methodDescriptor, false);
}


/**
* write the method descriptor class to a java-method DOM tree and return it
* Write the method descriptor class to a java-method DOM tree and return it
*
* @param parent node in the DOM tree
* @param node name for the root element of this xml fragment
* @param the descriptor to write
* @param nodeName node name for the root element of this xml fragment
* @param methodDescriptor the descriptor to write
* @param writeEmptyMethodParamsElementForVoidMethods
* @return the DOM tree top node
*/
public Node writeJavaMethodDescriptor(Node parent, String nodeName,
MethodDescriptor descriptor,
public Node writeJavaMethodDescriptor(Node parent, String nodeName, MethodDescriptor methodDescriptor,
boolean writeEmptyMethodParamsElementForVoidMethods) {
Node methodNode = super.writeDescriptor(parent, nodeName, descriptor);
appendTextChild(methodNode, RuntimeTagNames.METHOD_NAME,
descriptor.getName());
if (descriptor.getParameterClassNames() != null) {
Node paramsNode =
appendChild(methodNode, RuntimeTagNames.METHOD_PARAMS);
writeMethodParams(paramsNode, descriptor);
} else {
if( writeEmptyMethodParamsElementForVoidMethods ) {
Node methodNode = super.writeDescriptor(parent, nodeName, methodDescriptor);
appendTextChild(methodNode, RuntimeTagNames.METHOD_NAME, methodDescriptor.getName());
if (methodDescriptor.getParameterClassNames() == null) {
if (writeEmptyMethodParamsElementForVoidMethods) {
appendChild(methodNode, RuntimeTagNames.METHOD_PARAMS);
}
} else {
Node paramsNode = appendChild(methodNode, RuntimeTagNames.METHOD_PARAMS);
writeMethodParams(paramsNode, methodDescriptor);
}
return methodNode;
}
Expand All @@ -150,10 +153,11 @@ public Node writeJavaMethodDescriptor(Node parent, String nodeName,
*/
private void writeMethodParams(Node paramsNode, MethodDescriptor descriptor) {
String[] params = descriptor.getParameterClassNames();
if (params==null)
if (params == null) {
return;
for (int i=0; i<params.length;i++) {
appendTextChild(paramsNode, RuntimeTagNames.METHOD_PARAM, params[i]);
}
for (String param : params) {
appendTextChild(paramsNode, RuntimeTagNames.METHOD_PARAM, param);
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,18 +38,17 @@
*/
public class MessageNode extends DeploymentDescriptorNode<MessageDescriptor> {

private MessageDescriptor descriptor;
private static final String ALL_METHODS = "*";
private MessageDescriptor descriptor;

public MessageNode() {
registerElementHandler(new XMLElement(
RuntimeTagNames.JAVA_METHOD), MethodNode.class,
"setMethodDescriptor");
registerElementHandler(new XMLElement(RuntimeTagNames.JAVA_METHOD), MethodNode.class, "setMethodDescriptor");
}


/**
* @return the descriptor instance to associate with this XMLNode
*/
* @return the descriptor instance to associate with this XMLNode
*/
@Override
public MessageDescriptor getDescriptor() {
if (descriptor == null) {
Expand All @@ -76,14 +75,6 @@ public void setElementValue(XMLElement element, String value) {
}


/**
* write the descriptor class to a DOM tree and return it
*
* @param parent node for the DOM tree
* @param node name for
* @param the descriptor to write
* @return the DOM tree top node
*/
@Override
public Node writeDescriptor(Node parent, String nodeName, MessageDescriptor messageDesc) {
Node messageNode = super.writeDescriptor(parent, nodeName, messageDesc);
Expand All @@ -100,8 +91,7 @@ public Node writeDescriptor(Node parent, String nodeName, MessageDescriptor mess
MethodDescriptor methodDesc = messageDesc.getMethodDescriptor();
if (methodDesc != null) {
MethodNode methodNode = new MethodNode();
methodNode.writeJavaMethodDescriptor(messageNode,
RuntimeTagNames.JAVA_METHOD, methodDesc);
methodNode.writeJavaMethodDescriptor(messageNode, RuntimeTagNames.JAVA_METHOD, methodDesc);
}

// operation-name
Expand All @@ -116,7 +106,6 @@ private void setMiscDescriptors() {

// get the endpoint or portinfo descriptor
Object parentDesc = parentNode.getDescriptor();

if (parentDesc instanceof ServiceRefPortInfo) {
descriptor.setServiceRefPortInfo((ServiceRefPortInfo) parentDesc);
} else if (parentDesc instanceof WebServiceEndpoint) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import com.sun.enterprise.deployment.node.DeploymentDescriptorNode;
import com.sun.enterprise.deployment.node.MethodNode;
import com.sun.enterprise.deployment.node.XMLElement;
import org.glassfish.ejb.deployment.EjbTagNames;

import org.glassfish.ejb.deployment.descriptor.ConcurrentMethodDescriptor;
import org.glassfish.ejb.deployment.descriptor.TimeoutValueDescriptor;
import org.w3c.dom.Node;
Expand Down Expand Up @@ -64,11 +64,8 @@ public void setElementValue(XMLElement element, String value) {
public Node writeDescriptor(Node parent, String nodeName, ConcurrentMethodDescriptor desc) {
Node concurrentNode = super.writeDescriptor(parent, nodeName, descriptor);
MethodNode methodNode = new MethodNode();

methodNode.writeJavaMethodDescriptor(concurrentNode, EjbTagNames.METHOD,
desc.getConcurrentMethod());

if( desc.hasLockMetadata() ) {
methodNode.writeJavaMethodDescriptor(concurrentNode, METHOD, desc.getConcurrentMethod());
if (desc.hasLockMetadata()) {
String lockType = desc.isWriteLocked() ? "Write" : "Read";
appendTextChild(concurrentNode, CONCURRENT_LOCK, lockType);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/*
* Copyright (c) 2022 Contributors to the Eclipse Foundation
* Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
Expand All @@ -16,11 +17,12 @@

package org.glassfish.ejb.deployment.node;

import java.util.Map;

import com.sun.enterprise.deployment.node.DeploymentDescriptorNode;
import com.sun.enterprise.deployment.node.MethodNode;
import com.sun.enterprise.deployment.node.XMLElement;

import java.util.Map;

import org.glassfish.ejb.deployment.EjbTagNames;
import org.glassfish.ejb.deployment.descriptor.EjbInitInfo;
import org.w3c.dom.Node;
Expand All @@ -30,37 +32,32 @@ public class EjbInitNode extends DeploymentDescriptorNode<EjbInitInfo> {
private EjbInitInfo ejbInitInfo;

public EjbInitNode() {
super();
registerElementHandler(new XMLElement(EjbTagNames.INIT_CREATE_METHOD), MethodNode.class, "setCreateMethod");
registerElementHandler(new XMLElement(EjbTagNames.INIT_BEAN_METHOD), MethodNode.class, "setBeanMethod");
registerElementHandler(new XMLElement(EjbTagNames.INIT_CREATE_METHOD), MethodNode.class, "setCreateMethod");
registerElementHandler(new XMLElement(EjbTagNames.INIT_BEAN_METHOD), MethodNode.class, "setBeanMethod");
}


@Override
public EjbInitInfo getDescriptor() {
if (ejbInitInfo == null) ejbInitInfo = new EjbInitInfo();
if (ejbInitInfo == null) {
ejbInitInfo = new EjbInitInfo();
}
return ejbInitInfo;
}


@Override
protected Map getDispatchTable() {
// no need to be synchronized for now
Map table = super.getDispatchTable();
return table;
return super.getDispatchTable();
}


@Override
public Node writeDescriptor(Node parent, String nodeName, EjbInitInfo initMethod) {
Node initNode = appendChild(parent, nodeName);
MethodNode methodNode = new MethodNode();

methodNode.writeJavaMethodDescriptor
(initNode, EjbTagNames.INIT_CREATE_METHOD,
initMethod.getCreateMethod());

methodNode.writeJavaMethodDescriptor
(initNode, EjbTagNames.INIT_BEAN_METHOD,
initMethod.getBeanMethod());

methodNode.writeJavaMethodDescriptor(initNode, EjbTagNames.INIT_CREATE_METHOD, initMethod.getCreateMethod());
methodNode.writeJavaMethodDescriptor(initNode, EjbTagNames.INIT_BEAN_METHOD, initMethod.getBeanMethod());
return initNode;
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
/*
* Copyright (c) 2022 Contributors to the Eclipse Foundation
* Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
Expand All @@ -16,46 +17,52 @@

package org.glassfish.ejb.deployment.node;

import java.util.Map;

import com.sun.enterprise.deployment.node.DeploymentDescriptorNode;
import com.sun.enterprise.deployment.node.MethodNode;
import com.sun.enterprise.deployment.node.XMLElement;
import org.glassfish.ejb.deployment.EjbTagNames;

import java.util.Map;

import org.glassfish.ejb.deployment.descriptor.EjbRemovalInfo;
import org.w3c.dom.Node;

import static org.glassfish.ejb.deployment.EjbTagNames.REMOVE_BEAN_METHOD;
import static org.glassfish.ejb.deployment.EjbTagNames.REMOVE_RETAIN_IF_EXCEPTION;

public class EjbRemoveNode extends DeploymentDescriptorNode<EjbRemovalInfo> {

private EjbRemovalInfo ejbRemovalInfo;

public EjbRemoveNode() {
super();
registerElementHandler(new XMLElement(EjbTagNames.REMOVE_BEAN_METHOD), MethodNode.class, "setRemoveMethod");
super();
registerElementHandler(new XMLElement(REMOVE_BEAN_METHOD), MethodNode.class, "setRemoveMethod");
}


@Override
public EjbRemovalInfo getDescriptor() {
if (ejbRemovalInfo == null) ejbRemovalInfo = new EjbRemovalInfo();
if (ejbRemovalInfo == null) {
ejbRemovalInfo = new EjbRemovalInfo();
}
return ejbRemovalInfo;
}


@Override
protected Map getDispatchTable() {
protected Map<String, String> getDispatchTable() {
// no need to be synchronized for now
Map table = super.getDispatchTable();
table.put(EjbTagNames.REMOVE_RETAIN_IF_EXCEPTION, "setRetainIfException");
Map<String, String> table = super.getDispatchTable();
table.put(REMOVE_RETAIN_IF_EXCEPTION, "setRetainIfException");
return table;
}


@Override
public Node writeDescriptor(Node parent, String nodeName, EjbRemovalInfo descriptor) {
Node removeNode = appendChild(parent, nodeName);
MethodNode methodNode = new MethodNode();
methodNode.writeJavaMethodDescriptor(removeNode, EjbTagNames.REMOVE_BEAN_METHOD,
descriptor.getRemoveMethod());
appendTextChild(removeNode, EjbTagNames.REMOVE_RETAIN_IF_EXCEPTION,
Boolean.toString(descriptor.getRetainIfException()));
methodNode.writeJavaMethodDescriptor(removeNode, REMOVE_BEAN_METHOD, descriptor.getRemoveMethod());
appendTextChild(removeNode, REMOVE_RETAIN_IF_EXCEPTION, Boolean.toString(descriptor.getRetainIfException()));
return removeNode;
}
}

0 comments on commit 58f3a86

Please sign in to comment.