Author: scabanovich
Date: 2008-11-11 09:56:46 -0500 (Tue, 11 Nov 2008)
New Revision: 11675
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/core/SeamPreferences.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamPreferenceInitializer.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamCoreValidator.java
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/messages.properties
Log:
JBIDE-2342
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/core/SeamPreferences.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/core/SeamPreferences.java 2008-11-11
14:52:03 UTC (rev 11674)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/core/SeamPreferences.java 2008-11-11
14:56:46 UTC (rev 11675)
@@ -128,6 +128,7 @@
// Mark seam project if it has any invalid seam setting.
public static final String INVALID_PROJECT_SETTINGS =
createSeverityOption("invalidProjectSettings"); //$NON-NLS-1$
+ public static final String INVALID_XML_VERSION =
createSeverityOption("invalidXMLVersion"); //$NON-NLS-1$
private static String createSeverityOption(String shortName) {
String name = SeamCorePlugin.PLUGIN_ID + ".validator.problem." + shortName;
//$NON-NLS-1$
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamPreferenceInitializer.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamPreferenceInitializer.java 2008-11-11
14:52:03 UTC (rev 11674)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/SeamPreferenceInitializer.java 2008-11-11
14:56:46 UTC (rev 11675)
@@ -37,6 +37,7 @@
defaultPreferences.put(SeamPreferences.STATEFUL_COMPONENT_DOES_NOT_CONTENT_DESTROY,
SeamPreferences.WARNING);
defaultPreferences.put(SeamPreferences.UNPAIRED_GETTER_OR_SETTER,
SeamPreferences.IGNORE);
defaultPreferences.put(SeamPreferences.EL_SYNTAX_ERROR, SeamPreferences.WARNING);
+ defaultPreferences.put(SeamPreferences.INVALID_XML_VERSION, SeamPreferences.WARNING);
defaultPreferences.put(SeamPreferences.CHECK_VARS, SeamPreferences.ENABLE);
//JBIDE-2958 temporary until JBIDE-2957 solved //TODO solve JBIDE-2957
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamCoreValidator.java
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamCoreValidator.java 2008-11-11
14:52:03 UTC (rev 11674)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/SeamCoreValidator.java 2008-11-11
14:56:46 UTC (rev 11675)
@@ -10,10 +10,12 @@
******************************************************************************/
package org.jboss.tools.seam.internal.core.validation;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -33,6 +35,7 @@
import org.eclipse.wst.validation.internal.core.ValidationException;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
import org.jboss.tools.common.el.core.resolver.TypeInfoCollector;
+import org.jboss.tools.common.model.XModelObject;
import org.jboss.tools.common.model.util.EclipseResourceUtil;
import org.jboss.tools.seam.core.BijectedAttributeType;
import org.jboss.tools.seam.core.IBijectedAttribute;
@@ -55,6 +58,7 @@
import org.jboss.tools.seam.core.SeamCoreMessages;
import org.jboss.tools.seam.core.SeamCorePlugin;
import org.jboss.tools.seam.core.SeamPreferences;
+import org.jboss.tools.seam.core.project.facet.SeamRuntime;
import org.jboss.tools.seam.internal.core.DataModelSelectionAttribute;
import org.jboss.tools.seam.internal.core.SeamComponentDeclaration;
import org.jboss.tools.seam.internal.core.SeamJavaComponentDeclaration;
@@ -92,6 +96,8 @@
protected static final String VALIDATING_RESOURCE_MESSAGE_ID =
"VALIDATING_RESOURCE";
protected static final String VALIDATING_CLASS_MESSAGE_ID =
"VALIDATING_CLASS";
+ protected static final String INVALID_XML_VERSION = "INVALID_XML_VERSION";
+
public SeamCoreValidator(SeamValidatorManager validatorManager,
SeamContextValidationHelper coreHelper, IReporter reporter,
SeamValidationContext validationContext, ISeamProject project) {
@@ -123,6 +129,7 @@
break;
}
if (checkFileExtension(currentFile)) {
+ validateXMLVersion(currentFile);
// Get all variable names which were linked with this resource.
Set<String> oldVariablesNamesOfChangedFile =
validationContext.getVariableNamesByCoreResource(currentFile.getFullPath());
if(oldVariablesNamesOfChangedFile!=null) {
@@ -696,6 +703,67 @@
}
}
+ private void validateXMLVersion(IFile file) {
+ String ext = file.getFileExtension();
+ if(!"xml".equals(ext)) return;
+
+ XModelObject o = EclipseResourceUtil.createObjectForResource(file);
+
+ if(o == null) return;
+ if(!o.getModelEntity().getName().startsWith("FileSeamComponent")) return;
+
+ Set<String> vs = getXMLVersions(o);
+
+ SeamRuntime runtime = seamProject.getRuntime();
+ if(runtime == null) return;
+
+ String version = runtime.getVersion().toString();
+ String wrongVersion = null;
+ for (String v: vs) {
+ if(!v.startsWith(version)) {
+ wrongVersion = v;
+ break;
+ }
+ }
+ if(wrongVersion != null) {
+ addError(
+ INVALID_XML_VERSION,
+ SeamPreferences.INVALID_XML_VERSION,
+ new String[]{wrongVersion, version},
+ file);
+ }
+ }
+
+ private Set<String> getXMLVersions(XModelObject o) {
+ Set<String> result = new HashSet<String>();
+ if(o.getModelEntity().getName().endsWith("11")) {
+ result.add("1.1");
+ return result;
+ }
+ String sl = o.getAttributeValue("xsi:schemaLocation");
+ int i = 0;
+ while(i >= 0 && i < sl.length()) {
+ int j = sl.indexOf('-', i);
+ if(j < 0) break;
+ int k = sl.indexOf(".xsd", j);
+ if(k < 0) break;
+ String v = sl.substring(j + 1, k);
+ if(isVersion(v)) result.add(v);
+ i = k;
+ }
+
+ return result;
+ }
+
+ private boolean isVersion(String s) {
+ if(s.length() == 0) return false;
+ for (int i = 0; i < s.length(); i++) {
+ char c = s.charAt(i);
+ if(c != '.' && !Character.isDigit(c)) return false;
+ }
+ return true;
+ }
+
private final static String[] extns = new String[]{"java", "xml"};
//$NON-NLS-1$ //$NON-NLS-2$
private boolean checkFileExtension(IFile file) {
@@ -707,4 +775,5 @@
}
return false;
}
+
}
\ No newline at end of file
Modified:
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/messages.properties
===================================================================
---
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/messages.properties 2008-11-11
14:52:03 UTC (rev 11674)
+++
trunk/seam/plugins/org.jboss.tools.seam.core/src/org/jboss/tools/seam/internal/core/validation/messages.properties 2008-11-11
14:56:46 UTC (rev 11675)
@@ -60,6 +60,8 @@
INVALID_TEST_PACKAGE_NAME=Test package name "{0}" specified for Seam project
"{1}" is not valid. Please correct this property in "Seam settings"
page (Project->Properties->Seam Settings).
INVALID_CONNECTION_NAME=Connection profiler "{0}" specified for Seam project
"{1}" does not exist.
+INVALID_XML_VERSION=XML schema version "{0}" does not match Seam runtime
version "{1}".
+
#Invalid ear application.xml
INVALID_SEAM_JAR_MODULE_IN_APPLICATION_XML=jboss-seam.jar must be declared as
<module><ejb>jboss-seam.jar</ejb><module> to work correctly.
INVALID_JAR_MODULE_IN_APPLICATION_XML=Having "{0}" listed as a java module in
application.xml can cause publishing errors. It is recommended to remove this module entry
from application.xml.
Show replies by date