- From: Hiep Duong via cvs-syncmail <cvsmail@w3.org>
- Date: Wed, 20 Feb 2008 15:10:00 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2006/unicorn/org/w3c/unicorn/response/parser
In directory hutz:/tmp/cvs-serv30553/org/w3c/unicorn/response/parser
Added Files:
ResponseParserFactory.java ResponseParser.java
DefaultParser.java
Log Message:
simplified observationresponse and generalize output format (now we can map a format type what defnied in the contract to a ResponseParser)
--- NEW FILE: ResponseParserFactory.java ---
package org.w3c.unicorn.response.parser;
import java.io.IOException;
import java.io.InputStream;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.unicorn.Framework;
import org.w3c.unicorn.response.Response;
import org.xml.sax.SAXException;
public class ResponseParserFactory {
public static ResponseParser createResponseParser(String responseType) throws SAXException, ParserConfigurationException, IOException {
ResponseParser rsp = Framework.mapOfReponseParser.get(responseType);
if (rsp==null)
rsp = new DefaultParser();
return rsp;
}
public static Response parse(InputStream is, String responseType) {
try {
Response response = createResponseParser(responseType).parse(is);
return response;
} catch (SAXException e) {
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
--- NEW FILE: ResponseParser.java ---
package org.w3c.unicorn.response.parser;
import java.io.InputStream;
import org.w3c.unicorn.response.Response;
public interface ResponseParser {
public Response parse(InputStream inputStream);
}
--- NEW FILE: DefaultParser.java ---
package org.w3c.unicorn.response.parser;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.w3c.unicorn.generated.observationresponse.Errorlist;
import org.w3c.unicorn.generated.observationresponse.Errors;
import org.w3c.unicorn.generated.observationresponse.Infolist;
import org.w3c.unicorn.generated.observationresponse.Informations;
import org.w3c.unicorn.generated.observationresponse.Observationresponse;
import org.w3c.unicorn.generated.observationresponse.Warninglist;
import org.w3c.unicorn.generated.observationresponse.Warnings;
import org.w3c.unicorn.response.A;
import org.w3c.unicorn.response.Code;
import org.w3c.unicorn.response.Error;
import org.w3c.unicorn.response.Img;
import org.w3c.unicorn.response.Info;
import org.w3c.unicorn.response.Longmessage;
import org.w3c.unicorn.response.Warning;
import org.w3c.unicorn.response.Response;
import org.w3c.unicorn.response.Result;
import org.w3c.unicorn.util.LocalizedString;
public class DefaultParser implements ResponseParser {
protected static final Log logger = LogFactory.getLog("org.w3c.unicorn.response.parser.DefaultParser");
private static JAXBContext aJAXBContext = null;
private static Unmarshaller aUnmarshaller = null;
static {
try {
aJAXBContext = JAXBContext.newInstance("org.w3c.unicorn.generated.observationresponse");
aUnmarshaller = aJAXBContext.createUnmarshaller();
}
catch (final JAXBException e) {
logger.error("JAXBException : " + e.getMessage(), e);
e.printStackTrace();
}
}
public Response parse(InputStream inputStream) {
try {
return swap((Observationresponse)(aUnmarshaller.unmarshal(inputStream)));
} catch (JAXBException e) {
logger.error("JAXBException : " + e.getMessage(), e);
e.printStackTrace();
return null;
}
}
private List<LocalizedString> swapListMessage(List<String> x, String lang) {
List<LocalizedString> y = new ArrayList<LocalizedString>();
for (Object ox : x) {
String cox = (String)ox;
LocalizedString coy = new LocalizedString(cox, lang);
y.add(coy);
}
return y;
}
private List<Object> swap(List<Object> x, String lang) {
List<Object> y = new ArrayList<Object>();
for (Object ox : x) {
if (ox instanceof String) {
String cox = (String)ox;
LocalizedString coy = new LocalizedString(cox, lang);
y.add(coy);
}
else if (ox instanceof org.w3c.unicorn.generated.observationresponse.A) {
org.w3c.unicorn.generated.observationresponse.A cox = (org.w3c.unicorn.generated.observationresponse.A)ox;
A coy = new A();
coy.setHref(cox.getHref());
coy.setContent(swap(cox.getContent(), lang));
y.add(coy);
}
else if (ox instanceof org.w3c.unicorn.generated.observationresponse.Code) {
org.w3c.unicorn.generated.observationresponse.Code cox = (org.w3c.unicorn.generated.observationresponse.Code)ox;
Code coy = new Code();
coy.setContent(swap(cox.getContent(), lang));
y.add(coy);
}
else if (ox instanceof org.w3c.unicorn.generated.observationresponse.Img) {
org.w3c.unicorn.generated.observationresponse.Img cox = (org.w3c.unicorn.generated.observationresponse.Img)ox;
Img coy = new Img();
coy.setAlt(cox.getAlt());
coy.setHeight(cox.getHeight());
coy.setLongdesc(cox.getLongdesc());
coy.setName(cox.getName());
coy.setSrc(cox.getSrc());
coy.setWidth(cox.getWidth());
y.add(coy);
}
}
return y;
}
private Longmessage swap(org.w3c.unicorn.generated.observationresponse.Longmessage x, String lang) {
Longmessage y = new Longmessage();
y.setContent(swap(x.getContent(),lang));
return y;
}
private List<Longmessage> swapListLongmessage(List<org.w3c.unicorn.generated.observationresponse.Longmessage> x, String lang) {
List<Longmessage> y = new ArrayList<Longmessage>();
for (Object ox : x) {
org.w3c.unicorn.generated.observationresponse.Longmessage cox = (org.w3c.unicorn.generated.observationresponse.Longmessage)ox;
Longmessage coy = swap(cox, lang);
y.add(coy);
}
return y;
}
private Warning swap(org.w3c.unicorn.generated.observationresponse.Warning x, String lang) {
Warning y = new Warning();
y.setLine(x.getLine());
y.setColumn(x.getColumn());
y.setContext(x.getContext());
y.setLevel(x.getLevel());
y.setMessage(swapListMessage(x.getMessage(), lang));
y.setLongmessage(swapListLongmessage(x.getLongmessage(), lang));
return y;
}
private Error swap(org.w3c.unicorn.generated.observationresponse.Error x, String lang) {
Error y = new Error();
y.setLine(x.getLine());
y.setColumn(x.getColumn());
y.setErrortype(x.getErrortype());
y.setContext(x.getContext());
y.setMessage(swapListMessage(x.getMessage(), lang));
y.setLongmessage(swapListLongmessage(x.getLongmessage(), lang));
return y;
}
private Info swap(org.w3c.unicorn.generated.observationresponse.Info x, String lang) {
Info y = new Info();
y.setLine(x.getLine());
y.setColumn(x.getColumn());
y.setContext(x.getContext());
y.setMessage(swapListMessage(x.getMessage(), lang));
y.setLongmessage(swapListLongmessage(x.getLongmessage(), lang));
return y;
}
private Response swap(Observationresponse or) {
Response res = new Response();
res.setUri(or.getUri());
res.setCheckedby(or.getCheckedby());
res.setVersion(or.getVersion());
res.setDate(or.getDate());
res.setPassed(or.isPassed());
//Fill res.result
org.w3c.unicorn.generated.observationresponse.Result rrr = or.getResult();
if (rrr!=null) {
Warnings warnings = rrr.getWarnings();
if (warnings!=null && warnings.getWarninglist()!=null) {
for (Warninglist wl : warnings.getWarninglist()) {
String lang = warnings.getLang();
Result r = new Result(lang, wl.getUri());
for (org.w3c.unicorn.generated.observationresponse.Warning w : wl.getWarning()) {
r.getWarnings().add(swap(w, lang));
}
res.addResult(r);
}
}
Errors errors = rrr.getErrors();
if (errors!=null && errors.getErrorlist()!=null) {
for (Errorlist wl : errors.getErrorlist()) {
String lang = errors.getLang();
Result r = new Result(errors.getLang(),wl.getUri());
for (org.w3c.unicorn.generated.observationresponse.Error w : wl.getError()) {
r.getErrors().add(swap(w, lang));
}
res.addResult(r);
}
}
Informations informations = rrr.getInformations();
if (informations!=null && informations.getInfolist()!=null) {
String lang = informations.getLang();
for (Infolist wl : informations.getInfolist()) {
Result r = new Result(informations.getLang(), wl.getUri());
for (org.w3c.unicorn.generated.observationresponse.Info w : wl.getInfo()) {
r.getInfos().add(swap(w, lang));
}
res.addResult(r);
}
}
}
return res;
}
}
Received on Wednesday, 20 February 2008 15:10:07 UTC