Example usage for org.w3c.dom Element getElementsByTagName

List of usage examples for org.w3c.dom Element getElementsByTagName

Introduction

In this page you can find the example usage for org.w3c.dom Element getElementsByTagName.

Prototype

public NodeList getElementsByTagName(String name);

Source Link

Document

Returns a NodeList of all descendant Elements with a given tag name, in document order.

Usage

From source file:es.juntadeandalucia.panelGestion.negocio.utiles.PanelSettings.java

private static void readTiposBaseDatosConfiguration(Document xmlConfiguration, XPath xpath)
        throws XPathExpressionException {

    tiposBaseDatos = new LinkedList<String>();

    Element doc = xmlConfiguration.getDocumentElement();
    NodeList databasetype_aux = doc.getElementsByTagName("databaseType");

    // iterate over the repositories
    for (int i = 0; i < databasetype_aux.getLength(); i++) {

        Node databaseTypeNode = databasetype_aux.item(i);

        if (databaseTypeNode instanceof Element) {
            Element databaseTypeElem = (Element) databaseTypeNode;

            // get alias and url from the repository node
            NodeList databaseTypeChildren = databaseTypeElem.getChildNodes();
            for (int a = 0; a < databaseTypeChildren.getLength(); a++) {

                Node childrenAux = databaseTypeChildren.item(a);
                if (childrenAux instanceof Element) {
                    Element childrenAuxElement = (Element) childrenAux;
                    if (childrenAuxElement.getNodeName().equals("name")) {
                        tiposBaseDatos.add(childrenAuxElement.getAttributeNode("value").getValue());
                    }//from   w ww  .j av a  2  s . c  om
                }
            }
        }

    }

}

From source file:es.juntadeandalucia.panelGestion.negocio.utiles.PanelSettings.java

private static void readDataBaseTypes(Document xmlConfiguration) {
    dataBaseTypes = new HashMap<String, Integer>();

    Element doc = xmlConfiguration.getDocumentElement();
    NodeList nodesDataBaseTypes = doc.getElementsByTagName("dataBaseType");

    // iterate over the data base types
    for (int i = 0; i < nodesDataBaseTypes.getLength(); i++) {
        // get the data base type node
        Node dataBaseType = nodesDataBaseTypes.item(i);

        if (dataBaseType instanceof Element) {
            Element dataBaseTypeElem = (Element) dataBaseType;

            String dataBaseTypeLabel = getStringNodeValue("label", dataBaseTypeElem);
            String sqlTypeStr = getStringNodeValue("sqlType", dataBaseTypeElem);
            Integer sqlType = null;
            if (!StringUtils.isEmpty(sqlTypeStr)) {
                Field typeField;/*  w  ww  .  j a va2 s  .  c o  m*/
                try {
                    typeField = Types.class.getDeclaredField(sqlTypeStr);
                    if (typeField != null) {
                        sqlType = typeField.getInt(null);
                    }
                } catch (SecurityException e) {
                    log.error(
                            "Error al intentar obtener los tipos de base de datos del fichero de configuracin: "
                                    + e.getLocalizedMessage());
                } catch (NoSuchFieldException e) {
                    log.error(
                            "Error al intentar obtener los tipos de base de datos del fichero de configuracin: "
                                    + e.getLocalizedMessage());
                } catch (IllegalArgumentException e) {
                    log.error(
                            "Error al intentar obtener los tipos de base de datos del fichero de configuracin: "
                                    + e.getLocalizedMessage());
                } catch (IllegalAccessException e) {
                    log.error(
                            "Error al intentar obtener los tipos de base de datos del fichero de configuracin: "
                                    + e.getLocalizedMessage());
                }
            }
            dataBaseTypes.put(dataBaseTypeLabel, sqlType);
        }
    }
}

From source file:es.juntadeandalucia.panelGestion.negocio.utiles.PanelSettings.java

