You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by de...@apache.org on 2008/07/01 09:02:22 UTC

svn commit: r673010 - in /webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin: resources/ src/main/java/org/apache/axis2/tool/service/eclipse/ui/ src/main/java/org/apache/axis2/tool/service/resource/ src/main/java/org/apache/axis2/to...

Author: deepal
Date: Tue Jul  1 00:02:22 2008
New Revision: 673010

URL: http://svn.apache.org/viewvc?rev=673010&view=rev
Log:
applying the patch in 3880

Added:
    webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/resources/
    webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/resources/services.xsd
    webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/util/ServicePluginUtils.java
Modified:
    webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ServiceXMLFileSelectionPage.java
    webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/resource/ServiceResources.properties
    webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/util/Constants.java

Added: webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/resources/services.xsd
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/resources/services.xsd?rev=673010&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/resources/services.xsd (added)
+++ webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/resources/services.xsd Tue Jul  1 00:02:22 2008
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+    <xs:element name="serviceGroup">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element maxOccurs="unbounded" ref="service"/>
+                <xs:element minOccurs="0" ref="parameter"/>
+                <xs:element minOccurs="0" ref="module"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="service">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:choice maxOccurs="unbounded">
+                    <xs:element ref="module"/>
+                    <xs:element ref="operation"/>
+                    <xs:element ref="parameter"/>
+                    <xs:element ref="description"/>
+                    <xs:element ref="Description"/>
+                    <xs:element ref="excludeOperations"/>
+                    <xs:element ref="messageReceivers"/>
+                    <xs:element ref="schema"/>
+                    <xs:element ref="transports"/>
+                </xs:choice>
+                <xs:element minOccurs="0" ref="dataLocator"/>
+            </xs:sequence>
+            <xs:attribute name="class"/>
+            <xs:attribute name="name"/>
+            <xs:attribute name="scope" type="xs:NCName"/>
+            <xs:attribute name="targetNamespace" type="xs:anyURI"/>
+            <xs:attribute name="activate" type="xs:boolean" use="optional"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="description" type="xs:string"/>
+    <xs:element name="Description" type="xs:string"/>
+    <xs:element name="excludeOperations">
+        <xs:complexType>
+            <xs:sequence>
+               <xs:element name="operation" type="xs:string" />  
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="messageReceivers">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element maxOccurs="unbounded" ref="messageReceiver"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="schema">
+        <xs:complexType>
+            <xs:attribute name="schemaNamespace" use="required" type="xs:anyURI"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="transports">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element ref="transport"/>
+            </xs:sequence>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="transport" type="xs:NCName"/>
+    <xs:element name="dataLocator">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element minOccurs="0" ref="dialectLocator"/>
+            </xs:sequence>
+            <xs:attribute name="class"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="dialectLocator">
+        <xs:complexType>
+            <xs:attribute name="class" use="required"/>
+            <xs:attribute name="dialect" use="required" type="xs:anyURI"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="parameter">
+        <xs:complexType mixed="true">
+            <xs:attribute name="locked" type="xs:NMTOKEN"/>
+            <xs:attribute name="name" use="required" type="xs:NCName"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="module">
+        <xs:complexType>
+            <xs:attribute name="ref" use="required" type="xs:NCName"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="operation">
+        <xs:complexType mixed="true">
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element ref="messageReceiver"/>
+                <xs:element ref="module"/>
+                <xs:element ref="parameter"/>
+                <xs:element ref="actionMapping"/>
+                <xs:element ref="faultActionMapping"/>
+                <xs:element ref="message"/>
+                <xs:element ref="outputActionMapping"/>
+            </xs:choice>
+            <xs:attribute name="mep" type="xs:anyURI"/>
+            <xs:attribute name="name" type="xs:NCName"/>
+            <xs:attribute name="qname" type="xs:NCName"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="actionMapping" type="xs:anyURI"/>
+    <xs:element name="faultActionMapping">
+        <xs:complexType>
+            <xs:simpleContent>
+                <xs:extension base="xs:anyURI">
+                    <xs:attribute name="faultName" use="required" type="xs:NCName"/>
+                </xs:extension>
+            </xs:simpleContent>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="message">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element ref="parameter"/>
+            </xs:sequence>
+            <xs:attribute name="label" use="required" type="xs:NCName"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="outputActionMapping" type="xs:anyURI"/>
+    <xs:element name="messageReceiver">
+        <xs:complexType>
+            <xs:attribute name="class" use="required" type="xs:NCName"/>
+            <xs:attribute name="mep" type="xs:anyURI"/>
+        </xs:complexType>
+    </xs:element>
+</xs:schema>

Modified: webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ServiceXMLFileSelectionPage.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ServiceXMLFileSelectionPage.java?rev=673010&r1=673009&r2=673010&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ServiceXMLFileSelectionPage.java (original)
+++ webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/eclipse/ui/ServiceXMLFileSelectionPage.java Tue Jul  1 00:02:22 2008
@@ -19,8 +19,11 @@
 
 package org.apache.axis2.tool.service.eclipse.ui;
 
