- From: Florent Batard via cvs-syncmail <cvsmail@w3.org>
- Date: Thu, 10 Jul 2008 14:49:54 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/2006/unicorn/org/w3c/unicorn/response/parser In directory hutz:/tmp/cvs-serv23358/org/w3c/unicorn/response/parser Modified Files: DefaultParser.java Log Message: New Default Parser for the observation response with XMLBeans Index: DefaultParser.java =================================================================== RCS file: /sources/public/2006/unicorn/org/w3c/unicorn/response/parser/DefaultParser.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- DefaultParser.java 17 Jun 2008 13:45:32 -0000 1.2 +++ DefaultParser.java 10 Jul 2008 14:49:52 -0000 1.3 @@ -1,31 +1,29 @@ package org.w3c.unicorn.response.parser; +import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; +import java.util.Calendar; +import java.util.GregorianCalendar; import java.util.List; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Unmarshaller; +import javax.xml.datatype.DatatypeConfigurationException; +import javax.xml.datatype.DatatypeFactory; +import javax.xml.datatype.XMLGregorianCalendar; 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.apache.xmlbeans.XmlCursor; +import org.apache.xmlbeans.XmlException; 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.response.Warning; import org.w3c.unicorn.util.LocalizedString; /** @@ -36,35 +34,24 @@ 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(); - } - } - /** * Parses the input and returns the response. * @param inputStream The input stream. * @return The corresponding response. */ 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; - } + try { + return swap(org.w3.unicorn.observationresponse.ObservationresponseDocument.Factory.parse(inputStream)); + } catch (XmlException e) { + e.printStackTrace(); + logger.error("XMLBeansException : " + e.getMessage(), e); + return null; + } catch (IOException e) { + e.printStackTrace(); + logger.error("XMLBeansException : " + e.getMessage(), e); + return null; + } + } /** @@ -74,7 +61,7 @@ * @param lang The language of the list. * @return The new list of localized strings. */ - private List<LocalizedString> swapListMessage(List<String> x, String lang) { + private List<LocalizedString> swapListMessage(String[] x, String lang) { List<LocalizedString> y = new ArrayList<LocalizedString>(); for (Object ox : x) { String cox = (String) ox; @@ -98,19 +85,124 @@ 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; + } else if (ox instanceof org.w3.unicorn.observationresponse.ADocument.A) { + org.w3.unicorn.observationresponse.ADocument.A cox = (org.w3.unicorn.observationresponse.ADocument.A) ox; A coy = new A(); coy.setHref(cox.getHref()); - coy.setContent(swap(cox.getContent(), lang)); + + + XmlCursor cursor=cox.newCursor(); + //System.err.println("Debut"); + //System.err.println(cursor.xmlText()); + + ArrayList<Object> listObj = new ArrayList<Object>(); + + while (cursor.hasNextToken()) { + cursor.toNextToken(); + //System.err.println(cursor.currentTokenType().intValue()==TokenType.INT_END); + Object current = cursor.getObject(); + if(current!=null) { + //System.err.println(current.getClass()); + + if (current.getClass()== + org.w3.unicorn.observationresponse.impl.LongmessageDocumentImpl.LongmessageImpl.class) { + break; + } + // Case : A + if (current.getClass()== + org.w3.unicorn.observationresponse.impl.ADocumentImpl.AImpl.class) { + org.w3.unicorn.observationresponse.ADocument.A + a = (org.w3.unicorn.observationresponse.ADocument.A) current; + listObj.add(a); + //We skip 3 tokens to forget about the inner text in the A tag. + //We don't want it in the object list + cursor.toNextToken(); + cursor.toNextToken(); + cursor.toNextToken(); + } + // Case : Code + if (current.getClass()== + org.w3.unicorn.observationresponse.impl.CodeDocumentImpl.CodeImpl.class) { + org.w3.unicorn.observationresponse.CodeDocument.Code code=(org.w3.unicorn.observationresponse.CodeDocument.Code) current; + + listObj.add(code); + } + // Case : Img + if (current.getClass()== + org.w3.unicorn.observationresponse.impl.ImgDocumentImpl.ImgImpl.class) { + org.w3.unicorn.observationresponse.ImgDocument.Img + img = (org.w3.unicorn.observationresponse.ImgDocument.Img) current; + listObj.add(img); + } + } + else if(cursor.isText()){ + listObj.add(cursor.getTextValue()); + } + + } + coy.setContent(swap(listObj, 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; + + } else if (ox instanceof org.w3.unicorn.observationresponse.CodeDocument.Code) { + org.w3.unicorn.observationresponse.CodeDocument.Code cox = (org.w3.unicorn.observationresponse.CodeDocument.Code) ox; Code coy = new Code(); - coy.setContent(swap(cox.getContent(), lang)); + + + XmlCursor cursor=cox.newCursor(); + //System.err.println("Debut"); + //System.err.println(cursor.xmlText()); + + ArrayList<Object> listObj = new ArrayList<Object>(); + + while (cursor.hasNextToken()) { + cursor.toNextToken(); + //System.err.println(cursor.currentTokenType().intValue()==TokenType.INT_END); + Object current = cursor.getObject(); + if(current!=null) { + //System.err.println(current.getClass()); + + if (current.getClass()== + org.w3.unicorn.observationresponse.impl.LongmessageDocumentImpl.LongmessageImpl.class) { + break; + } + // Case : A + if (current.getClass()== + org.w3.unicorn.observationresponse.impl.ADocumentImpl.AImpl.class) { + org.w3.unicorn.observationresponse.ADocument.A + a = (org.w3.unicorn.observationresponse.ADocument.A) current; + listObj.add(a); +// We skip 3 tokens to forget about the inner text in the A tag. + //We don't want it in the object list + cursor.toNextToken(); + cursor.toNextToken(); + cursor.toNextToken(); + } + // Case : Code + if (current.getClass()== + org.w3.unicorn.observationresponse.impl.CodeDocumentImpl.CodeImpl.class) { + org.w3.unicorn.observationresponse.CodeDocument.Code code=(org.w3.unicorn.observationresponse.CodeDocument.Code) current; + + listObj.add(code); + } + // Case : Img + if (current.getClass()== + org.w3.unicorn.observationresponse.impl.ImgDocumentImpl.ImgImpl.class) { + org.w3.unicorn.observationresponse.ImgDocument.Img + img = (org.w3.unicorn.observationresponse.ImgDocument.Img) current; + listObj.add(img); + } + } + else if(cursor.isText()){ + listObj.add(cursor.getTextValue()); + } + + } + + + coy.setContent(swap(listObj, 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; + } else if (ox instanceof org.w3.unicorn.observationresponse.ImgDocument.Img) { + org.w3.unicorn.observationresponse.ImgDocument.Img cox = (org.w3.unicorn.observationresponse.ImgDocument.Img) ox; Img coy = new Img(); coy.setAlt(cox.getAlt()); coy.setHeight(cox.getHeight()); @@ -131,10 +223,63 @@ * @return The swapped message. */ private Longmessage swap( - org.w3c.unicorn.generated.observationresponse.Longmessage x, + org.w3.unicorn.observationresponse.LongmessageDocument.Longmessage x, String lang) { Longmessage y = new Longmessage(); - y.setContent(swap(x.getContent(), lang)); + XmlCursor cursor=x.newCursor(); + //System.err.println("Debut"); + //System.err.println(cursor.xmlText()); + + ArrayList<Object> listObj = new ArrayList<Object>(); + + while (cursor.hasNextToken()) { + cursor.toNextToken(); + //System.err.println(cursor.currentTokenType().intValue()==TokenType.INT_END); + Object current = cursor.getObject(); + if(current!=null) { + //System.err.println(current.getClass()); + + if (current.getClass()== + org.w3.unicorn.observationresponse.impl.LongmessageDocumentImpl.LongmessageImpl.class) { + break; + } + // Case : A + if (current.getClass()== + org.w3.unicorn.observationresponse.impl.ADocumentImpl.AImpl.class) { + org.w3.unicorn.observationresponse.ADocument.A + a = (org.w3.unicorn.observationresponse.ADocument.A) current; + listObj.add(a); + //We skip 3 tokens to forget about the inner text in the A tag. + //We don't want it in the object list + cursor.toNextToken(); + cursor.toNextToken(); + cursor.toNextToken(); + } + // Case : Code + if (current.getClass()== + org.w3.unicorn.observationresponse.impl.CodeDocumentImpl.CodeImpl.class) { + org.w3.unicorn.observationresponse.CodeDocument.Code code=(org.w3.unicorn.observationresponse.CodeDocument.Code) current; + + listObj.add(code); + } + // Case : Img + if (current.getClass()== + org.w3.unicorn.observationresponse.impl.ImgDocumentImpl.ImgImpl.class) { + org.w3.unicorn.observationresponse.ImgDocument.Img + img = (org.w3.unicorn.observationresponse.ImgDocument.Img) current; + listObj.add(img); + } + } + else if(cursor.isText()){ + listObj.add(cursor.getTextValue()); + } + + } + + //System.err.println("List : " + listObj); + //System.err.println("Fin"); + + y.setContent(swap(listObj, lang)); return y; } @@ -146,11 +291,11 @@ * @return The new list of localized messages. */ private List<Longmessage> swapListLongmessage( - List<org.w3c.unicorn.generated.observationresponse.Longmessage> x, + org.w3.unicorn.observationresponse.LongmessageDocument.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; + org.w3.unicorn.observationresponse.LongmessageDocument.Longmessage cox = (org.w3.unicorn.observationresponse.LongmessageDocument.Longmessage) ox; Longmessage coy = swap(cox, lang); y.add(coy); } @@ -164,14 +309,14 @@ * @return The swapped warning. */ private Warning swap( - org.w3c.unicorn.generated.observationresponse.Warning x, String lang) { + org.w3.unicorn.observationresponse.WarningDocument.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)); + y.setMessage(swapListMessage(x.getMessageArray(), lang)); + y.setLongmessage(swapListLongmessage(x.getLongmessageArray(), lang)); return y; } @@ -181,15 +326,15 @@ * @param lang The language of the error. * @return The swapped error. */ - private Error swap(org.w3c.unicorn.generated.observationresponse.Error x, + private Error swap(org.w3.unicorn.observationresponse.ErrorDocument.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)); + y.setMessage(swapListMessage(x.getMessageArray(), lang)); + y.setLongmessage(swapListLongmessage(x.getLongmessageArray(), lang)); return y; } @@ -199,14 +344,14 @@ * @param lang The language of the info. * @return The swapped info. */ - private Info swap(org.w3c.unicorn.generated.observationresponse.Info x, + private Info swap(org.w3.unicorn.observationresponse.InfoDocument.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)); + y.setMessage(swapListMessage(x.getMessageArray(), lang)); + y.setLongmessage(swapListLongmessage(x.getLongmessageArray(), lang)); return y; } @@ -216,51 +361,59 @@ * @param lang The language of the response. * @return The swapped response. */ - private Response swap(Observationresponse or) { + private Response swap(org.w3.unicorn.observationresponse.ObservationresponseDocument ord) { Response res = new Response(); + org.w3.unicorn.observationresponse.ObservationresponseDocument.Observationresponse or=ord.getObservationresponse(); res.setUri(or.getUri()); res.setCheckedby(or.getCheckedby()); res.setVersion(or.getVersion()); - res.setDate(or.getDate()); - res.setPassed(or.isPassed()); + XMLGregorianCalendar xmlGregorianCalendar; + try { + xmlGregorianCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar((GregorianCalendar)or.getDate()); + } catch (DatatypeConfigurationException e) { + e.printStackTrace(); + logger.error("DatatypeConfigurationException erreur de date : " + e.getMessage(), e); + return null; + } + or.setDate(Calendar.getInstance()); + res.setDate(xmlGregorianCalendar); + res.setPassed(or.getPassed()); // Fill res.result - org.w3c.unicorn.generated.observationresponse.Result rrr = or - .getResult(); + org.w3.unicorn.observationresponse.ResultDocument.Result rrr = or.getResult(); if (rrr != null) { - Warnings warnings = rrr.getWarnings(); - if (warnings != null && warnings.getWarninglist() != null) { - for (Warninglist wl : warnings.getWarninglist()) { + org.w3.unicorn.observationresponse.WarningsDocument.Warnings warnings = rrr.getWarnings(); + if (warnings != null && warnings.getWarninglistArray() != null) { + for (org.w3.unicorn.observationresponse.WarninglistDocument.Warninglist wl : warnings.getWarninglistArray()) { String lang = warnings.getLang(); Result r = new Result(lang, wl.getUri()); - for (org.w3c.unicorn.generated.observationresponse.Warning w : wl - .getWarning()) { + for (org.w3.unicorn.observationresponse.WarningDocument.Warning w : wl.getWarningArray()) { r.getWarnings().add(swap(w, lang)); } res.addResult(r); } } - Errors errors = rrr.getErrors(); - if (errors != null && errors.getErrorlist() != null) { - for (Errorlist wl : errors.getErrorlist()) { + org.w3.unicorn.observationresponse.ErrorsDocument.Errors errors = rrr.getErrors(); + if (errors != null && errors.getErrorlistArray() != null) { + for (org.w3.unicorn.observationresponse.ErrorlistDocument.Errorlist wl : errors.getErrorlistArray()) { String lang = errors.getLang(); Result r = new Result(errors.getLang(), wl.getUri()); - for (org.w3c.unicorn.generated.observationresponse.Error w : wl - .getError()) { + for (org.w3.unicorn.observationresponse.ErrorDocument.Error w : wl + .getErrorArray()) { r.getErrors().add(swap(w, lang)); } res.addResult(r); } } - Informations informations = rrr.getInformations(); - if (informations != null && informations.getInfolist() != null) { + org.w3.unicorn.observationresponse.InformationsDocument.Informations informations = rrr.getInformations(); + if (informations != null && informations.getInfolistArray() != null) { String lang = informations.getLang(); - for (Infolist wl : informations.getInfolist()) { + for (org.w3.unicorn.observationresponse.InfolistDocument.Infolist wl : informations.getInfolistArray()) { Result r = new Result(informations.getLang(), wl.getUri()); - for (org.w3c.unicorn.generated.observationresponse.Info w : wl - .getInfo()) { + for (org.w3.unicorn.observationresponse.InfoDocument.Info w : wl + .getInfoArray()) { r.getInfos().add(swap(w, lang)); } res.addResult(r);
Received on Thursday, 10 July 2008 14:50:30 UTC