blob: ffd03c417c21ac925cece91ba1a5fd5889dda709 [file] [log] [blame]
package org.apache.axis2.tool.util;
import java.io.File;
import java.io.IOException;
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;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.xml.sax.SAXException;
public class ServicePluginUtils {
private static final Log logger = LogFactory.getLog(ServicePluginUtils.class);
/**
* 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 (SAXException e) {
logger.debug("Schema addition failed",e);
return false;
} catch (IOException e) {
logger.debug("Schema validation failed",e);
return false;
}
}
public static String addAnotherNodeToPath(String currentPath, String newNode) {
return currentPath + File.separator + newNode;
}
}