+import java.io.File;
+
 import org.apache.axis2.tool.service.bean.Page2Bean;
 import org.apache.axis2.tool.service.eclipse.plugin.ServiceArchiver;
+import org.apache.axis2.tool.util.ServicePluginUtils;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
@@ -38,7 +41,7 @@
 
 public class ServiceXMLFileSelectionPage extends AbstractServiceWizardPage {
    
-    private static final String SERVICES_XML_NAME = "services.xml";
+    private static final String SERVICES_XML_NAME = "*.xml";
     private Text serviceXMLText;
     private Label manualSelectionLabel;
     private Label recommendationTextLable;
@@ -168,12 +171,14 @@
     }
     
     private void handleModify(){
-        String serviceXMLString =serviceXMLText.getText().trim().toLowerCase(); 
+        String serviceXMLString =serviceXMLText.getText().trim(); 
         settings.put(PREF_SERVICE_XML_FILE,serviceXMLString);
         if (serviceXMLString.equals("")){
-           this.updateStatus(ServiceArchiver.getResourceString("page2.error.servicenameempty")); 
-        }else if(!serviceXMLString.endsWith(SERVICES_XML_NAME)){
-            this.updateStatus(ServiceArchiver.getResourceString("page2.error.servicenamewrong"));  
+           this.updateStatus(ServiceArchiver.getResourceString("page2.error.servicenameempty"));
+        }else if (!(new File(serviceXMLString)).exists()){
+        	this.updateStatus(ServiceArchiver.getResourceString("page2.error.servicenotexist"));
+        }else if(!ServicePluginUtils.isServicesXMLValid(serviceXMLString)){
+            this.updateStatus(ServiceArchiver.getResourceString("page2.error.serviceselectedinvalid"));  
         }else{
             this.updateStatus(null);
         }

Modified: webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/resource/ServiceResources.properties
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/resource/ServiceResources.properties?rev=673010&r1=673009&r2=673010&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/resource/ServiceResources.properties (original)
+++ webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/service/resource/ServiceResources.properties Tue Jul  1 00:02:22 2008
@@ -58,6 +58,8 @@
 page2.generateauto.caption=Generate the service xml automatically
 page2.error.servicenameempty=Service XML should not be empty
 page2.error.servicenamewrong=Please select a file named service.xml
+page2.error.servicenotexist=Service file does not exist
+page2.error.serviceselectedinvalid=The selected service file is invalid
 ###############################################################################
 #third page
 page3.name=page3

Modified: webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/util/Constants.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/util/Constants.java?rev=673010&r1=673009&r2=673010&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/util/Constants.java (original)
+++ webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/util/Constants.java Tue Jul  1 00:02:22 2008
@@ -28,5 +28,12 @@
         public static final int GENERAL_BUTTON_WIDTH=80;
 
         public static final int GENERAL_COMP_HEIGHT=20;
+    
+    }
+    
+    public class ServiceConstants{
+    	public static final String RESOURCE_FOLDER="resources";						
+    	public static final String SERVICES_XSD_SCHEMA_NAME="services.xsd";				
+    	public static final String XML_SCHEMA="http://www.w3.org/2001/XMLSchema";	
     }
 }

Added: webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/util/ServicePluginUtils.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/util/ServicePluginUtils.java?rev=673010&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/util/ServicePluginUtils.java (added)
+++ webservices/axis2/trunk/java/modules/tool/axis2-eclipse-service-plugin/src/main/java/org/apache/axis2/tool/util/ServicePluginUtils.java Tue Jul  1 00:02:22 2008
@@ -0,0 +1,41 @@
+package org.apache.axis2.tool.util;
+
+import java.io.File;
+
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+import javax.xml.validation.Validator;
+
+import org.apache.axis2.tool.service.eclipse.plugin.ServiceArchiver;
+import org.apache.axis2.tool.util.Constants.ServiceConstants;
+
+public class ServicePluginUtils {
+	/**
+	 * Validates the given xml file against the axis2 services schema. 
+	 * @return return true if the xml is valid
+	 */
+	public static boolean isServicesXMLValid(String servicesXmlPath){
+        SchemaFactory factory = 
+            SchemaFactory.newInstance(ServiceConstants.XML_SCHEMA);
+        
+        try {
+        	String resourcePath=addAnotherNodeToPath(
+        			ServiceConstants.RESOURCE_FOLDER, ServiceConstants.SERVICES_XSD_SCHEMA_NAME);
+            Schema schema = factory.newSchema(
+            		 ServiceArchiver.getDefault().getBundle().getEntry(resourcePath));
+            Validator validator = schema.newValidator();
+            Source source = new StreamSource(new File(servicesXmlPath));
+            validator.validate(source);
+            return true;
+        }
+        catch (Exception ex) {
+            return false;
+        }  
+	}
+	
+	public static String addAnotherNodeToPath(String currentPath, String newNode) {
+		return currentPath + File.separator + newNode;
+	}
+}