### Eclipse Workspace Patch 1.0 #P org.hibernate.eclipse.console Index: src/org/hibernate/eclipse/launch/ConsoleConfigurationJavaClasspathTab.java =================================================================== --- src/org/hibernate/eclipse/launch/ConsoleConfigurationJavaClasspathTab.java (revision 25250) +++ src/org/hibernate/eclipse/launch/ConsoleConfigurationJavaClasspathTab.java (working copy) @@ -28,7 +28,18 @@ */ public class ConsoleConfigurationJavaClasspathTab extends JavaClasspathTab { + /** + * validation process should include check for successful creation + * of configuration xml file for Hibernate Console Configuration. + */ protected boolean configurationFileWillBeCreated = false; + // for validation process optimization: + // presave last time validated configuration and validate result, + // to avoid several unnecessary validation -> rebuild for ConsoleConfig + // is rather slow operation - so several time rebuild is visible. + protected ILaunchConfiguration lastValidatedLaunchConfig = null; + protected String lastErrorMessage = null; + protected boolean lastRes = false; public boolean isShowBootpath() { return false; @@ -38,6 +49,10 @@ if (!super.isValid(launchConfig)) { return false; } + if (lastValidatedLaunchConfig != null && lastValidatedLaunchConfig.contentsEqual(launchConfig)) { + setErrorMessage(lastErrorMessage); + return lastRes; + } setErrorMessage(null); setMessage(null); boolean resUserClasses = false, resExistArchive = true; @@ -65,7 +80,7 @@ } if (resUserClasses && resExistArchive) { boolean flagTryToBuild = true; - ConsoleConfiguration ccTest = new ConsoleConfiguration(new EclipseLaunchConsoleConfigurationPreferences(launchConfig)); + final ConsoleConfiguration ccTest = new ConsoleConfiguration(new EclipseLaunchConsoleConfigurationPreferences(launchConfig)); if (configurationFileWillBeCreated) { // do not make a try to build console configuration in case of "configurationFileWillBeCreated" and // exception to resolve the file @@ -82,14 +97,23 @@ resUserClasses = false; setErrorMessage(ex.getMessage()); } + try { + lastValidatedLaunchConfig = launchConfig.getWorkingCopy(); + } catch (CoreException e1) { + lastValidatedLaunchConfig = null; + } } } - return resUserClasses && resExistArchive; + final boolean res = resUserClasses && resExistArchive; + if (lastValidatedLaunchConfig != null) { + lastErrorMessage = getErrorMessage(); + lastRes = res; + } + return res; } public void initializeFrom(ILaunchConfiguration configuration) { - - super.initializeFrom( configuration ); + super.initializeFrom(configuration); } public boolean canSave() {