- From: Thomas Gambet via cvs-syncmail <cvsmail@w3.org>
- Date: Tue, 11 Aug 2009 16:05:33 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2006/unicorn/src/org/w3c/unicorn/tests
In directory hutz:/tmp/cvs-serv2609/src/org/w3c/unicorn/tests
Added Files:
Tag: dev2
XMLBeansTest.java UnicornCallTest.java HiepTest.java
UnicornClientDirectInputTest.java FirstServlet.java
UnicornClient.java TaskTest.java CommandLine.java
Log Message:
all initialization actions in Init.java
+ compatibility windows/linux
--- NEW FILE: FirstServlet.java ---
// $Id: FirstServlet.java,v 1.1.2.1 2009/08/11 16:05:31 tgambet Exp $
// Author: Jean-Guilhem Rouel
// (c) COPYRIGHT MIT, ERCIM and Keio, 2006.
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.unicorn.tests;
import java.io.File;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.servlet.ServletRequestContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.w3c.unicorn.Framework;
import org.w3c.unicorn.UnicornCall;
import org.w3c.unicorn.contract.EnumInputMethod;
import org.w3c.unicorn.exceptions.NoTaskException;
import org.w3c.unicorn.index.IndexGenerator;
import org.w3c.unicorn.output.OutputFactory;
import org.w3c.unicorn.output.OutputFormater;
import org.w3c.unicorn.output.OutputModule;
import org.w3c.unicorn.util.LocalizedString;
import org.w3c.unicorn.util.Property;
/**
* FirstServlet<br />
* Created: Jun 26, 2006 2:04:11 PM<br />
*
* @author Jean-Guilhem ROUEL
*/
public class FirstServlet extends HttpServlet {
private static final Log logger = LogFactory
.getLog("org.w3c.unicorn.servlet");
private static final long serialVersionUID = -1375355420965607571L;
private static final DiskFileItemFactory factory = new DiskFileItemFactory();
/**
* Creates a new file upload handler.
*/
private static final ServletFileUpload upload = new ServletFileUpload(
FirstServlet.factory);
/*
* (non-Javadoc)
*
* @see javax.servlet.GenericServlet#init()
*/
@Override
public void init(final ServletConfig aServletConfig)
throws ServletException {
FirstServlet.logger.trace("init");
FirstServlet.factory.setRepository(new File(Property
.get("UPLOADED_FILES_REPOSITORY")));
try {
IndexGenerator.generateIndexes();
} catch (final ResourceNotFoundException e) {
FirstServlet.logger.error("ResourceNotFoundException : "
+ e.getMessage(), e);
e.printStackTrace();
} catch (final ParseErrorException e) {
FirstServlet.logger.error(
"ParseErrorException : " + e.getMessage(), e);
e.printStackTrace();
} catch (final Exception e) {
FirstServlet.logger.error("Exception : " + e.getMessage(), e);
e.printStackTrace();
}
FirstServlet.logger.info("End of initialisation of servlet.");
}
/*
* (non-Javadoc)
*
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest,
* javax.servlet.http.HttpServletResponse)
*/
@Override
protected void doGet(final HttpServletRequest aHttpServletRequest,
final HttpServletResponse aHttpServletResponse)
throws ServletException, IOException {
FirstServlet.logger.trace("doGet");
// Variables related to the output
final Map<String, String[]> mapOfSpecificParameter = new Hashtable<String, String[]>();
final Map<String, String> mapOfOutputParameter = new Hashtable<String, String>();
mapOfOutputParameter.put("output", "simple");
mapOfOutputParameter.put("format", "xhtml10");
mapOfOutputParameter.put("charset", "UTF-8");
mapOfOutputParameter.put("mimetype", "text/html");
// Returns the preferred Locale that the client will accept content in,
// based on the Accept-Language header
final String aLocale = convertEnumerationToString(aHttpServletRequest
.getLocales());
final UnicornCall aUnicornCall = new UnicornCall();
// Language of the template
// ucn_lang is a parameter which is define in xx_index.html.vm.
// It is an hidden parameter of a form.
String templateLang = null;
if (aHttpServletRequest.getParameterValues(Property
.get("UNICORN_PARAMETER_PREFIX")
+ "lang") != null) {
templateLang = aHttpServletRequest.getParameterValues(Property
.get("UNICORN_PARAMETER_PREFIX")
+ "lang")[0];
} else {
templateLang = chooseTemplateLang(aLocale);
}
mapOfOutputParameter.put("lang", templateLang);
if (null == aLocale) {
aUnicornCall.setLang(LocalizedString.DEFAULT_LANGUAGE);
} else {
aUnicornCall.setLang(templateLang + "," + aLocale);
}
for (final Enumeration aEnumParamName = aHttpServletRequest
.getParameterNames(); aEnumParamName.hasMoreElements();) {
final String sParamName = (String) aEnumParamName.nextElement();
final String[] tStringParamValue = aHttpServletRequest
.getParameterValues(sParamName);
this.addParameter(sParamName, tStringParamValue, aUnicornCall,
mapOfSpecificParameter, mapOfOutputParameter);
} // For
if (aUnicornCall.getTask() == null) {
FirstServlet.logger.error("No task selected.");
this.createError(aHttpServletResponse, new NoTaskException(),
mapOfSpecificParameter, mapOfOutputParameter);
return;
}
try {
aUnicornCall.doTask();
this.createOutput(aHttpServletResponse, aUnicornCall,
mapOfSpecificParameter, mapOfOutputParameter);
} catch (final Exception aException) {
FirstServlet.logger.error("Exception : " + aException.getMessage(),
aException);
this.createError(aHttpServletResponse, aException,
mapOfSpecificParameter, mapOfOutputParameter);
}
}
/*
* (non-Javadoc)
*
* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest,
* javax.servlet.http.HttpServletResponse)
*/
@Override
protected void doPost(final HttpServletRequest aHttpServletRequest,
final HttpServletResponse aHttpServletResponse)
throws ServletException, IOException {
FirstServlet.logger.trace("doPost");
// Check that we have a file upload request
final boolean bIsMultipart = ServletFileUpload
.isMultipartContent(new ServletRequestContext(
aHttpServletRequest));
if (!bIsMultipart) {
this.doGet(aHttpServletRequest, aHttpServletResponse);
return;
}
// Parse the request
final List listOfItem;
final UnicornCall aUnicornCall = new UnicornCall();
// Variables related to the output
final Map<String, String> mapOfOutputParameter = new Hashtable<String, String>();
mapOfOutputParameter.put("output", "simple");
mapOfOutputParameter.put("format", "xhtml10");
mapOfOutputParameter.put("charset", "UTF-8");
mapOfOutputParameter.put("mimetype", "text/html");
// Returns the preferred Locale that the client will accept content in,
// based on the Accept-Language header
final String aLocale = convertEnumerationToString(aHttpServletRequest
.getLocales());
// Language of the template
// ucn_lang is a parameter which is define in xx_index.html.vm.
// It is an hidden parameter of a form.
String templateLang = null;
FirstServlet.logger.trace("doPost");
final Map<String, String[]> mapOfSpecificParameter = new Hashtable<String, String[]>();
FileItem aFileItemUploaded = null;
try {
listOfItem = FirstServlet.upload.parseRequest(aHttpServletRequest);
// Process the uploaded items
for (final Iterator aIterator = listOfItem.iterator(); aIterator
.hasNext();) {
final FileItem aFileItem = (FileItem) aIterator.next();
if (aFileItem.isFormField()) {
if (aFileItem.getFieldName().equals("ucn_lang")) {
templateLang = aFileItem.getString();
}
addParameter(aFileItem.getFieldName(), aFileItem
.getString(), aUnicornCall, mapOfSpecificParameter,
mapOfOutputParameter);
} else if (aFileItem.getFieldName().equals(
Property.get("UNICORN_PARAMETER_PREFIX") + "file")) {
aFileItemUploaded = aFileItem;
aUnicornCall.setDocumentName(aFileItemUploaded.getName());
aUnicornCall.setInputParameterValue(aFileItemUploaded);
aUnicornCall.setEnumInputMethod(EnumInputMethod.UPLOAD);
}
}
if (templateLang == null) {
templateLang = chooseTemplateLang(aLocale);
}
if (null == aLocale) {
aUnicornCall.setLang(LocalizedString.DEFAULT_LANGUAGE);
} else {
aUnicornCall.setLang(templateLang + "," + aLocale);
}
mapOfOutputParameter.put("lang", templateLang);
}
catch (final FileUploadException aFileUploadException) {
FirstServlet.logger.error("FileUploadException : "
+ aFileUploadException.getMessage(), aFileUploadException);
this.createError(aHttpServletResponse, aFileUploadException,
mapOfSpecificParameter, mapOfOutputParameter);
}
try {
aUnicornCall.doTask();
this.createOutput(aHttpServletResponse, aUnicornCall,
mapOfSpecificParameter, mapOfOutputParameter);
} catch (final Exception aException) {
FirstServlet.logger.error("Exception : " + aException.getMessage(),
aException);
this.createError(aHttpServletResponse, aException,
mapOfSpecificParameter, mapOfOutputParameter);
} finally {
if ("true".equals(Property.get("DELETE_UPLOADED_FILES"))
&& aFileItemUploaded != null
&& aFileItemUploaded instanceof FileItem) {
aFileItemUploaded.delete();
}
}
}
/**
* Adds a parameter at the correct call.
*
* @param sParamName
* Name of the parameter.
* @param sParamValue
* Value of the parameter.
* @param aUnicornCall
* @param mapOfSpecificParameter
* @param mapOfOutputParameter
*/
private void addParameter(final String sParamName,
final String sParamValue, final UnicornCall aUnicornCall,
final Map<String, String[]> mapOfSpecificParameter,
final Map<String, String> mapOfOutputParameter) {
final String[] tStringValues = { sParamValue };
this.addParameter(sParamName, tStringValues, aUnicornCall,
mapOfSpecificParameter, mapOfOutputParameter);
}
/**
*
* @param sParamName
* @param tStringParamValue
* @param aUnicornCall
* @param mapOfSpecificParameter
* @param mapOfOutputParameter
*/
private void addParameter(String sParamName,
final String[] tStringParamValue, final UnicornCall aUnicornCall,
final Map<String, String[]> mapOfSpecificParameter,
final Map<String, String> mapOfOutputParameter) {
if (null == tStringParamValue || 0 == tStringParamValue.length) {
// no value for this parameter
// TODO log this info if necessary
return;
}
if (!sParamName.startsWith(Property.get("UNICORN_PARAMETER_PREFIX"))) {
// task parameter
aUnicornCall.addParameter(sParamName, tStringParamValue);
return;
}
// Unicorn parameter
// TODO: Why is it here?
sParamName = sParamName.substring(Property.get(
"UNICORN_PARAMETER_PREFIX").length());
// Output specific parameter
if (sParamName.startsWith(Property
.get("UNICORN_PARAMETER_OUTPUT_PREFIX"))) {
sParamName = sParamName.substring(Property.get(
"UNICORN_PARAMETER_OUTPUT_PREFIX").length());
mapOfSpecificParameter.put(sParamName, tStringParamValue);
return;
}
if (sParamName.equals("lang")) {
aUnicornCall.addParameter(Property.get("UNICORN_PARAMETER_PREFIX")
+ "lang", tStringParamValue);
}
// Global Unicorn parameter
if (sParamName.equals("task")) {
// FirstServlet.logger.debug("");
aUnicornCall.setTask(tStringParamValue[0]);
} else if (sParamName.equals("uri")) {
aUnicornCall.setEnumInputMethod(EnumInputMethod.URI);
if (!tStringParamValue[0].substring(0, 7).equals("http://")) {
FirstServlet.logger.info("URI missing protocol : "
+ tStringParamValue[0]);
tStringParamValue[0] = "http://" + tStringParamValue[0];
FirstServlet.logger.info("URI modified to : "
+ tStringParamValue[0]);
}
aUnicornCall.setDocumentName(tStringParamValue[0]);
aUnicornCall.setInputParameterValue(tStringParamValue[0]);
} else if (sParamName.equals("text")) {
aUnicornCall.setEnumInputMethod(EnumInputMethod.DIRECT);
aUnicornCall.setDocumentName(tStringParamValue[0]);
aUnicornCall.setInputParameterValue(tStringParamValue[0]);
}
// TODO add upload handle when it work
else if (sParamName.equals("output") || sParamName.equals("format")
|| sParamName.equals("charset")
|| sParamName.equals("mimetype") || sParamName.equals("lang")) {
mapOfOutputParameter.put(sParamName, tStringParamValue[0]);
} else if (sParamName.equals("text_mime")) {
aUnicornCall.addParameter(Property.get("UNICORN_PARAMETER_PREFIX")
+ "mime", tStringParamValue);
}
}
private void createError(final HttpServletResponse aHttpServletResponse,
final Exception aExceptionError,
final Map<String, String[]> mapOfSpecificParameter,
final Map<String, String> mapOfOutputParameter) throws IOException {
aHttpServletResponse.setContentType(mapOfOutputParameter
.get("mimetype")
+ "; charset=" + mapOfOutputParameter.get("charset"));
try {
final OutputFormater aOutputFormater = OutputFactory
.getOutputFormater(mapOfOutputParameter.get("format"),
mapOfOutputParameter.get("lang"),
mapOfOutputParameter.get("mimetype"));
final OutputModule aOutputModule = OutputFactory
.getOutputModule(mapOfOutputParameter.get("output"));
aOutputModule.produceError(aOutputFormater, aExceptionError,
mapOfSpecificParameter, aHttpServletResponse.getWriter());
} catch (final ResourceNotFoundException e) {
FirstServlet.logger.error("ResourceNotFoundException : "
+ e.getMessage(), e);
aHttpServletResponse.getWriter().println("<pre>");
e.printStackTrace(aHttpServletResponse.getWriter());
aHttpServletResponse.getWriter().println("</pre>");
} catch (final ParseErrorException e) {
FirstServlet.logger.error(
"ParseErrorException : " + e.getMessage(), e);
aHttpServletResponse.getWriter().println("<pre>");
e.printStackTrace(aHttpServletResponse.getWriter());
aHttpServletResponse.getWriter().println("</pre>");
} catch (final Exception e) {
FirstServlet.logger.error("Exception : " + e.getMessage(), e);
aHttpServletResponse.getWriter().println("<pre>");
e.printStackTrace(aHttpServletResponse.getWriter());
aHttpServletResponse.getWriter().println("</pre>");
}
}
private void createOutput(final HttpServletResponse aHttpServletResponse,
final UnicornCall aUnicornCall,
final Map<String, String[]> mapOfSpecificParameter,
final Map<String, String> mapOfOutputParameter) throws IOException {
aHttpServletResponse.setContentType(mapOfOutputParameter
.get("mimetype")
+ "; charset=" + mapOfOutputParameter.get("charset"));
try {
Map<String, Object> mapOfStringObject = new LinkedHashMap<String, Object>();
mapOfStringObject.put("unicorncall", aUnicornCall);
final OutputFormater aOutputFormater = OutputFactory
.getOutputFormater(mapOfOutputParameter.get("format"),
mapOfOutputParameter.get("lang"),
mapOfOutputParameter.get("mimetype"));
final OutputModule aOutputModule = OutputFactory
.getOutputModule(mapOfOutputParameter.get("output"));
aOutputModule.produceOutput(aOutputFormater, mapOfStringObject,
mapOfSpecificParameter, aHttpServletResponse.getWriter());
}
catch (final ResourceNotFoundException e) {
FirstServlet.logger.error("ResourceNotFoundException : "
+ e.getMessage(), e);
aHttpServletResponse.getWriter().println("<pre>");
e.printStackTrace(aHttpServletResponse.getWriter());
aHttpServletResponse.getWriter().println("</pre>");
} catch (final ParseErrorException e) {
FirstServlet.logger.error(
"ParseErrorException : " + e.getMessage(), e);
aHttpServletResponse.getWriter().println("<pre>");
e.printStackTrace(aHttpServletResponse.getWriter());
aHttpServletResponse.getWriter().println("</pre>");
} catch (final Exception e) {
FirstServlet.logger.error("Exception : " + e.getMessage(), e);
aHttpServletResponse.getWriter().println("<pre>");
e.printStackTrace(aHttpServletResponse.getWriter());
aHttpServletResponse.getWriter().println("</pre>");
}
}
/**
* This method returns the first language of the accept language list which
* is equal to one of available index template language
*
* @param aLocale
* @return The selected language or the default language.
*/
private String chooseTemplateLang(String aLocale) {
String[] tabLang = aLocale.split(";|,");
for (int i = 0; i < tabLang.length; i++) {
if (Framework.outputLang.contains(tabLang[i])) {
return tabLang[i];
} else if (Framework.outputLang.contains(tabLang[i].split("-")[0])) {
return tabLang[i].split("-")[0];
}
}
return LocalizedString.DEFAULT_LANGUAGE;
}
/**
* Converts an Enumeration object to a string, the terms being separated by
* a coma.
*
* @param myEnum
* The enumeration to convert.
* @return The converted string.
*/
private String convertEnumerationToString(Enumeration myEnum) {
String ret = "";
while (myEnum.hasMoreElements()) {
ret += myEnum.nextElement().toString() + ",";
}
return ret.substring(0, ret.length() - 1);
}
}
--- NEW FILE: UnicornClient.java ---
package org.w3c.unicorn.tests;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.LinkedHashMap;
import java.util.Map;
import org.w3c.unicorn.UnicornCall;
import org.w3c.unicorn.contract.EnumInputMethod;
import org.w3c.unicorn.output.OutputFactory;
import org.w3c.unicorn.output.OutputFormater;
import org.w3c.unicorn.output.OutputModule;
import org.w3c.unicorn.util.Property;
public class UnicornClient {
/**
* Prints help contents on the standard output.
*
*/
public static void print_help() {
System.out
.println("[Usage] UnicornClient task inputType=[mimetype=]pageToValid templateLanguage outputTemplate [otherParameters]");
System.out.println("");
System.out
.println("* tasks = one of task in tasklist.xml (eg: markup, css...)");
System.out.println("* inputType : uri|file");
System.out
.println("* mimetype : text/html|text/css|... (required only if inputType='file')");
System.out
.println("* pageToValid : an uri or a path to a file (depend on inputType)");
System.out.println("* otherParameters : param1=val1,param2=val2...");
System.out.println("");
System.out
.println("[Example] UnicornClient markup uri=http://w3.org en xhtml10");
System.out
.println("[Example] UnicornClient calculator uri=http://flyingman.sophia.w3.org/test en text10 x2=on,ptoto=titi");
System.out
.println("[Example] UnicornClient css file=text/css=./style/base.css fr text10 profile=css2,usermedium=screen,warning=2,lang=en");
}
/**
* Tests Unicorn client.
*
* @param args
*/
public static void main(String[] args) {
if (args.length == 0) {
print_help();
} else if (args.length == 1 && args[0].equals("help")) {
print_help();
} else {
// read parameters
String task = args[0];
String pageToValid = args[1];
String language = args[2];
String outputTemplate = args[3];
String pParams = "";
if (args.length > 4) { // this argument is optional
pParams = args[4];
}
UnicornCall aUnicornCall = new UnicornCall();
// parse other parameters: "x2=on,toto=titi" to a
// map<String,String[]>
if (pParams.length() != 0) {
Map<String, String[]> mapOfParameter = new LinkedHashMap<String, String[]>();
String[] couples = pParams.split(",");
for (int i = 0; i < couples.length; i++) {
String[] couple = couples[i].split("=");
if (couple.length == 2) {
String[] tmp = { couple[1] };
mapOfParameter.put(couple[0], tmp);
} else {
System.err.println("Error parameter!");
}
}
aUnicornCall.setMapOfStringParameter(mapOfParameter);
}
// parse input type: "uri=http://flyingman.sophia.w3.org/test" or
// "file=text/css=./style/base.css"
String[] pInput = pageToValid.split("=");
if (pInput[0].equals("uri")) {
aUnicornCall.setEnumInputMethod(EnumInputMethod.URI);
aUnicornCall.setDocumentName(pInput[1]);
aUnicornCall.setInputParameterValue(pInput[1]);
} else { // direct input
try {
aUnicornCall.setEnumInputMethod(EnumInputMethod.DIRECT);
// read content in the file pInput[2], example:
// pInput[2]=base.css alors content=".h1{color:#FA0012}";
BufferedReader bfr = new BufferedReader(new FileReader(
pInput[2]));
String content = "";
String line;
while ((line = bfr.readLine()) != null) {
content = content + line + "\n";
}
bfr.close();
// Ajouter mime type dans map of parameter
Map<String, String[]> mapOfParameter = aUnicornCall
.getMapOfStringParameter();
if (mapOfParameter == null) {
mapOfParameter = new LinkedHashMap<String, String[]>();
aUnicornCall.setMapOfStringParameter(mapOfParameter);
}
String[] tmp = { pInput[1] };
mapOfParameter.put(Property.get("UNICORN_PARAMETER_PREFIX")
+ "mime", tmp);
aUnicornCall.setInputParameterValue(content);
} catch (IOException e) {
e.printStackTrace();
}
}
aUnicornCall.setTask(task); // task id
aUnicornCall.setLang(language);
long before = System.currentTimeMillis();
try {
aUnicornCall.doTask();
Map<String, Object> mapOfStringObject = new LinkedHashMap<String, Object>();
mapOfStringObject.put("unicorncall", aUnicornCall);
OutputFormater aOutputFormater = OutputFactory
.getOutputFormater(outputTemplate, // text or xhtml10,
// see
// unicorn.properties
language, "text/html"); // MIME Type
OutputModule aOutputModule = OutputFactory
.getOutputModule("simple");
PrintWriter pw = new PrintWriter(System.out);
aOutputModule.produceOutput(aOutputFormater, mapOfStringObject,
null, pw);
pw.flush();
} catch (Exception e) {
e.printStackTrace();
}
long after = System.currentTimeMillis();
System.out.println("Elapsed time (s): " + (double) (after - before)
/ 1000);
}
}
}
--- NEW FILE: UnicornCallTest.java ---
package org.w3c.unicorn.tests;
import java.io.InputStream;
import java.util.Iterator;
import javax.activation.MimeType;
import javax.xml.namespace.NamespaceContext;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.unicorn.contract.EnumInputMethod;
import org.w3c.unicorn.input.InputFactory;
import org.w3c.unicorn.input.InputModule;
import org.w3c.unicorn.request.Request;
import org.w3c.unicorn.response.Response;
import org.xml.sax.InputSource;
public class UnicornCallTest {
public static Boolean evaluer(InputStream stream, String expression) {
Boolean b = null;
try {
// cr�ation de la source
InputSource source = new InputSource(stream);
// cr�ation du XPath
XPathFactory fabrique = XPathFactory.newInstance();
XPath xpath = fabrique.newXPath();
// test du namespace manuel
NamespaceContext namespace = new NamespaceContext() {
public String getNamespaceURI(String prefix) {
if ("observationresponse".equals(prefix)) {
return "http://www.w3.org/unicorn/observationresponse";
} else {
return null;
}
}
public String getPrefix(String namespaceURI) {
if ("http://www.w3.org/unicorn/observationresponse "
.equals(namespaceURI)) {
return "observationresponse";
} else {
return null;
}
}
public Iterator getPrefixes(String namespaceURI) {
return null;
}
};
xpath.setNamespaceContext(namespace);
// �valuation de l'expression XPath
XPathExpression exp = xpath.compile(expression);
b = (Boolean) exp.evaluate(source, XPathConstants.BOOLEAN);
System.out.println("namespace context : "
+ xpath.getNamespaceContext());
} catch (XPathExpressionException xpee) {
xpee.printStackTrace();
}
return b;
}
public static void main(String[] args) {
try {
// First, the XML document
/*
* String xmlStr =
* "<?xml version=\"1.0\" ?>\n" +
* "<Sales xmlns=\"http://www.davber.com/sales-format\">\n" +
* "<Customer name=\"CostCo, Inc.\">\n" +
* "<ord:Order xmlns:ord=\"http://www.davber.com/order-format\"
* price=\"12000\">\n" +
* "<ord:Description>A bunch of stuff" +
* "</ord:Description>\n" +
* "</ord:Order>\n" +
* "</Customer>\n" +
* "</Sales>\n";
*
*/
InputModule inputMod = InputFactory.createInputModule(
(new MimeType()), EnumInputMethod.URI, "http://www.w3.org");
Request req = Request.createRequest(inputMod,
"http://validator.w3.org/check", "uri", false, "ucn");
req.setLang("en");
req.addParameter("output", "ucn");
System.out.println("request created");
System.out.println(req.getResponseType());
Response res = req.doRequest();
System.out.println("request done");
DocumentBuilderFactory xmlFact = DocumentBuilderFactory
.newInstance();
xmlFact.setNamespaceAware(false);
DocumentBuilder builder = xmlFact.newDocumentBuilder();
Document doc = builder.parse(res.getXml().toString());
// Now the XPath expression
String xpathStr = "//false";
XPathFactory xpathFact =
XPathFactory.newInstance();
XPath xpath = xpathFact.newXPath();
String result = xpath.evaluate(xpathStr, doc);
XPathExpression xpe = xpath.compile(xpathStr);
boolean b = (Boolean) xpe.evaluate(doc, XPathConstants.BOOLEAN);
System.out.println(b);
System.out.println("xpath : " + (!result.equals("")));
// System.out.println("XPath result is \"" +
// result + "\"");
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
/*
* public static void main(String[] args) { try { System.out.println("Premier
* test : URL"); // URL url = new //
* URL("http://www.pms.ifi.lmu.de/forschung/xpath-eval.html");
* // String expression = "//category"; // String expression =
* "//cadevraitetrefalse"; // (//doctype eq '-//W3C//DTD XHTML 1.0 Strict//EN') //
* InputStream is = url.openStream(); // InputStreamReader isr = new
* InputStreamReader(is); // BufferedReader br = new BufferedReader(isr); String
* s = ""; // while ((s=br.readLine()) != null) // System.out.println(s); //
* boolean b = evaluer(url.openStream(), expression); //
* System.out.println(expression); // System.out.println("--> " + b);
* // System.out.println("Deuxi�me test : UPLOAD"); // Object fichier =
* (Object) (new File("C:/w3.xht")); // FileItem f = (FileItem) fichier; //
* expression = "//html";
* // � tester plus tard (voir firstservlet pour un exemple)
* // b = evaluer(f.getInputStream(),expression); // System.out.println("On
* verra plus tard");
* // ystem.out.println("Troisi�me test : DIRECT");
* // System.out.println(b);
* // ObservationresponseDocument.Factory.parse();
*
* //System.out.println("Premier test : URL");
*
* String expr = "//result"; InputModule inputMod =
* InputFactory.createInputModule( (new MimeType()), EnumInputMethod.URI,
* "http://www.w3.org"); Request req = Request.createRequest(inputMod,
* "http://validator.w3.org/check", "uri", false, "ucn"); req.setLang("en");
* req.addParameter("output", "ucn"); System.out.println("request created");
* System.out.println(req.getResponseType()); req.doRequest();
* System.out.println("request done");
* // pour afficher le stream de response
*
* InputStream resp = req.getResponseStream(); InputStreamReader isr = new
* InputStreamReader(resp); BufferedReader br = new BufferedReader(isr); String
* str = ""; while ((str=br.readLine()) != null) System.out.println(str);
*
*
* br.close(); isr.close();resp.close();
*
* // trouver un moyen de // reset le responseStream de
*
* //System.out.println(req.getResponseStream()); boolean xpathRes =
* evaluer(req.getResponseStream(), expr); System.out.println(xpathRes);
* } catch (Exception e) { e.printStackTrace(); } }
*/
/*
* public static void main(String[] args) throws Exception { Object ct; try { ct =
* (new URL("http://www.w3.org")).openConnection().getContentType(); //XmlObject
* bidule = XmlObject.Factory.parse("http://www.w3.org");
*
* System.out.println(bidule); // System.out.println(ct);
* //ct.selectPath(xPath); String xPath = "(//doctype eq '-//W3C//DTD XHTML 1.0
* Strict//EN') or (//doctype eq '-//W3C//DTD HTML 4.01//EN')" ;
* //System.out.println(ct.selectPath(xPath));
*
*
*
*
*
*
*
* } catch (MalformedURLException e) { e.printStackTrace(); } catch
* (IOException e) { e.printStackTrace(); }
* }
*/
--- NEW FILE: HiepTest.java ---
package org.w3c.unicorn.tests;
import java.io.PrintWriter;
import java.util.LinkedHashMap;
import java.util.Map;
import org.w3c.unicorn.UnicornCall;
import org.w3c.unicorn.contract.EnumInputMethod;
import org.w3c.unicorn.output.OutputFactory;
import org.w3c.unicorn.output.OutputFormater;
import org.w3c.unicorn.output.OutputModule;
public class HiepTest {
public static void main(String[] args) {
UnicornCall aUnicornCall = new UnicornCall();
aUnicornCall.setTask("conformance"); // task id
aUnicornCall.setEnumInputMethod(EnumInputMethod.URI);
aUnicornCall.setDocumentName("http://w3.org");
aUnicornCall.setInputParameterValue("http://w3.org");
aUnicornCall.setLang("en");
try {
aUnicornCall.doTask();
Map<String, Object> mapOfStringObject = new LinkedHashMap<String, Object>();
mapOfStringObject.put("unicorncall", aUnicornCall);
OutputFormater aOutputFormater = OutputFactory.getOutputFormater(
"xhtml10", // le template --> text ou xhtml10, see
// unicorn.properties
"en", // la langue
"text/plain"); // MIME Type
OutputModule aOutputModule = OutputFactory
.getOutputModule("simple");
PrintWriter pw = new PrintWriter(System.out);
aOutputModule.produceOutput(aOutputFormater, mapOfStringObject,
null, pw);
pw.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}
--- NEW FILE: TaskTest.java ---
/**
*
*/
package org.w3c.unicorn.tests;
import java.io.File;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;
import org.apache.xmlbeans.XmlException;
import org.w3.unicorn.tasklist.TaskType;
import org.w3.unicorn.tasklist.TasklistDocument;
import org.w3c.unicorn.tasklist.Task;
import org.w3c.unicorn.tasklist.TaskListUnmarshallerBeans;
/**
* @author shenril
*
*/
public class TaskTest {
/**
* @param args
*/
public static void main(String[] args) {
try {
TasklistDocument tasklist = TasklistDocument.Factory
.parse(new File("./resources/tasklist/new-tasklist.xml"));
TaskListUnmarshallerBeans unmarshaller = new TaskListUnmarshallerBeans();
Task aTask = new Task();
aTask.setTree(unmarshaller.ExpandTree(tasklist.getTasklist()
.getTaskArray(0)));
Map<String, Task> mapOfTask = new LinkedHashMap<String, Task>();
for (TaskType myTask : tasklist.getTasklist().getTaskArray()) {
Task bTask = new Task();
aTask.setTree(unmarshaller.ExpandTree(myTask));
mapOfTask.put(bTask.getID(), bTask);
}
aTask.setTree(aTask.expandNode(mapOfTask, aTask.getTree()));
aTask.displayTree(aTask.getTree());
} catch (XmlException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
--- NEW FILE: CommandLine.java ---
// $Id: CommandLine.java,v 1.1.2.1 2009/08/11 16:05:31 tgambet Exp $
// Author: Damien LEROY.
// (c) COPYRIGHT MIT, ERCIM ant Keio, 2006.
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.unicorn.tests;
import java.util.LinkedHashMap;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.w3c.unicorn.UnicornCall;
import org.w3c.unicorn.contract.EnumInputMethod;
import org.w3c.unicorn.output.EnumOutputModule;
import org.w3c.unicorn.output.OutputFactory;
import org.w3c.unicorn.output.OutputModule;
/**
* Class to call the framework by command line.
*
* @author Damien LEROY
*/
public class CommandLine {
private static final Log logger = LogFactory
.getLog("org.w3c.unicorn.tests");
private static String sTaskID = "all";
private static Map<String, String[]> mapOfParameter = new LinkedHashMap<String, String[]>();
private static EnumInputMethod aEnumInputMethod = null;
private static String sEnumInputMethodValue = null;
private static OutputModule aOutputModule = null;
/**
* Launches the Unicorn Framework.
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
CommandLine.logger.trace("Unicorn Framework Begin.");
CommandLine.logger.info("Read command-line arguments.");
for (int i = 0; i < args.length; i++) {
if (CommandLine.logger.isDebugEnabled()) {
CommandLine.logger.debug("Argument : " + args[i] + ".");
}
if ("-task".equals(args[i])) {
i++;
CommandLine.sTaskID = args[i];
if (CommandLine.logger.isDebugEnabled()) {
CommandLine.logger.debug("Task : " + CommandLine.sTaskID
+ ".");
}
} else if ("-inputmethod".equals(args[i])) {
i++;
String[] tString = args[i].split("=");
CommandLine.aEnumInputMethod = EnumInputMethod
.fromValue(tString[0]);
if (2 <= tString.length) {
CommandLine.sEnumInputMethodValue = tString[1];
}
if (CommandLine.logger.isDebugEnabled()) {
CommandLine.logger.debug("Input method : "
+ CommandLine.aEnumInputMethod.toString()
+ ", value : " + CommandLine.sEnumInputMethodValue
+ ".");
}
} else if ("-outputmethod".equals(args[i])) {
i++;
String sOutputMethod = args[i];
final EnumOutputModule aEnumOutputModule = EnumOutputModule
.fromValue(sOutputMethod);
if (null == aEnumOutputModule) {
CommandLine.logger.error("Unknow output method : "
+ sOutputMethod + ".");
return;
}
CommandLine.aOutputModule = OutputFactory
.getOutputModule(aEnumOutputModule);
} else if (args[i].contains("=")) {
String[] tString = args[i].split("=");
String[] val = { tString[1] };
CommandLine.mapOfParameter.put(tString[0], val);
}
}
if (null == CommandLine.aEnumInputMethod) {
CommandLine.logger.error("No input method specified.");
return;
}
if (null == CommandLine.aOutputModule) {
CommandLine.logger
.info("No output method specified use SimpleOutputModule by default.");
CommandLine.aOutputModule = OutputFactory
.getOutputModule(EnumOutputModule.SIMPLE);
}
if (EnumInputMethod.DIRECT.equals(CommandLine.aEnumInputMethod)) {
// read on standard input and add to Main.eimValue
String sEnumInputMethodValue = "";
for (int i = System.in.read(); -1 != i; i = System.in.read()) {
sEnumInputMethodValue += (char) i;
}
if (CommandLine.logger.isDebugEnabled()) {
CommandLine.logger.debug("Direct Input :\n"
+ sEnumInputMethodValue);
}
CommandLine.sEnumInputMethodValue = sEnumInputMethodValue;
}
CommandLine.logger.info("Initialize framework.");
UnicornCall aUnicornCall = new UnicornCall();
aUnicornCall.setTask(CommandLine.sTaskID);
aUnicornCall.setEnumInputMethod(CommandLine.aEnumInputMethod);
// CommandLine.sEnumInputMethodValue
aUnicornCall.setMapOfStringParameter(CommandLine.mapOfParameter);
if (CommandLine.logger.isDebugEnabled()) {
CommandLine.logger.debug("UnicornCall : " + aUnicornCall + ".");
}
CommandLine.logger.info("Process request.");
// Main.mapOfParameter.put("warning", "2");
aUnicornCall.doTask();
CommandLine.logger.trace("Unicorn Framework End.");
}
}
--- NEW FILE: XMLBeansTest.java ---
// $Id: XMLBeansTest.java,v 1.1.2.1 2009/08/11 16:05:30 tgambet Exp $
// Author: Jean-Guilhem Rouel
// (c) COPYRIGHT MIT, ERCIM and Keio, 2006.
// Please first read the full copyright statement in file COPYRIGHT.html
package org.w3c.unicorn.tests;
import java.io.IOException;
import org.apache.xmlbeans.XmlException;
import org.w3.unicorn.observationresponse.ObservationresponseDocument;
/**
* XmlBeansTest<br />
* Created: Jun 26, 2006 12:05:50 PM<br />
*
* @author Batard Florent
*/
public class XMLBeansTest {
public static void main(String[] args) throws XmlException, IOException {
// Bind the instance to the generated XMLBeans types.
ObservationresponseDocument ObsDoc = null;
try {
ObsDoc = ObservationresponseDocument.Factory
.parse(new java.io.File("./target.xml"));
} catch (XmlException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
ObservationresponseDocument.Observationresponse obs = ObsDoc
.getObservationresponse();
// Get and print pieces of the XML instance.
System.out.println(obs.getResult().getErrors().getErrorlistArray(0)
.getErrorArray(0).getLongmessageArray(0));
System.out.println(obs.getResult().getErrors().getErrorlistArray(0)
.getErrorArray(0).getMessageArray(0));
}
}
--- NEW FILE: UnicornClientDirectInputTest.java ---
package org.w3c.unicorn.tests;
import java.io.PrintWriter;
import java.util.LinkedHashMap;
import java.util.Map;
import org.w3c.unicorn.UnicornCall;
import org.w3c.unicorn.contract.EnumInputMethod;
import org.w3c.unicorn.output.OutputFactory;
import org.w3c.unicorn.output.OutputFormater;
import org.w3c.unicorn.output.OutputModule;
import org.w3c.unicorn.util.Property;
public class UnicornClientDirectInputTest {
public static void main(String[] args) {
UnicornCall aUnicornCall = new UnicornCall();
aUnicornCall.setTask("css"); // task id
aUnicornCall.setEnumInputMethod(EnumInputMethod.DIRECT);
aUnicornCall.setLang("en");
aUnicornCall
.setDocumentName("D:/stageW3C/unicorn/style/base_result.css");
Map<String, String[]> mapOfParameter = new LinkedHashMap<String, String[]>();
String[] tmp = { "text/css" };
mapOfParameter.put(Property.get("UNICORN_PARAMETER_PREFIX") + "mime",
tmp);
aUnicornCall.setMapOfStringParameter(mapOfParameter);
aUnicornCall
.setInputParameterValue("p#msie { /* msie-bug note for text/plain */ float: right; border: 1px solid black; background: white;}");
try {
aUnicornCall.doTask();
Map<String, Object> mapOfStringObject = new LinkedHashMap<String, Object>();
mapOfStringObject.put("unicorncall", aUnicornCall);
OutputFormater aOutputFormater = OutputFactory.getOutputFormater(
"text10", // le template --> text ou xhtml10, see
// unicorn.properties
"en", // la langue
"text/plain"); // MIME Type
OutputModule aOutputModule = OutputFactory
.getOutputModule("simple");
PrintWriter pw = new PrintWriter(System.out);
aOutputModule.produceOutput(aOutputFormater, mapOfStringObject,
null, pw);
pw.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Received on Tuesday, 11 August 2009 16:09:04 UTC