Search in sources :

Example 36 with IMicroElement

use of com.helger.xml.microdom.IMicroElement in project ph-schematron by phax.

the class PSReader method readAssertReportFromXML.

/**
 * Read an <assert> or a <report> element
 *
 * @param eAssertReport
 *        The source micro element. Never <code>null</code>.
 * @return The created domain object. May not be <code>null</code>.
 */
@Nonnull
public PSAssertReport readAssertReportFromXML(@Nonnull final IMicroElement eAssertReport) {
    final PSAssertReport ret = new PSAssertReport(eAssertReport.getLocalName().equals(CSchematronXML.ELEMENT_ASSERT));
    final PSRichGroup aRichGroup = new PSRichGroup();
    final PSLinkableGroup aLinkableGroup = new PSLinkableGroup();
    eAssertReport.forAllAttributes((sNS, sAttrName, sVal) -> {
        final String sAttrValue = _getAttributeValue(sVal);
        if (sAttrName.equals(CSchematronXML.ATTR_TEST))
            ret.setTest(sAttrValue);
        else if (sAttrName.equals(CSchematronXML.ATTR_FLAG))
            ret.setFlag(sAttrValue);
        else if (sAttrName.equals(CSchematronXML.ATTR_ID))
            ret.setID(sAttrValue);
        else if (sAttrName.equals(CSchematronXML.ATTR_DIAGNOSTICS))
            ret.setDiagnostics(sAttrValue);
        else if (PSRichGroup.isRichAttribute(sAttrName))
            _handleRichGroup(sAttrName, sAttrValue, aRichGroup);
        else if (PSLinkableGroup.isLinkableAttribute(sAttrName))
            _handleLinkableGroup(sAttrName, sAttrValue, aLinkableGroup);
        else
            ret.addForeignAttribute(sAttrName, sAttrValue);
    });
    ret.setRich(aRichGroup);
    ret.setLinkable(aLinkableGroup);
    eAssertReport.forAllChildren(aAssertReportChild -> {
        switch(aAssertReportChild.getType()) {
            case TEXT:
                ret.addText(((IMicroText) aAssertReportChild).getNodeValue());
                break;
            case ELEMENT:
                final IMicroElement eElement = (IMicroElement) aAssertReportChild;
                if (CSchematron.NAMESPACE_SCHEMATRON.equals(eElement.getNamespaceURI())) {
                    final String sLocalName = eElement.getLocalName();
                    if (sLocalName.equals(CSchematronXML.ELEMENT_NAME))
                        ret.addName(readNameFromXML(eElement));
                    else if (sLocalName.equals(CSchematronXML.ELEMENT_VALUE_OF))
                        ret.addValueOf(readValueOfFromXML(eElement));
                    else if (sLocalName.equals(CSchematronXML.ELEMENT_EMPH))
                        ret.addEmph(readEmphFromXML(eElement));
                    else if (sLocalName.equals(CSchematronXML.ELEMENT_DIR))
                        ret.addDir(readDirFromXML(eElement));
                    else if (sLocalName.equals(CSchematronXML.ELEMENT_SPAN))
                        ret.addSpan(readSpanFromXML(eElement));
                    else
                        _warn(ret, "Unsupported Schematron element '" + sLocalName + "'");
                } else
                    ret.addForeignElement(eElement.getClone());
                break;
            case COMMENT:
                // Ignore comments
                break;
            default:
                _warn(ret, "Unsupported child node: " + aAssertReportChild);
        }
    });
    return ret;
}
Also used : IMicroElement(com.helger.xml.microdom.IMicroElement) Nonnull(javax.annotation.Nonnull)

Example 37 with IMicroElement

use of com.helger.xml.microdom.IMicroElement in project ph-schematron by phax.

the class PSReader method readDirFromXML.

/**
 * Read a &lt;dir&gt; element
 *
 * @param eDir
 *        The source micro element. Never <code>null</code>.
 * @return The created domain object. May not be <code>null</code>.
 */
@Nonnull
public PSDir readDirFromXML(@Nonnull final IMicroElement eDir) {
    final PSDir ret = new PSDir();
    eDir.forAllAttributes((sNS, sAttrName, sVal) -> {
        final String sAttrValue = _getAttributeValue(sVal);
        if (sAttrName.equals(CSchematronXML.ATTR_VALUE))
            ret.setValue(EDirValue.getFromIDOrNull(sAttrValue));
        else
            ret.addForeignAttribute(sAttrName, sAttrValue);
    });
    eDir.forAllChildren(aDirChild -> {
        switch(aDirChild.getType()) {
            case TEXT:
                ret.addText(((IMicroText) aDirChild).getNodeValue());
                break;
            case ELEMENT:
                final IMicroElement eElement = (IMicroElement) aDirChild;
                if (CSchematron.NAMESPACE_SCHEMATRON.equals(eElement.getNamespaceURI())) {
                    _warn(ret, "Unsupported Schematron element '" + eElement.getLocalName() + "'");
                } else
                    ret.addForeignElement(eElement.getClone());
                break;
            case COMMENT:
                // Ignore comments
                break;
            default:
                _warn(ret, "Unsupported child node: " + aDirChild);
        }
    });
    return ret;
}
Also used : IMicroElement(com.helger.xml.microdom.IMicroElement) Nonnull(javax.annotation.Nonnull)