private static void readMapeaConfiguration(Document xmlConfiguration) {
    mapeaUrl = null;// w  w w  . j a  v  a 2s. co m

    StringBuilder mapeaUrlConfigBuilder = new StringBuilder();

    Element doc = xmlConfiguration.getDocumentElement();

    // mapea node
    NodeList mapeaNodes = doc.getElementsByTagName("mapea");
    Node mapeaNode = mapeaNodes.item(0);
    NodeList mapeaChildNodes = mapeaNode.getChildNodes();

    // child nodes
    for (int i = 0; i < mapeaChildNodes.getLength(); i++) {
        Node mapeaChildNode = mapeaChildNodes.item(i);
        if (mapeaChildNode.getNodeType() == Node.ELEMENT_NODE) {
            String tagName = mapeaChildNode.getNodeName();
            if (!StringUtils.isEmpty(tagName)) {
                if ("url".equalsIgnoreCase(tagName)) {
                    mapeaUrl = ((Element) mapeaChildNode).getAttribute("value");
                    mapeaUrl = Utils.removeLastSlash(mapeaUrl);
                } else {
                    String tagValue = ((Element) mapeaChildNode).getAttribute("value");
                    mapeaUrlConfigBuilder.append(tagName).append("=").append(tagValue);
                    mapeaUrlConfigBuilder.append("&");
                }
            }
        }
    }

    // removes last &
    mapeaUrlConfigBuilder.deleteCharAt(mapeaUrlConfigBuilder.length() - 1);

    mapeaUrl += mapeaUrlConfigBuilder.toString();
}

From source file:fr.iphc.grid.jobmonitor.CeList.java

public static void BilanCe(String OutDir, ArrayList<URL> serviceURL, String TableSql)
        throws ParserConfigurationException, SAXException, IOException, DOMException, ParseException {
    File directory = new File(OutDir);
    ArrayList<CeDefinition> bilan = new ArrayList<CeDefinition>();
    Iterator<URL> i = serviceURL.iterator();

    //      XPathExpression expr = null;
    Document doc = null;// w  w w. j  a v a  2 s. com
    CeDefinition ce = null;
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    while (i.hasNext()) {
        URL url = i.next();
        String file = url.getHost() + "_" + url.getPath().replaceAll("/cream-", "");
        File entry = new File(directory, file + ".out");
        if (entry.exists()) {
            doc = builder.parse(entry);
            ce = new CeDefinition();
            doc.getDocumentElement().normalize();
            NodeList nList = doc.getElementsByTagName("CeHost");
            SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);
            for (int temp = 0; temp < nList.getLength(); temp++) {
                Node nNode = nList.item(temp);
                if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                    Element eElement = (Element) nNode;
                    ce.setDate(
                            dateFormat.parse(eElement.getElementsByTagName("Start").item(0).getTextContent()));
                    // System.out.println("Start : " +
                    // eElement.getElementsByTagName("Start").item(0).getTextContent());
                    ce.setCe(eElement.getElementsByTagName("Ce").item(0).getTextContent());
                    ce.setPath(eElement.getElementsByTagName("Path").item(0).getTextContent());
                    ce.setJobid(eElement.getElementsByTagName("Jobid").item(0).getTextContent());
                    ce.setState(eElement.getElementsByTagName("Status").item(0).getTextContent());
                    ce.setTemps(
                            Integer.parseInt(eElement.getElementsByTagName("Time").item(0).getTextContent()));
                    ce.setMsg(eElement.getElementsByTagName("Desc").item(0).getTextContent());
                }
            }
            if (ce != null)
                bilan.add(ce);
        }
        entry = new File(directory, file + ".err");
        if (entry.exists()) {
            doc = builder.parse(entry);
            ce = new CeDefinition();
            doc.getDocumentElement().normalize();
            NodeList nList = doc.getElementsByTagName("CeHost");
            SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);
            for (int temp = 0; temp < nList.getLength(); temp++) {
                Node nNode = nList.item(temp);
                if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                    Element eElement = (Element) nNode;
                    ce.setDate(
                            dateFormat.parse(eElement.getElementsByTagName("Start").item(0).getTextContent()));
                    ce.setCe(eElement.getElementsByTagName("Ce").item(0).getTextContent());
                    ce.setPath(eElement.getElementsByTagName("Path").item(0).getTextContent());
                    ce.setState(eElement.getElementsByTagName("Status").item(0).getTextContent());
                    ce.setTemps(
                            Integer.parseInt(eElement.getElementsByTagName("Time").item(0).getTextContent()));
                    ce.setMsg(eElement.getElementsByTagName("Desc").item(0).getTextContent());
                }
            }
            if (ce != null)
                bilan.add(ce);
        }
        entry = new File(directory, file + ".lock");
        ce = new CeDefinition();
        if (entry.exists()) {
            doc = builder.parse(entry);
            ce = new CeDefinition();
            doc.getDocumentElement().normalize();
            NodeList nList = doc.getElementsByTagName("CeHost");
            SimpleDateFormat dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);
            for (int temp = 0; temp < nList.getLength(); temp++) {
                Node nNode = nList.item(temp);
                if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                    Element eElement = (Element) nNode;
                    ce.setDate(
                            dateFormat.parse(eElement.getElementsByTagName("Start").item(0).getTextContent()));
                    ce.setCe(eElement.getElementsByTagName("Ce").item(0).getTextContent());
                    ce.setPath(eElement.getElementsByTagName("Path").item(0).getTextContent());
                    ce.setState(eElement.getElementsByTagName("Status").item(0).getTextContent());
                    ce.setTemps(
                            Integer.parseInt(eElement.getElementsByTagName("Time").item(0).getTextContent()));
                    ce.setMsg(eElement.getElementsByTagName("Desc").item(0).getTextContent());
                }
            }
            if (ce != null)
                bilan.add(ce);
        }
    }
    MySQLAccess sql = new MySQLAccess();
    sql.connectDataBase();
    Iterator<CeDefinition> k = bilan.iterator();
    while (k.hasNext()) {
        ce = k.next();
        // System.out.println(ce.getCe() + "\t" + ce.getPath() + "\t" +
        // ce.getDate()
        // + "\t" + ce.getState() + "\t" + ce.getTemps() + "\t" +
        // ce.getMsg()
        // + "\t" + ce.getImplementation());
        sql.writeDataBase(ce, TableSql);
    }
    sql.closeDataBase();
}

