Author: mukulg
Date: Sun Apr 11 04:07:58 2010
New Revision: 932835

URL: http://svn.apache.org/viewvc?rev=932835&view=rev
Log:
patch for JIRA issue, XERCESJ-1441

Modified:
    
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/msg/XMLSchemaMessages.properties
    
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaSymbols.java
    
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLAssertPsychopathImpl.java
    
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/assertion/XSAssertImpl.java
    
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractTraverser.java
    
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDComplexTypeTraverser.java

Modified: 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/msg/XMLSchemaMessages.properties
URL: 
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/msg/XMLSchemaMessages.properties?rev=932835&r1=932834&r2=932835&view=diff
==============================================================================
--- 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/msg/XMLSchemaMessages.properties
 (original)
+++ 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/msg/XMLSchemaMessages.properties
 Sun Apr 11 04:07:58 2010
@@ -107,6 +107,7 @@
         cvc-type.3.1.3 = cvc-type.3.1.3: The value ''{1}'' of element ''{0}'' 
is not valid.
         cvc-assertion.3.13.4.1 = cvc-assertion.3.13.4.1: Assertion evaluation 
(''{1}'') for element ''{0}'' with type ''{2}'' did not succeed.
         cvc-assertion.4.3.15.3 = cvc-assertion.4.3.15.3: Assertion evaluation 
(''{1}'') for element ''{0}'' with type ''{2}'' did not succeed (undefined 
context).
+        cvc-assertion.failure = cvc-assertion.failure: Assertion failure. {0} 
         cvc-xpath.3.13.4.2 = cvc-xpath.3.13.4.2: Assertion XPath expression, 
(''{0}'') on the Schema type ''{1}'' couldn''t compile successfully.
         
 #schema valid (3.X.3)

Modified: 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaSymbols.java
URL: 
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaSymbols.java?rev=932835&r1=932834&r2=932835&view=diff
==============================================================================
--- 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaSymbols.java
 (original)
+++ 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/SchemaSymbols.java
 Sun Apr 11 04:07:58 2010
