use of com.sun.enterprise.deployment.MethodDescriptor in project Payara by payara.
the class MessageNode method writeDescriptor.
/**
* 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
*/
public Node writeDescriptor(Node parent, String nodeName, MessageDescriptor messageDesc) {
Node messageNode = super.writeDescriptor(parent, nodeName, messageDesc);
// to a method descriptor with "*" as name
if (messageDesc.getOperationName() == null && messageDesc.getMethodDescriptor() == null) {
MethodDescriptor allMethodDesc = new MethodDescriptor();
allMethodDesc.setName(ALL_METHODS);
messageDesc.setMethodDescriptor(allMethodDesc);
}
// java-method
MethodDescriptor methodDescriptor = messageDesc.getMethodDescriptor();
if (methodDescriptor != null) {
new MethodNode().writeJavaMethodDescriptor(messageNode, JAVA_METHOD, methodDescriptor);
}
// operation-name
appendTextChild(messageNode, OPERATION_NAME, messageDesc.getOperationName());
return messageNode;
}
use of com.sun.enterprise.deployment.MethodDescriptor in project Payara by payara.
the class MessageDescriptor method getAllSEIMethodsOf.
private List<MethodDescriptor> getAllSEIMethodsOf(String methodName) {
String serviceInterfaceName = null;
List<MethodDescriptor> allMethodsInSEI = new ArrayList<>();
if (webServiceEndpoint != null) {
// This is a server side message
serviceInterfaceName = webServiceEndpoint.getServiceEndpointInterface();
} else if (portInfo != null) {
// This is a client side message
serviceInterfaceName = portInfo.getServiceEndpointInterface();
}
// return an empty list
if (serviceInterfaceName == null) {
return allMethodsInSEI;
}
ClassLoader classLoader = null;
if (bundleDescriptor != null) {
classLoader = bundleDescriptor.getClassLoader();
}
// Return an empty list if class loader is not set
if (classLoader == null) {
return allMethodsInSEI;
}
try {
for (Method method : classLoader.loadClass(serviceInterfaceName).getMethods()) {
if (methodName.equals(ALL_METHODS)) {
// Empty message or message name is *
allMethodsInSEI.add(new MethodDescriptor(method));
} else if (methodName.equals(method.getName())) {
// Overloading methods with same method name
allMethodsInSEI.add(new MethodDescriptor(method));
}
}
} catch (Exception e) {
// If there is exception in the class loading then we just log and return the empty list
Logger.getAnonymousLogger().log(WARNING, "Error occurred", e);
}
return allMethodsInSEI;
}
use of com.sun.enterprise.deployment.MethodDescriptor in project Payara by payara.
the class InterceptorsHandler method processAnnotation.
protected HandlerProcessingResult processAnnotation(AnnotationInfo ainfo, EjbContext[] ejbContexts) throws AnnotationProcessorException {
Interceptors interceptors = (Interceptors) ainfo.getAnnotation();
EjbBundleDescriptorImpl ejbBundle = ((EjbDescriptor) ejbContexts[0].getDescriptor()).getEjbBundleDescriptor();
// Process each of the interceptor classes.
for (Class interceptor : interceptors.value()) {
processInterceptorClass(interceptor, ejbBundle, ainfo);
}
for (EjbContext next : ejbContexts) {
EjbDescriptor ejbDescriptor = (EjbDescriptor) next.getDescriptor();
// Create binding information.
InterceptorBindingDescriptor binding = new InterceptorBindingDescriptor();
binding.setEjbName(ejbDescriptor.getName());
for (Class interceptor : interceptors.value()) {
binding.appendInterceptorClass(interceptor.getName());
}
if (ElementType.METHOD.equals(ainfo.getElementType())) {
Method m = (Method) ainfo.getAnnotatedElement();
MethodDescriptor md = new MethodDescriptor(m, MethodDescriptor.EJB_BEAN);
binding.setBusinessMethod(md);
} else if (ElementType.CONSTRUCTOR.equals(ainfo.getElementType())) {
Constructor c = (Constructor) ainfo.getAnnotatedElement();
Class cl = c.getDeclaringClass();
Class[] ctorParamTypes = c.getParameterTypes();
String[] parameterClassNames = (new MethodDescriptor()).getParameterClassNamesFor(null, ctorParamTypes);
MethodDescriptor md = new MethodDescriptor(cl.getSimpleName(), null, parameterClassNames, MethodDescriptor.EJB_BEAN);
binding.setBusinessMethod(md);
}
// All binding information processed from annotations should go
// before the binding information processed from the descriptors.
// Since descriptors are processed first, always place the binding
// info at the front. The binding information from the descriptor
// is ordered, but there is no prescribed order in which the
// annotations are processed, so all that matters is that it's
// before the descriptor bindings and that the descriptor binding
// order is preserved.
ejbBundle.prependInterceptorBinding(binding);
}
return getDefaultProcessedResult();
}
use of com.sun.enterprise.deployment.MethodDescriptor in project Payara by payara.
the class AfterBeginHandler method processAnnotation.
protected HandlerProcessingResult processAnnotation(AnnotationInfo ainfo, EjbContext[] ejbContexts) throws AnnotationProcessorException {
for (EjbContext ejbContext : ejbContexts) {
EjbSessionDescriptor ejbDesc = (EjbSessionDescriptor) ejbContext.getDescriptor();
Method annMethod = (Method) ainfo.getAnnotatedElement();
checkValid(annMethod);
if (logger.isLoggable(Level.FINE)) {
logger.fine("Setting AfterBegin method " + annMethod);
}
ejbDesc.setAfterBeginMethodIfNotSet(new MethodDescriptor(annMethod));
}
return getDefaultProcessedResult();
}
use of com.sun.enterprise.deployment.MethodDescriptor in project Payara by payara.
the class BeforeCompletionHandler method processAnnotation.
protected HandlerProcessingResult processAnnotation(AnnotationInfo ainfo, EjbContext[] ejbContexts) throws AnnotationProcessorException {
for (EjbContext ejbContext : ejbContexts) {
EjbSessionDescriptor ejbDesc = (EjbSessionDescriptor) ejbContext.getDescriptor();
Method annMethod = (Method) ainfo.getAnnotatedElement();
checkValid(annMethod);
if (logger.isLoggable(Level.FINE)) {
logger.fine("Setting BeforeCompletion method " + annMethod);
}
ejbDesc.setBeforeCompletionMethodIfNotSet(new MethodDescriptor(annMethod));
}
return getDefaultProcessedResult();
}
Aggregations