From source file:fll.web.admin.UploadSubjectiveData.java

/**
 * Add any judges to the database that are referenced in the score file that
 * aren't already in the database./*from  w w  w .ja  v a  2s .  co m*/
 */
private static void addMissingJudges(final Connection connection, final int tournamentId,
        final Document scoreDocument) throws SQLException {

    PreparedStatement insertJudge = null;
    try {
        insertJudge = connection
                .prepareStatement("INSERT INTO Judges (id, category, Tournament, station) VALUES (?, ?, ?, ?)");
        insertJudge.setInt(3, tournamentId);

        final Collection<JudgeInformation> currentJudges = JudgeInformation.getJudges(connection, tournamentId);

        final Element scoresElement = scoreDocument.getDocumentElement();

        for (final Element scoreCategoryNode : new NodelistElementCollectionAdapter(
                scoresElement.getChildNodes())) {
            final Element scoreCategoryElement = scoreCategoryNode; // "subjectiveCategory"
            final String categoryName = scoreCategoryElement.getAttribute("name");

            for (final Element scoreElement : new NodelistElementCollectionAdapter(
                    scoreCategoryElement.getElementsByTagName("score"))) {
                final String judgeId = scoreElement.getAttribute("judge");
                final String station = scoreElement.getAttribute("judging_station");
                final JudgeInformation judge = new JudgeInformation(judgeId, categoryName, station);
                if (!doesJudgeExist(currentJudges, judge)) {
                    // add judge
                    insertJudge.setString(1, judge.getId());
                    insertJudge.setString(2, judge.getCategory());
                    insertJudge.setString(4, judge.getGroup());
                    insertJudge.executeUpdate();

                    currentJudges.add(judge);
                }
            } // foreach score
        } // foreach category

    } finally {
        SQLFunctions.close(insertJudge);
    }

}

From source file:es.juntadeandalucia.panelGestion.negocio.utiles.PanelSettings.java

