From f36cd4e99fde90cd68e52898593fad69cf4d9312 Mon Sep 17 00:00:00 2001
From: Simon Spinner <simon.spinner@uni-wuerzburg.de>
Date: Tue, 24 May 2016 15:59:03 +0200
Subject: [PATCH] Fix processing of servlets with no web manifest (only
 annotations).

---
 ...verInstrumentationDeploymentProcessor.java | 45 ++++++++++---------
 1 file changed, 24 insertions(+), 21 deletions(-)

diff --git a/tools.descartes.prisma.agent.wildfly/src/main/java/tools/descartes/prisma/agent/wildfly/deployment/ServerInstrumentationDeploymentProcessor.java b/tools.descartes.prisma.agent.wildfly/src/main/java/tools/descartes/prisma/agent/wildfly/deployment/ServerInstrumentationDeploymentProcessor.java
index f33a295..8385950 100644
--- a/tools.descartes.prisma.agent.wildfly/src/main/java/tools/descartes/prisma/agent/wildfly/deployment/ServerInstrumentationDeploymentProcessor.java
+++ b/tools.descartes.prisma.agent.wildfly/src/main/java/tools/descartes/prisma/agent/wildfly/deployment/ServerInstrumentationDeploymentProcessor.java
@@ -56,8 +56,9 @@ import org.jboss.as.webservices.metadata.model.POJOEndpoint;
 import org.jboss.as.webservices.util.WSAttachmentKeys;
 import org.jboss.invocation.ImmediateInterceptorFactory;
 import org.jboss.logging.Logger;
+import org.jboss.metadata.web.jboss.JBossServletMetaData;
+import org.jboss.metadata.web.jboss.JBossWebMetaData;
 import org.jboss.metadata.web.spec.ServletMappingMetaData;
-import org.jboss.metadata.web.spec.ServletMetaData;
 
 import tools.descartes.prisma.agent.wildfly.callstack.ComponentRecord;
 import tools.descartes.prisma.agent.wildfly.interceptors.EJBLocalCallInterceptor;
@@ -101,27 +102,29 @@ public class ServerInstrumentationDeploymentProcessor implements DeploymentUnitP
 		if (metaData != null) {
 			String serverNode = System.getProperty("jboss.node.name");
 			String root = null;
-			if (metaData.getJBossWebMetaData() != null) {
-				root = metaData.getJBossWebMetaData().getContextRoot();
-			}
-			if (root == null) {
-				root = eeModuleDescription.getModuleName();
-			}
-			Map<String, String> servlets = new HashMap<>();
-			for (ServletMetaData curServlet : metaData.getWebMetaData().getServlets()) {
-				servlets.put(curServlet.getServletName(), curServlet.getServletClass());
-			}
-			for (ServletMappingMetaData meta : metaData.getWebMetaData().getServletMappings()) {
-				for (String url : meta.getUrlPatterns()) {
-					if (url.startsWith("/")) {
-						url = url.substring(1);
+			JBossWebMetaData jbossWeb = metaData.getMergedJBossWebMetaData();
+			if (jbossWeb != null) {
+				root = jbossWeb.getContextRoot();
+
+				if (root == null) {
+					root = eeModuleDescription.getModuleName();
+				}
+				Map<String, String> servlets = new HashMap<>();
+
+				for (JBossServletMetaData curServlet : jbossWeb.getServlets()) {
+					servlets.put(curServlet.getServletName(), curServlet.getServletClass());
+				}
+				for (ServletMappingMetaData meta : jbossWeb.getServletMappings()) {
+					for (String url : meta.getUrlPatterns()) {
+						if (url.startsWith("/")) {
+							url = url.substring(1);
+						}
+						String alias = serverNode + "/" + root + "/" + url;
+						ComponentRecord record = monitoringService.requireComponent(serverNode,
+								eeModuleDescription.getApplicationName(), eeModuleDescription.getModuleName(), url);
+						record.setComponentClass(servlets.get(meta.getServletName()));
+						monitoringService.addAlias(alias, record);
 					}
-					String alias = serverNode + "/" + root + "/" + url;
-					ComponentRecord record = monitoringService.requireComponent(serverNode,
-							eeModuleDescription.getApplicationName(), eeModuleDescription.getModuleName(),
-							url);
-					record.setComponentClass(servlets.get(meta.getServletName()));
-					monitoringService.addAlias(alias, record);
 				}
 			}
 		}
-- 
GitLab