Example 38 with IMicroElement

use of com.helger.xml.microdom.IMicroElement in project ph-schematron by phax.

the class PSReader method readEmphFromXML.

/**
 * Read an &lt;emph&gt; element
 *
 * @param eEmph
 *        The source micro element. Never <code>null</code>.
 * @return The created domain object. May not be <code>null</code>.
 */
@Nonnull
public PSEmph readEmphFromXML(@Nonnull final IMicroElement eEmph) {
    final PSEmph ret = new PSEmph();
    eEmph.forAllAttributes((sNS, sAttrName, sVal) -> {
        final String sAttrValue = _getAttributeValue(sVal);
        _warn(ret, "Unsupported attribute '" + sAttrName + "'='" + sAttrValue + "'");
    });
    eEmph.forAllChildren(aEmphChild -> {
        switch(aEmphChild.getType()) {
            case TEXT:
                ret.addText(((IMicroText) aEmphChild).getNodeValue());
                break;
            case ELEMENT:
                final IMicroElement eElement = (IMicroElement) aEmphChild;
                if (CSchematron.NAMESPACE_SCHEMATRON.equals(eElement.getNamespaceURI())) {
                    _warn(ret, "Unsupported Schematron element '" + eElement.getLocalName() + "'");
                } else
                    _warn(ret, "Unsupported namespace URI '" + eElement.getNamespaceURI() + "'");
                break;
            case COMMENT:
                // Ignore comments
                break;
            default:
                _warn(ret, "Unsupported child node: " + aEmphChild);
        }
    });
    return ret;
}
Also used : IMicroElement(com.helger.xml.microdom.IMicroElement) Nonnull(javax.annotation.Nonnull)

Example 39 with IMicroElement

use of com.helger.xml.microdom.IMicroElement in project as2-server by phax.

the class AS2ServerXMLSession method loadCommandProcessors.

protected void loadCommandProcessors(@Nonnull final IMicroElement aElement) throws OpenAS2Exception {
    final List<IMicroElement> aElements = aElement.getAllChildElements("commandProcessor");
    s_aLogger.info("  loading " + aElements.size() + " command processors");
    for (final IMicroElement processor : aElements) loadCommandProcessor(m_aCmdManager, processor);
}
Also used : IMicroElement(com.helger.xml.microdom.IMicroElement)

Example 40 with IMicroElement

use of com.helger.xml.microdom.IMicroElement in project as2-server by phax.

the class AS2ServerXMLSession method loadMessageProcessor.

protected void loadMessageProcessor(final IMicroElement eRootNode) throws OpenAS2Exception {
    s_aLogger.info("  loading message processor");
    final IMessageProcessor aMsgProcessor = AS2XMLHelper.createComponent(eRootNode, IMessageProcessor.class, this, m_sBaseDirectory);
    setMessageProcessor(aMsgProcessor);
    for (final IMicroElement eModule : eRootNode.getAllChildElements("module")) loadProcessorModule(aMsgProcessor, eModule);
}
Also used : IMicroElement(com.helger.xml.microdom.IMicroElement) IMessageProcessor(com.helger.as2lib.processor.IMessageProcessor)

Aggregations

IMicroElement (com.helger.xml.microdom.IMicroElement)41 Nonnull (javax.annotation.Nonnull)30 MicroElement (com.helger.xml.microdom.MicroElement)18 IMicroDocument (com.helger.xml.microdom.IMicroDocument)7 OpenAS2Exception (com.helger.as2lib.exception.OpenAS2Exception)3 IReadableResource (com.helger.commons.io.resource.IReadableResource)3 File (java.io.File)3 CommandResult (com.helger.as2.cmd.CommandResult)2 XMLPartnershipFactory (com.helger.as2lib.partner.xml.XMLPartnershipFactory)2 CommonsArrayList (com.helger.commons.collection.impl.CommonsArrayList)2 IMicroNode (com.helger.xml.microdom.IMicroNode)2 MicroDocument (com.helger.xml.microdom.MicroDocument)2 Partnership (com.helger.as2lib.partner.Partnership)1 Partner (com.helger.as2lib.partner.xml.Partner)1 IMessageProcessor (com.helger.as2lib.processor.IMessageProcessor)1 ValueEnforcer (com.helger.commons.ValueEnforcer)1 Nonempty (com.helger.commons.annotation.Nonempty)1 ICommonsList (com.helger.commons.collection.impl.ICommonsList)1 DefaultHierarchyVisitorCallback (com.helger.commons.hierarchy.visit.DefaultHierarchyVisitorCallback)1 EHierarchyVisitorReturn (com.helger.commons.hierarchy.visit.EHierarchyVisitorReturn)1