private static void readGeoserverConfiguration(Document xmlConfiguration, XPath xpath)
        throws XPathExpressionException {

    geoservers = new LinkedList<GeoserverVO>();

    Element doc = xmlConfiguration.getDocumentElement();
    NodeList geoserver_aux = doc.getElementsByTagName("geoserver");

    // iterate over the repositories
    for (int i = 0; i < geoserver_aux.getLength(); i++) {

        GeoserverVO geoserverAux = new GeoserverVO();

        Node geoserverNode = geoserver_aux.item(i);

        if (geoserverNode instanceof Element) {
            Element geoserverElem = (Element) geoserverNode;

            // get alias and url from the repository node
            NodeList geoserverChildren = geoserverElem.getChildNodes();
            for (int a = 0; a < geoserverChildren.getLength(); a++) {

                Node childrenAux = geoserverChildren.item(a);
                if (childrenAux instanceof Element) {
                    Element childrenAuxElement = (Element) childrenAux;
                    if (childrenAuxElement.getNodeName().equals("url")) {
                        geoserverAux.setGeoserverUrl(
                                Utils.removeLastSlash(childrenAuxElement.getAttributeNode("value").getValue()));
                    }/*  w  w  w  . ja  v  a 2s  .c  om*/
                    if (childrenAuxElement.getNodeName().equals("user")) {
                        geoserverAux.setGeoserverUser(childrenAuxElement.getAttributeNode("value").getValue());
                    }
                    if (childrenAuxElement.getNodeName().equals("password")) {
                        geoserverAux
                                .setGeoserverPassword(childrenAuxElement.getAttributeNode("value").getValue());
                    }
                    if (childrenAuxElement.getNodeName().equals("version")) {
                        NodeList childrenListVersionAux = childrenAuxElement.getChildNodes();
                        for (int b = 0; b < childrenListVersionAux.getLength(); b++) {
                            Node childrenVersionAux = childrenListVersionAux.item(b);
                            if (childrenVersionAux instanceof Element) {
                                Element childrenElementVersionAux = (Element) childrenVersionAux;
                                if (childrenElementVersionAux.getNodeName().equals("wms")) {
                                    geoserverAux.setGeoserverWMSVersion(
                                            childrenElementVersionAux.getAttributeNode("value").getValue());
                                }
                                if (childrenElementVersionAux.getNodeName().equals("wfs")) {
                                    geoserverAux.setGeoserverWFSVersion(
                                            childrenElementVersionAux.getAttributeNode("value").getValue());
                                }
                            }
                        }

                    }

                }

            }
            geoservers.add(geoserverAux);
        }

    }

}

From source file:es.juntadeandalucia.panelGestion.negocio.utiles.PanelSettings.java

private static void readTaskConfiguration(Document xmlConfiguration) {
    taskProgressInterval = null;//from w  ww .  jav  a  2  s.  co m
    taskLinesToSave = null;

    Element doc = xmlConfiguration.getDocumentElement();

    // task progress interval
    NodeList taskProgressIntervalNodes = doc.getElementsByTagName("progressInterval");
    Node taskProgressIntervalNode = taskProgressIntervalNodes.item(0);
    if (taskProgressIntervalNode instanceof Element) {
        Element taskProgressIntervalElement = (Element) taskProgressIntervalNode;
        String taskProgressIntervalValue = taskProgressIntervalElement.getAttribute("value");
        if (!StringUtils.isEmpty(taskProgressIntervalValue)) {
            taskProgressInterval = Integer.parseInt(taskProgressIntervalValue);
        }
    }

    // task lines to save
    NodeList taskLinesToSaveNodes = doc.getElementsByTagName("linesToSave");
    Node taskLinesToSaveNode = taskLinesToSaveNodes.item(0);
    if (taskLinesToSaveNode instanceof Element) {
        Element taskLinesToSaveElement = (Element) taskLinesToSaveNode;
        String linesToSaveValue = taskLinesToSaveElement.getAttribute("value");
        if (!StringUtils.isEmpty(linesToSaveValue)) {
            taskLinesToSave = Integer.parseInt(linesToSaveValue);
        }
    }
}

From source file:org.openiot.gsn.utils.GSNMonitor.java

public static void parseXML(String s) {
    try {/*from   w w  w. j  a  v a 2s . c o m*/

        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
        InputSource inputSource = new InputSource();
        inputSource.setCharacterStream(new StringReader(s));

        Document document = documentBuilder.parse(inputSource);
        NodeList nodes = document.getElementsByTagName("virtual-sensor");

        for (int i = 0; i < nodes.getLength(); i++) {
            Element element = (Element) nodes.item(i);

            String sensor_name = element.getAttribute("name");

            if (!sensorsUpdateDelay.containsKey(sensor_name))
                continue; // skip sensors that are not monitored

            logger.warn("Sensor: " + sensor_name);

            NodeList listOfField = element.getElementsByTagName("field");
            for (int j = 0; j < listOfField.getLength(); j++) {
                Element line = (Element) listOfField.item(j);

                if (line.getAttribute("name").indexOf("timed") >= 0) {
                    String last_updated_as_string = line.getTextContent();

                    try {
                        Long last_updated_as_Long = GregorianCalendar.getInstance().getTimeInMillis()
                                - VSensorMonitorConfig.datetime2timestamp(last_updated_as_string);
                        logger.warn(new StringBuilder(last_updated_as_string).append(" => ")
                                .append(VSensorMonitorConfig.ms2dhms(last_updated_as_Long)).toString());

                        sensorsUpdateDelay.put(sensor_name, last_updated_as_Long);
                    } catch (ParseException e) {
                        errorsBuffer.append("Last update time for sensor ").append(sensor_name)
                                .append(" cannot be read. Error while parsing > ")
                                .append(last_updated_as_string).append(" <\n");
                    }
                }
            }
        }
    } catch (Exception e) {
        logger.warn("Exception while parsing XML\n");
        e.printStackTrace();
    }
}

