@Override protected FailureAnalysis analyze(Throwable rootFailure, NacosConnectionFailureException cause) { return new FailureAnalysis("Application failed to connect to Nacos server", "check your nacos server config", cause); } }
private void prepareFailureAnalyzers(List<FailureAnalyzer> analyzers, ConfigurableApplicationContext context) { for (FailureAnalyzer analyzer : analyzers) { prepareAnalyzer(context, analyzer); } }
@Override public FailureAnalysis analyze(Throwable failure) { T cause = findCause(failure, getCauseType()); if (cause != null) { return analyze(failure, cause); } return null; }
@Override protected FailureAnalysis analyze(Throwable rootFailure, NoSuchMethodError cause) { String className = extractClassName(cause); if (className == null) { return null; } List<URL> candidates = findCandidates(className); if (candidates == null) { return null; } URL actual = getActual(className); if (actual == null) { return null; } String description = getDescription(cause, className, candidates, actual); return new FailureAnalysis(description, "Correct the classpath of your application so that it contains a single," + " compatible version of " + className, cause); }
@Override protected FailureAnalysis analyze(Throwable rootFailure, BeanCurrentlyInCreationException cause) { DependencyCycle dependencyCycle = findCycle(rootFailure); if (dependencyCycle == null) { return null; } return new FailureAnalysis(buildMessage(dependencyCycle), null, cause); }
@Override protected FailureAnalysis analyze(Throwable rootFailure, BeanDefinitionOverrideException cause) { return new FailureAnalysis(getDescription(cause), ACTION, cause); }
@Override protected FailureAnalysis analyze(Throwable rootFailure, BeanNotOfRequiredTypeException cause) { if (!Proxy.isProxyClass(cause.getActualType())) { return null; } return new FailureAnalysis(getDescription(cause), ACTION, cause); }
@Override public void report(FailureAnalysis failureAnalysis) { if (logger.isDebugEnabled()) { logger.debug("Application failed to start due to an exception", failureAnalysis.getCause()); } if (logger.isErrorEnabled()) { logger.error(buildMessage(failureAnalysis)); } }
FailureAnalyzers(ConfigurableApplicationContext context, ClassLoader classLoader) { Assert.notNull(context, "Context must not be null"); this.classLoader = (classLoader != null) ? classLoader : context.getClassLoader(); this.analyzers = loadFailureAnalyzers(this.classLoader); prepareFailureAnalyzers(this.analyzers, context); }
private FailureAnalysis analyze(Throwable failure, List<FailureAnalyzer> analyzers) { for (FailureAnalyzer analyzer : analyzers) { try { FailureAnalysis analysis = analyzer.analyze(failure); if (analysis != null) { return analysis; } } catch (Throwable ex) { logger.debug("FailureAnalyzer " + analyzer + " failed", ex); } } return null; }
private boolean report(FailureAnalysis analysis, ClassLoader classLoader) { List<FailureAnalysisReporter> reporters = SpringFactoriesLoader .loadFactories(FailureAnalysisReporter.class, classLoader); if (analysis == null || reporters.isEmpty()) { return false; } for (FailureAnalysisReporter reporter : reporters) { reporter.report(analysis); } return true; }
@Override protected FailureAnalysis analyze(Throwable rootFailure, NoRealmBeanConfiguredException cause) { return new FailureAnalysis( "No bean of type 'org.apache.shiro.realm.Realm' found.", "Please create bean of type 'Realm' or add a shiro.ini in the root classpath (src/main/resources/shiro.ini) or in the META-INF folder (src/main/resources/META-INF/shiro.ini).", cause); }
private FailureAnalysis getFailureAnalysis(Object description, BindException cause) { return new FailureAnalysis(description.toString(), "Update your application's configuration", cause); }
private FailureAnalysis getFailureAnalysis(Object description, Throwable cause) { return new FailureAnalysis(description.toString(), "Update your application's configuration", cause); }
@Override protected FailureAnalysis analyze(Throwable rootFailure, IllegalStateException cause) { if(JGitEnvironmentRepository.MESSAGE.equalsIgnoreCase(cause.getMessage())) { return new FailureAnalysis(DESCRIPTION, ACTION, cause); } return null; }
@Override protected FailureAnalysis analyze(Throwable rootFailure, ValidationException cause) { if (cause.getMessage().startsWith(MISSING_IMPLEMENTATION_MESSAGE)) { return new FailureAnalysis( "The Bean Validation API is on the classpath but no implementation" + " could be found", "Add an implementation, such as Hibernate Validator, to the" + " classpath", cause); } return null; }
@Override protected FailureAnalysis analyze(Throwable rootFailure, DiamondConnectionFailureException cause) { return new FailureAnalysis( "Application failed to connect to Diamond, unable to access http://" + cause.getDomain() + ":" + cause.getPort() + "/diamond-server/diamond", "config the right endpoint", cause); } }
@Override protected FailureAnalysis analyze(Throwable rootFailure, PortInUseException cause) { return new FailureAnalysis( "Web server failed to start. Port " + cause.getPort() + " was already in use.", "Identify and stop the process that's listening on port " + cause.getPort() + " or configure this " + "application to listen on another port.", cause); }
@Override protected FailureAnalysis analyze(Throwable rootFailure, ConnectorStartFailedException cause) { return new FailureAnalysis( "The Tomcat connector configured to listen on port " + cause.getPort() + " failed to start. The port may already be in use or the" + " connector may be misconfigured.", "Verify the connector's configuration, identify and stop any process " + "that's listening on port " + cause.getPort() + ", or configure this application to listen on another port.", cause); }