[158806] synching java version check
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/EARComponentImportDataModelProvider.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/EARComponentImportDataModelProvider.java
index e946caa..a858470 100644
--- a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/EARComponentImportDataModelProvider.java
+++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/EARComponentImportDataModelProvider.java
@@ -152,6 +152,7 @@
 				nestedModel = (IDataModel) projectModels.get(i);
 				nestedModel.setProperty(IFacetProjectCreationDataModelProperties.FACET_RUNTIME, propertyValue);
 			}
+			fixupJavaFacets();
 		}
 	}
 
@@ -181,6 +182,7 @@
 			if (getJ2EEVersion() < J2EEVersionConstants.VERSION_1_3)
 				setBooleanProperty(USE_ANNOTATIONS, false);
 			model.notifyPropertyChange(USE_ANNOTATIONS, IDataModel.ENABLE_CHG);
+			fixupJavaFacets();
 		} else if (UTILITY_LIST.equals(propertyName)) {
 			updateUtilityModels((List) propertyValue);
 		} else if (USE_ANNOTATIONS.equals(propertyName)) {
@@ -277,6 +279,15 @@
 	protected boolean forceResetOnPreserveMetaData() {
 		return false;
 	}
+	
+	protected void fixupJavaFacets() {
+		List subProjects = getSelectedModels();
+		IDataModel subDataModel = null;
+		for (int i = 0; i < subProjects.size(); i++) {
+			subDataModel = (IDataModel) subProjects.get(i);
+			subDataModel.validateProperty(FACET_RUNTIME);
+		}
+	}
 
 	public IStatus validate(String propertyName) {
 		if (propertyName.equals(NESTED_PROJECTS_VALIDATION) || propertyName.equals(EAR_NAME_VALIDATION)) {
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/J2EEArtifactImportDataModelProvider.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/J2EEArtifactImportDataModelProvider.java
index c2ebeaf..6761fea 100644
--- a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/J2EEArtifactImportDataModelProvider.java
+++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/application/internal/operations/J2EEArtifactImportDataModelProvider.java
@@ -259,20 +259,25 @@
 		}
 	}
 	
+	/**
+	 * Calling this method will fixup the JST facet version if it is incompatible with the selected runtime
+	 * It should be called when the Server Runtime or the Archive properties are set.
+	 * @return
+	 */
 	protected IStatus validateVersionSupportedByServer(){
-		if( model.isPropertySet(FILE)){
+		if( model.isPropertySet(FILE) && model.isPropertySet(IFacetProjectCreationDataModelProperties.FACET_RUNTIME)){
 			IDataModel projectModel = model.getNestedModel(NESTED_MODEL_J2EE_COMPONENT_CREATION);
 			FacetDataModelMap map = (FacetDataModelMap) projectModel.getProperty(IFacetProjectCreationDataModelProperties.FACET_DM_MAP);
 			Collection projectFacets = (Collection)getProperty(FacetProjectCreationDataModelProvider.REQUIRED_FACETS_COLLECTION);
 					
-			IRuntime runtime = (IRuntime) getProperty(IFacetProjectCreationDataModelProperties.FACET_RUNTIME); 
-			for(Iterator iterator = projectFacets.iterator(); iterator.hasNext();){
-				IDataModel facetDataModel = map.getFacetDataModel(((IProjectFacet)iterator.next()).getId());
-				IProjectFacetVersion facetVersion = (IProjectFacetVersion)facetDataModel.getProperty(IFacetDataModelProperties.FACET_VERSION);
-				if(facetVersion.getProjectFacet().getId().equals(IModuleConstants.JST_JAVA)){
-					Set set = Collections.singleton(facetVersion.getProjectFacet());
-					try {
-						if( runtime != null ){
+			IRuntime runtime = (IRuntime) getProperty(IFacetProjectCreationDataModelProperties.FACET_RUNTIME);
+			if(runtime != null){
+				for(Iterator iterator = projectFacets.iterator(); iterator.hasNext();){
+					IDataModel facetDataModel = map.getFacetDataModel(((IProjectFacet)iterator.next()).getId());
+					IProjectFacetVersion facetVersion = (IProjectFacetVersion)facetDataModel.getProperty(IFacetDataModelProperties.FACET_VERSION);
+					if(facetVersion.getProjectFacet().getId().equals(IModuleConstants.JST_JAVA)){
+						Set set = Collections.singleton(facetVersion.getProjectFacet());
+						try {
 							Set correctSet = runtime.getDefaultFacets(set);
 							IProjectFacetVersion correctVersion = null;
 							Iterator correctVersions = correctSet.iterator();
@@ -284,17 +289,19 @@
 							}
 							
 							if(correctVersion != null){
-								facetDataModel.setProperty(IFacetDataModelProperties.FACET_VERSION, correctVersion);
-								facetVersion = correctVersion;
+								if(!facetVersion.equals(correctVersion)){
+									facetDataModel.setProperty(IFacetDataModelProperties.FACET_VERSION, correctVersion);
+									facetVersion = correctVersion;
+								}
 							}
+						} catch (CoreException e) {
+							Logger.getLogger().logError(e);
 						}
-					} catch (CoreException e) {
-						Logger.getLogger().logError(e);
 					}
-				}
-			
-				if(runtime != null && !runtime.supports(facetVersion)){
-					return WTPCommonPlugin.createErrorStatus( J2EECreationResourceHandler.VERSION_NOT_SUPPORTED ); //$NON-NLS-1$
+				
+					if(!runtime.supports(facetVersion)){
+						return WTPCommonPlugin.createErrorStatus( J2EECreationResourceHandler.VERSION_NOT_SUPPORTED ); //$NON-NLS-1$
+					}
 				}
 			}
 		}