From source file:eu.stork.peps.configuration.ConfigurationReader.java

/**
 * Read configuration./* w  w w . j av  a2s  .  c  o m*/
 * 
 * @return the map< string, instance engine>
 * 
 * @throws SAMLEngineException the STORKSAML engine runtime
 *             exception
 */
public static Map<String, InstanceEngine> readConfiguration() throws SAMLEngineException {

    // fetch base from system properties, give a default if there is nothing configured
    String base = System.getProperty("eu.stork.samlengine.config.location");
    if (null != base)
        if (!base.endsWith("/"))
            base += "/";

    LOGGER.info("Init reader: " + base + ENGINE_CONF_FILE);
    final Map<String, InstanceEngine> instanceConfs = new HashMap<String, InstanceEngine>();

    Document document = null;
    // Load configuration file
    final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder;

    InputStream engineConf = null;
    try {

        factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);

        builder = factory.newDocumentBuilder();

        if (null != base)
            engineConf = new FileInputStream(base + ENGINE_CONF_FILE);
        else
            engineConf = ConfigurationReader.class.getResourceAsStream("/" + ENGINE_CONF_FILE);

        document = builder.parse(engineConf);

        // Read instance
        final NodeList list = document.getElementsByTagName(NODE_INSTANCE);

        for (int indexElem = 0; indexElem < list.getLength(); ++indexElem) {
            final Element element = (Element) list.item(indexElem);

            final InstanceEngine instanceConf = new InstanceEngine();

            // read every configuration.
            final String instanceName = element.getAttribute(NODE_INST_NAME);

            if (StringUtils.isBlank(instanceName)) {
                throw new STORKSAMLEngineRuntimeException("Error reader instance name.");
            }
            instanceConf.setName(instanceName.trim());

            final NodeList confNodes = element.getElementsByTagName(NODE_CONF);

            for (int indexNode = 0; indexNode < confNodes.getLength(); ++indexNode) {

                final Element configurationNode = (Element) confNodes.item(indexNode);

                final String configurationName = configurationNode.getAttribute(NODE_CONF_NAME);

                if (StringUtils.isBlank(configurationName)) {
                    throw new STORKSAMLEngineRuntimeException("Error reader configuration name.");
                }

                final ConfigurationEngine confSamlEngine = new ConfigurationEngine();

                // Set configuration name.
                confSamlEngine.setName(configurationName.trim());

                // Read every parameter for this configuration.
                final Map<String, String> parameters = generateParam(configurationNode);

                // Set parameters
                confSamlEngine.setParameters(parameters);

                // Add parameters to the configuration.
                instanceConf.getConfiguration().add(confSamlEngine);
            }

            // Add to the list of configurations.
            instanceConfs.put(element.getAttribute(NODE_INST_NAME), instanceConf);
        }

    } catch (SAXException e) {
        LOGGER.error("Error: init library parser.");
        throw new SAMLEngineException(e);
    } catch (ParserConfigurationException e) {
        LOGGER.error("Error: parser configuration file xml.");
        throw new SAMLEngineException(e);
    } catch (IOException e) {
        LOGGER.error("Error: read configuration file.");
        throw new SAMLEngineException(e);
    } finally {
        IOUtils.closeQuietly(engineConf);
    }

    return instanceConfs;
}

From source file:com.fujitsu.dc.common.auth.token.TransCellAccessToken.java

/**
 * TransCellAccessToken????.//from  w ww.  j  a va2 s.c o  m
 * @param token 
 * @return TransCellAccessToken(?)
 * @throws AbstractOAuth2Token.TokenParseException ?
 * @throws AbstractOAuth2Token.TokenDsigException ???
 * @throws AbstractOAuth2Token.TokenRootCrtException CA?
 */