@@ -47,6 +47,9 @@ public final class SchemaSymbols {
 
     // schema version namespace
     public static final String URI_SCHEMAVERSION = 
"http://www.w3.org/2007/XMLSchema-versioning".intern();
+    
+    // xerces extensions namespace
+    public static final String URI_XERCES_EXTENSIONS = 
"http://xerces.apache.org".intern();
 
     // all possible schema element names
     public static final String ELT_ALL                    = "all".intern();
@@ -147,6 +150,7 @@ public final class SchemaSymbols {
     public static final String ATT_MINVERSION             = 
"minVersion".intern();
     public static final String ATT_MAXVERSION             = 
"maxVersion".intern();
     public static final String ATT_INHERITABLE            = 
"inheritable".intern();
+    public static final String ATT_ASSERT_MESSAGE         = "message".intern();
 
     // all possible schema attribute values
     public static final String ATTVAL_TWOPOUNDANY            = "##any";

Modified: 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLAssertPsychopathImpl.java
URL: 
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLAssertPsychopathImpl.java?rev=932835&r1=932834&r2=932835&view=diff
==============================================================================
--- 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLAssertPsychopathImpl.java
 (original)
+++ 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/XMLAssertPsychopathImpl.java
 Sun Apr 11 04:07:58 2010
@@ -303,12 +303,7 @@ public class XMLAssertPsychopathImpl ext
             
             if (!result) {
                // assertion evaluation is false
-                if (assertImpl.getAttrName() == null) {
-                   reportError("cvc-assertion.3.13.4.1", element, assertImpl);
-                }
-                else {
-                   reportError("cvc-assertion.3.13.4.1", element, assertImpl); 
-                }
+               reportError("cvc-assertion.3.13.4.1", element, assertImpl);
             }
         }
         catch (DynamicError ex) {
@@ -347,9 +342,19 @@ public class XMLAssertPsychopathImpl ext
                                               assertImpl.getAttrName()+ ")";   
 
         }
         
-        validator.reportSchemaError(key, new Object[] { elemErrorAnnotation,
+        String message = assertImpl.getMessage();
+        if (message != null) {
+           if (!message.endsWith(".")) {
+              message = message + ".";    
+           }           
+           validator.reportSchemaError("cvc-assertion.failure", 
+                                       new Object[] { message } );    
+        }
+        else {
+           validator.reportSchemaError(key, new Object[] { elemErrorAnnotation,
                                assertImpl.getTest().getXPath().toString(),
                                typeString } );
+        }
     }
     
     /*

Modified: 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/assertion/XSAssertImpl.java
URL: 
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/assertion/XSAssertImpl.java?rev=932835&r1=932834&r2=932835&view=diff
==============================================================================
--- 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/assertion/XSAssertImpl.java
 (original)
+++ 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/assertion/XSAssertImpl.java
 Sun Apr 11 04:07:58 2010
@@ -70,6 +70,9 @@ public class XSAssertImpl extends Abstra
     
     // XSDHandler object, passed on from the traversers 
     protected XSDHandler fSchemaHandler = null;
+    
+    // user-defined message, to display, during assertion failures
+    protected String message = null;
 
     /** Constructor */
     public XSAssertImpl(XSTypeDefinition type,
@@ -218,4 +221,16 @@ public class XSAssertImpl extends Abstra
         
       return returnVal;
     }
+
+    /*
+     * Set error message, for assertions failures
+     */
+    public void setMessage(String message) {
+       this.message = message;    
+    }
+    
+    // Get the error message string 
+    public String getMessage() {
+       return message;   
+    }
 }

Modified: 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractTraverser.java
URL: 
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractTraverser.java?rev=932835&r1=932834&r2=932835&view=diff
==============================================================================
--- 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractTraverser.java
 (original)
+++ 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDAbstractTraverser.java
 Sun Apr 11 04:07:58 2010
@@ -515,6 +515,12 @@ abstract class XSDAbstractTraverser {
                     assertImpl.setTest(testExpr);
                     assertImpl.setXPathDefaultNamespace(xpathDefaultNamespace);
                     
assertImpl.setXPath2NamespaceContext(schemaDoc.fNamespaceSupport);
+                    String assertMessage = content.getAttributeNS(
+                                                
SchemaSymbols.URI_XERCES_EXTENSIONS,
+                                                
SchemaSymbols.ATT_ASSERT_MESSAGE);
+                    if (!"".equals(assertMessage.trim())) {
+                       assertImpl.setMessage(assertMessage.trim());
+                    }
                     
                     if (assertData == null) {
                        assertData = new Vector();

Modified: 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDComplexTypeTraverser.java
URL: 
http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDComplexTypeTraverser.java?rev=932835&r1=932834&r2=932835&view=diff
==============================================================================
--- 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDComplexTypeTraverser.java
 (original)
+++ 
xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/xs/traversers/XSDComplexTypeTraverser.java
 Sun Apr 11 04:07:58 2010
@@ -1354,8 +1354,8 @@ class  XSDComplexTypeTraverser extends X
     }
 
     /*
-     * Method to find all assertions up in the type hierarchy, and add them to
-     * the list of assertions to be processed.
+     * Find all assertions up in the type hierarchy, and add them to the list
+     * of assertions to be processed.
      */
     private void addAssertsFromBaseTypes(XSTypeDefinition baseValidator) {     
   
         if (baseValidator != null) {
@@ -1627,7 +1627,7 @@ class  XSDComplexTypeTraverser extends X
             XSComplexTypeDecl enclosingCT) throws ComplexTypeRecoverableError {
 
         Object[] attrValues = fAttrChecker.checkAttributes(assertElement,
-                false, schemaDoc);
+                                                           false, schemaDoc);
         String test = (String) attrValues[XSAttributeChecker.ATTIDX_XPATH];
         String xpathDefaultNamespace = (String) 
attrValues[XSAttributeChecker.ATTIDX_XPATHDEFAULTNS];
         if (xpathDefaultNamespace == null) {
@@ -1671,7 +1671,7 @@ class  XSDComplexTypeTraverser extends X
                 annotations = XSObjectListImpl.EMPTY_LIST;
             }
             
-            // create an assertion object
+            // create an assertion object            
             XSAssertImpl assertImpl = new XSAssertImpl(enclosingCT,
                                                     annotations,
                                                     fSchemaHandler);
@@ -1680,7 +1680,13 @@ class  XSDComplexTypeTraverser extends X
             assertImpl.setTest(testExpr);
             assertImpl.setXPathDefaultNamespace(xpathDefaultNamespace);
             assertImpl.setXPath2NamespaceContext(schemaDoc.fNamespaceSupport);
-            
+            String assertMessage = assertElement.getAttributeNS(
+                                          SchemaSymbols.URI_XERCES_EXTENSIONS, 
+                                          SchemaSymbols.ATT_ASSERT_MESSAGE);
+            if (!"".equals(assertMessage.trim())) {
+               assertImpl.setMessage(assertMessage.trim());
+            }
+
             // add assertion object, to the list of assertions to be processed
             addAssertion(assertImpl);
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to