public TraceAnalysis analyze(TraceInterface traceAccess) { Trace trace=traceAccess.asTrace(); ApplicationName trcName=traceAccess.getAppName(), appName=applicationMetadata.getApplicationName(trcName); TraceSource traceSource = sourceAnalysisService != null ? sourceAnalysisService.locateTraceSource(traceAccess) : null; trace.setTraceSource(traceSource); if (!ObjectUtil.typedEquals(trcName, appName)) { if (logger.isDebugEnabled()) { logger.debug("analyze(" + trace + ") modified application " + trcName + " => " + appName); } trace.setAppName(appName); } EndPointAnalysis endPointAnalysis=locateEndPoint(traceAccess); Collection<Resource> extResources=collectExternalResources(traceAccess, endPointAnalysis); List<TraceError> errors=locateErrors(trace); ServerName serverName=(traceAccess instanceof ServerNameCarrier) ? ((ServerNameCarrier) traceAccess).getServer() : trace.getServer() ; ServerResource server=serverResolver.resolve(serverName); TraceAnalysis res=new TraceAnalysis(trace, server, endPointAnalysis, extResources, errors, null); Set<TraceTag> tags=locateTags(traceAccess, (EndPointAwareResource) res.getResource(ResourceType.APPLICATION_SERVER_END_POINT), ListUtil.size(errors) > 0); res.addTags(tags); return res; }