public static TransCellAccessToken parse(final String token) throws AbstractOAuth2Token.TokenParseException,
        AbstractOAuth2Token.TokenDsigException, AbstractOAuth2Token.TokenRootCrtException {
    try {
        byte[] samlBytes = DcCoreUtils.decodeBase64Url(token);
        ByteArrayInputStream bais = new ByteArrayInputStream(samlBytes);
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        dbf.setNamespaceAware(true);
        DocumentBuilder builder = null;
        try {
            builder = dbf.newDocumentBuilder();
        } catch (ParserConfigurationException e) {
            // ????????????
            throw new RuntimeException(e);
        }

        Document doc = builder.parse(bais);

        Element assertion = doc.getDocumentElement();
        Element issuer = (Element) (doc.getElementsByTagName("Issuer").item(0));
        Element subject = (Element) (assertion.getElementsByTagName("Subject").item(0));
        Element subjectNameID = (Element) (subject.getElementsByTagName("NameID").item(0));
        String id = assertion.getAttribute("ID");
        String issuedAtStr = assertion.getAttribute("IssueInstant");

        DateTime dt = new DateTime(issuedAtStr);

        NodeList audienceList = assertion.getElementsByTagName("Audience");
        Element aud1 = (Element) (audienceList.item(0));
        String target = aud1.getTextContent();
        String schema = null;
        if (audienceList.getLength() > 1) {
            Element aud2 = (Element) (audienceList.item(1));
            schema = aud2.getTextContent();
        }

        List<Role> roles = new ArrayList<Role>();
        NodeList attrList = assertion.getElementsByTagName("AttributeValue");
        for (int i = 0; i < attrList.getLength(); i++) {
            Element attv = (Element) (attrList.item(i));
            roles.add(new Role(new URL(attv.getTextContent())));
        }

        NodeList nl = assertion.getElementsByTagName("Signature");
        if (nl.getLength() == 0) {
            throw new TokenParseException("Cannot find Signature element");
        }
        Element signatureElement = (Element) nl.item(0);

        // ???????TokenDsigException??
        // Create a DOMValidateContext and specify a KeySelector
        // and document context.
        X509KeySelector x509KeySelector = new X509KeySelector(issuer.getTextContent());
        DOMValidateContext valContext = new DOMValidateContext(x509KeySelector, signatureElement);

        // Unmarshal the XMLSignature.
        XMLSignature signature;
        try {
            signature = xmlSignatureFactory.unmarshalXMLSignature(valContext);
        } catch (MarshalException e) {
            throw new TokenDsigException(e.getMessage(), e);
        }

        // CA??
        try {
            x509KeySelector.readRoot(x509RootCertificateFileNames);
        } catch (CertificateException e) {
            // CA????????500
            throw new TokenRootCrtException(e.getMessage(), e);
        }

        // Validate the XMLSignature x509.
        boolean coreValidity;
        try {
            coreValidity = signature.validate(valContext);
        } catch (XMLSignatureException e) {
            if (e.getCause().getClass() == new KeySelectorException().getClass()) {
                throw new TokenDsigException(e.getCause().getMessage(), e.getCause());
            }
            throw new TokenDsigException(e.getMessage(), e);
        }

        // http://www.w3.org/TR/xmldsig-core/#sec-CoreValidation

        // Check core validation status.
        if (!coreValidity) {
            // ??
            boolean isDsigValid;
            try {
                isDsigValid = signature.getSignatureValue().validate(valContext);
            } catch (XMLSignatureException e) {
                throw new TokenDsigException(e.getMessage(), e);
            }
            if (!isDsigValid) {
                throw new TokenDsigException("Failed signature validation");
            }

            // 
            Iterator i = signature.getSignedInfo().getReferences().iterator();
            for (int j = 0; i.hasNext(); j++) {
                boolean refValid;
                try {
                    refValid = ((Reference) i.next()).validate(valContext);
                } catch (XMLSignatureException e) {
                    throw new TokenDsigException(e.getMessage(), e);
                }
                if (!refValid) {
                    throw new TokenDsigException("Failed to validate reference [" + j + "]");
                }
            }
            throw new TokenDsigException("Signature failed core validation. unkwnon reason.");
        }
        return new TransCellAccessToken(id, dt.getMillis(), issuer.getTextContent(),
                subjectNameID.getTextContent(), target, roles, schema);
    } catch (UnsupportedEncodingException e) {
        throw new TokenParseException(e.getMessage(), e);
    } catch (SAXException e) {
        throw new TokenParseException(e.getMessage(), e);
    } catch (IOException e) {
        throw new TokenParseException(e.getMessage(), e);
    }
}