public WSIntegrationProcessorJAXWS_HANDLER() {
}
@Override
protected void processAnnotation(final DeploymentUnit unit, final EEModuleDescription moduleDescription) throws DeploymentUnitProcessingException {
final WSEndpointHandlersMapping mapping = getOptionalAttachment(unit, WS_ENDPOINT_HANDLERS_MAPPING_KEY);
if (mapping == null)
return;
for (EEModuleClassDescription classDescription : moduleDescription.getClassDescriptions()) {
ClassInfo classInfo = null;
ClassAnnotationInformation<WebService, WebServiceAnnotationInfo> annotationInfo = classDescription
.getAnnotationInformation(WebService.class);
if (annotationInfo != null) {
classInfo = (ClassInfo) annotationInfo.getClassLevelAnnotations().get(0).getTarget();
}
final ClassAnnotationInformation<WebServiceProvider, WebServiceProviderAnnotationInfo> providreInfo = classDescription
.getAnnotationInformation(WebServiceProvider.class);
if (providreInfo != null) {
classInfo = (ClassInfo) providreInfo.getClassLevelAnnotations().get(0).getTarget();
}
if (classInfo != null && mapping.getHandlers(classInfo.name().toString()) != null) {
final String endpointClassName = classInfo.name().toString();
if (isEjb3(classInfo)) {
for (final EJBEndpoint ejbEndpoint : getJaxwsEjbs(unit)) {
if (endpointClassName.equals(ejbEndpoint.getClassName())) {
for (final String handlerClassName : mapping.getHandlers(endpointClassName)) {
final String ejbEndpointName = ejbEndpoint.getName();
final String handlerName = ejbEndpointName + "-" + handlerClassName;
final ComponentDescription jaxwsHandlerDescription = createComponentDescription(unit,
handlerName, handlerClassName, ejbEndpointName);
propagateNamingContext(jaxwsHandlerDescription, ejbEndpoint);
}
}
}
} else {
for (final POJOEndpoint pojoEndpoint : getJaxwsPojos(unit)) {
if (endpointClassName.equals(pojoEndpoint.getClassName())) {
for (final String handlerClassName : mapping.getHandlers(endpointClassName)) {
final String pojoEndpointName = pojoEndpoint.getName();
final String handlerName = pojoEndpointName + "-" + handlerClassName;
createComponentDescription(unit, handlerName, handlerClassName, pojoEndpointName);
}
}