org.jdom2.Document Java Examples

The following examples show how to use org.jdom2.Document. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: MCRPIXPathMetadataService.java    From mycore with GNU General Public License v3.0 6 votes vote down vote up
@Override
public void insertIdentifier(MCRPersistentIdentifier identifier, MCRBase obj, String additional)
    throws MCRPersistentIdentifierException {
    String xpath = getProperties().get("Xpath");
    Document xml = obj.createXML();
    MCRNodeBuilder nb = new MCRNodeBuilder();
    try {
        nb.buildElement(xpath, identifier.asString(), xml);
        if (obj instanceof MCRObject) {
            final Element metadata = xml.getRootElement().getChild("metadata");
            ((MCRObject) obj).getMetadata().setFromDOM(metadata);
        } else {
            throw new MCRPersistentIdentifierException(obj.getId() + " is no MCRObject!",
                new OperationNotSupportedException(getClass().getName() + " only supports "
                    + MCRObject.class.getName() + "!"));
        }

    } catch (Exception e) {
        throw new MCRException("Error while inscribing PI to " + obj.getId(), e);

    }
}
 
Example #2
Source File: TestParseXML.java    From yawl with GNU Lesser General Public License v3.0 6 votes vote down vote up
public void testparseXML(){

        Document doc = JDOMUtil.fileToDocument("c:/temp/resourcing2.xml") ;
        Element resElem = doc.getRootElement();

        ResourceMap rMap = new ResourceMap("null") ;
        rMap.parse(resElem);

        String s = rMap.getOfferInteraction().toXML();
        System.out.println(s) ;

        s = rMap.getAllocateInteraction().toXML();
        System.out.println(s) ;

        s = rMap.getStartInteraction().toXML();
        System.out.println(s) ;

        s = rMap.getTaskPrivileges().toXML();
        System.out.println(s) ;
    }
 
Example #3
Source File: MCRChangeTrackerTest.java    From mycore with GNU General Public License v3.0 6 votes vote down vote up
@Test
public void testAddElement() throws JaxenException {
    Document doc = new Document(new MCRNodeBuilder().buildElement("document[title][title[2]]", null, null));
    MCRChangeTracker tracker = new MCRChangeTracker();

    Element title = new Element("title");
    doc.getRootElement().getChildren().add(1, title);
    assertEquals(3, doc.getRootElement().getChildren().size());
    assertTrue(doc.getRootElement().getChildren().contains(title));

    tracker.track(MCRAddedElement.added(title));
    tracker.undoChanges(doc);

    assertEquals(2, doc.getRootElement().getChildren().size());
    assertFalse(doc.getRootElement().getChildren().contains(title));
}
 
Example #4
Source File: MCRXMLHelperTest.java    From mycore with GNU General Public License v3.0 6 votes vote down vote up
@Test
public void jsonSerialize() throws Exception {
    // simple text
    Element e = new Element("hallo").setText("Hallo Welt");
    JsonObject json = MCRXMLHelper.jsonSerialize(e);
    assertEquals("Hallo Welt", json.getAsJsonPrimitive("$text").getAsString());
    // attribute
    e = new Element("hallo").setAttribute("hallo", "welt");
    json = MCRXMLHelper.jsonSerialize(e);
    assertEquals("welt", json.getAsJsonPrimitive("_hallo").getAsString());

    // complex world class test
    URL world = MCRXMLHelperTest.class.getResource("/worldclass.xml");
    SAXBuilder builder = new SAXBuilder();
    Document worldDocument = builder.build(world.openStream());
    json = MCRXMLHelper.jsonSerialize(worldDocument.getRootElement());
    assertNotNull(json);
    assertEquals("World", json.getAsJsonPrimitive("_ID").getAsString());
    assertEquals("http://www.w3.org/2001/XMLSchema-instance", json.getAsJsonPrimitive("_xmlns:xsi").getAsString());
    JsonObject deLabel = json.getAsJsonArray("label").get(0).getAsJsonObject();
    assertEquals("de", deLabel.getAsJsonPrimitive("_xml:lang").getAsString());
    assertEquals("Staaten", deLabel.getAsJsonPrimitive("_text").getAsString());
    assertEquals(2, json.getAsJsonObject("categories").getAsJsonArray("category").size());
}
 
Example #5
Source File: FeatureDatasetCapabilitiesWriter.java    From netcdf-java with BSD 3-Clause "New" or "Revised" License 6 votes vote down vote up
public static LatLonRect getSpatialExtent(Document doc) {
  Element root = doc.getRootElement();
  Element latlonBox = root.getChild("LatLonBox");
  if (latlonBox == null)
    return null;

  String westS = latlonBox.getChildText("west");
  String eastS = latlonBox.getChildText("east");
  String northS = latlonBox.getChildText("north");
  String southS = latlonBox.getChildText("south");
  if ((westS == null) || (eastS == null) || (northS == null) || (southS == null))
    return null;

  try {
    double west = Double.parseDouble(westS);
    double east = Double.parseDouble(eastS);
    double south = Double.parseDouble(southS);
    double north = Double.parseDouble(northS);
    return new LatLonRect(LatLonPoint.create(south, east), LatLonPoint.create(north, west));

  } catch (Exception e) {
    return null;
  }
}
 
Example #6
Source File: MCRChangeTrackerTest.java    From mycore with GNU General Public License v3.0 6 votes vote down vote up
@Test
public void testSwapElements() throws JaxenException {
    Element root = new MCRNodeBuilder().buildElement("parent[name='a'][note][foo][name[2]='b'][note[2]]", null,
        null);
    Document doc = new Document(root);

    assertEquals("a", root.getChildren().get(0).getText());
    assertEquals("b", root.getChildren().get(3).getText());

    MCRChangeTracker tracker = new MCRChangeTracker();
    tracker.track(MCRSwapElements.swap(root, 0, 3));

    assertEquals("b", root.getChildren().get(0).getText());
    assertEquals("a", root.getChildren().get(3).getText());

    tracker.undoChanges(doc);

    assertEquals("a", root.getChildren().get(0).getText());
    assertEquals("b", root.getChildren().get(3).getText());
}
 
Example #7
Source File: NameGenPanel.java    From pcgen with GNU Lesser General Public License v2.1 6 votes vote down vote up
private void loadFromDocument(Document nameSet) throws DataConversionException
{
	Element generator = nameSet.getRootElement();
	java.util.List<?> rulesets = generator.getChildren("RULESET");
	java.util.List<?> lists = generator.getChildren("LIST");
	ListIterator<?> listIterator = lists.listIterator();

	while (listIterator.hasNext())
	{
		Element list = (Element) listIterator.next();
		loadList(list);
	}

	for (final Object ruleset : rulesets)
	{
		Element ruleSet = (Element) ruleset;
		RuleSet rs = loadRuleSet(ruleSet);
		allVars.addDataElement(rs);
	}
}
 
Example #8
Source File: MCRSwapInsertTargetTest.java    From mycore with GNU General Public License v3.0 6 votes vote down vote up
@Test
public void testCloneInsertParam() throws JaxenException, JDOMException {
    String x = "mods:mods[mods:name[@type='personal']='p1'][mods:name[@type='personal'][2]='p2'][mods:name[@type='corporate']='c1']";
    Element template = new MCRNodeBuilder().buildElement(x, null, null);
    Document doc = new Document(template);
    MCRBinding root = new MCRBinding(doc);

    MCRRepeatBinding repeat = new MCRRepeatBinding("mods:mods/mods:name[@type='personal']", root, 2, 10, "clone");
    repeat.bindRepeatPosition();
    String insertParam = MCRInsertTarget.getInsertParameter(repeat);
    assertEquals("/mods:mods|1|clone|mods:name[(@type = \"personal\")]", insertParam);
    repeat.detach();

    new MCRInsertTarget().handle(insertParam, root);
    repeat = new MCRRepeatBinding("mods:mods/mods:name[@type='personal']", root, 1, 10, "build");
    assertEquals(3, repeat.getBoundNodes().size());
    assertEquals("p1", ((Element) (repeat.getBoundNodes().get(0))).getText());
    assertEquals("p1", ((Element) (repeat.getBoundNodes().get(1))).getText());
    assertEquals("name", ((Element) (repeat.getBoundNodes().get(1))).getName());
    assertEquals("personal", ((Element) (repeat.getBoundNodes().get(1))).getAttributeValue("type"));
    assertEquals("p2", ((Element) (repeat.getBoundNodes().get(2))).getText());
}
 
Example #9
Source File: CommandSnippetXmlParser.java    From gocd with Apache License 2.0 6 votes vote down vote up
public CommandSnippet parse(String xmlContent, String fileName, String relativeFilePath) {
    try {
        Document document = buildXmlDocument(xmlContent, CommandSnippet.class.getResource("command-snippet.xsd"));
        CommandSnippetComment comment = getComment(document);

        Element execTag = document.getRootElement();
        String commandName = execTag.getAttributeValue("command");
        List<String> arguments = new ArrayList<>();
        for (Object child : execTag.getChildren()) {
            Element element = (Element) child;
            arguments.add(element.getValue());
        }
        return new CommandSnippet(commandName, arguments, comment, fileName, relativeFilePath);
    } catch (Exception e) {
        String errorMessage = String.format("Reason: %s", e.getMessage());
        LOGGER.info("Could not load command '{}'. {}", fileName, errorMessage);
        return CommandSnippet.invalid(fileName, errorMessage, new EmptySnippetComment());
    }
}
 
Example #10
Source File: TestWSIFInvoker.java    From yawl with GNU Lesser General Public License v3.0 6 votes vote down vote up
public void testGetQuote() {
        HashMap map = null;
        try {
            Document doc = _builder.build(new StringReader("<data><input>NAB.AX</input></data>"));
            map = WSIFInvoker.invokeMethod(
                    "http://services.xmethods.net/soap/urn:xmethods-delayed-quotes.wsdl",
                    "", "getQuote",
                    doc.getRootElement(),
                    _authconfig);
        } catch (Exception e) {
            e.printStackTrace();
        }
//        System.out.println("map = " + map);
        assertTrue(map.size() == 1);
        assertTrue(map.toString(), map.containsKey("Result"));
    }
 
Example #11
Source File: DataMapper.java    From yawl with GNU Lesser General Public License v3.0 6 votes vote down vote up
/**
 * Get all RUPs from the database that start after "from" and end before
 * "to". Allow for specifying a set of Yawl case Ids that are to be excluded
 * from the result. Also, it is possible to select only RUPs that are active.
 * 
 * @author jku, tbe
 * @param from
 * @param to
 * @param yCaseIdsToExclude
 * @param activeOnly
 * @return List<Case> all cases with RUPs that meet the selection criteria
 */
public List<Case> getRupsByInterval(Date from, Date to,
                                  List<String> yCaseIdsToExclude, boolean activeOnly) {

       if (yCaseIdsToExclude == null) yCaseIdsToExclude = new ArrayList<String>();
       List<Case> caseList = new ArrayList<Case>();
       for (Case c : getAllRups()) {
           if ((activeOnly && (! c.isActive())) || yCaseIdsToExclude.contains(c.getCaseId())) {
               continue;
           }
           Document rup = c.getRUP();
           long fromTime = getTime(rup, "//Activity/From");
           long toTime = getTime(rup, "//Activity/To");
           if ((fromTime > -1) && (toTime > -1) && (fromTime >= from.getTime()) && 
                   (toTime <= to.getTime())) {
               caseList.add(c);
           }
       }
       return caseList;
}
 
Example #12
Source File: XMLUtil.java    From PoseidonX with Apache License 2.0 6 votes vote down vote up
public static List readNodeStore(InputStream in) {
    List<Element> returnElement=new LinkedList<Element>();
    try {
        boolean validate = false;
        SAXBuilder builder = new SAXBuilder(validate);
        Document doc = builder.build(in);
        Element root = doc.getRootElement();
        // 获取根节点 <university>
        for(Element  element: root.getChildren()){
            List<Element> childElement= element.getChildren();
            for(Element tmpele:childElement){
                returnElement.add(tmpele);
            }

        }
        return returnElement;
        //readNode(root, "");
    } catch (Exception e) {
        LOGGER.error(e.getMessage(),e);
    }
    return returnElement;
}
 
Example #13
Source File: PlayableRegionModule.java    From ProjectAres with GNU Affero General Public License v3.0 5 votes vote down vote up
public static PlayableRegionModule parse(MapModuleContext context, Logger log, Document doc) throws InvalidXMLException {
    Element playableRegionElement = doc.getRootElement().getChild("playable");
    if(playableRegionElement != null) {
        return new PlayableRegionModule(context.needModule(RegionParser.class).property(playableRegionElement).legacy().union());
    }
    return null;
}
 
Example #14
Source File: MCRWCMSUtil.java    From mycore with GNU General Public License v3.0 5 votes vote down vote up
/**
 * Converts the navigation.xml to the old format.
 */
private static byte[] convertToOldFormat(byte[] xml) throws JDOMException, IOException {
    SAXBuilder builder = new SAXBuilder();
    Document doc = builder.build(new ByteArrayInputStream(xml));
    Element rootElement = doc.getRootElement();
    rootElement.setAttribute("href", rootElement.getName());
    List<Element> children = rootElement.getChildren();
    for (Element menu : children) {
        String id = menu.getAttributeValue("id");
        menu.setName(id);
        menu.setAttribute("href", id);
        menu.removeAttribute("id");
    }
    XMLOutputter out = new XMLOutputter(Format.getPrettyFormat());
    ByteArrayOutputStream bout = new ByteArrayOutputStream(xml.length);
    out.output(doc, bout);
    return bout.toByteArray();
}
 
Example #15
Source File: MCRXSLTransformationTest.java    From mycore with GNU General Public License v3.0 5 votes vote down vote up
@Test
public void transform() {
    Element root = new Element("root");
    Document in = new Document(root);
    root.addContent(new Element("child").setAttribute("hasChildren", "no"));
    Document out = MCRXSLTransformation.transform(in, stylesheet.getAbsolutePath());
    assertTrue("Input not the same as Output", MCRXMLHelper.deepEqual(in, out));
}
 
Example #16
Source File: MCRDefaultAltoChangeApplier.java    From mycore with GNU General Public License v3.0 5 votes vote down vote up
private Document readALTO(MCRPath altoFilePath) {
    try (InputStream inputStream = Files.newInputStream(altoFilePath, StandardOpenOption.READ)) {
        return new SAXBuilder().build(inputStream);
    } catch (JDOMException | IOException e) {
        throw new MCRException(e);
    }
}
 
Example #17
Source File: CatalogBuilder.java    From netcdf-java with BSD 3-Clause "New" or "Revised" License 5 votes vote down vote up
private Element readMetadataFromUrl(java.net.URI uri) throws java.io.IOException {
  SAXBuilder saxBuilder = new SAXBuilder();
  Document doc;
  try {
    doc = saxBuilder.build(uri.toURL());
  } catch (Exception e) {
    throw new IOException(e.getMessage());
  }
  return doc.getRootElement();
}
 
Example #18
Source File: ComplexityMetric.java    From yawl with GNU Lesser General Public License v3.0 5 votes vote down vote up
public double getWeightedUDTCount(Document doc) {
    double weight = Config.getUDTComplexityWeight();
    if (doc == null || weight <= 0) return 0;
    Element root = doc.getRootElement();
    Element spec = root.getChild("specification", YAWL_NAMESPACE);
    Element dataSchema = spec.getChild("schema", XSD_NAMESPACE);
    return dataSchema.getChildren().size() * weight;
}
 
Example #19
Source File: MCRDerivate.java    From mycore with GNU General Public License v3.0 5 votes vote down vote up
/**
 * This methode create a XML stream for all object data.
 * 
 * @exception MCRException
 *                if the content of this class is not valid
 * @return a JDOM Document with the XML data of the object as byte array
 */
@Override
public Document createXML() throws MCRException {
    Document doc = super.createXML();
    Element elm = doc.getRootElement();
    elm.setAttribute("order", String.valueOf(order));
    elm.addContent(mcrDerivate.createXML());
    elm.addContent(mcrService.createXML());
    return doc;
}
 
Example #20
Source File: NmasResponseSet.java    From ldapchai with GNU Lesser General Public License v2.1 5 votes vote down vote up
static ChallengeSet parseNmasUserResponseXML( final String str )
        throws IOException, JDOMException, ChaiValidationException
{
    final List<Challenge> returnList = new ArrayList<Challenge>();

    final Reader xmlreader = new StringReader( str );
    final SAXBuilder builder = new SAXBuilder();
    final Document doc = builder.build( xmlreader );

    final Element rootElement = doc.getRootElement();
    final int minRandom = StringHelper.convertStrToInt( rootElement.getAttributeValue( "RandomQuestions" ), 0 );

    final String guidValue;
    {
        final Attribute guidAttribute = rootElement.getAttribute( "GUID" );
        guidValue = guidAttribute == null ? null : guidAttribute.getValue();
    }

    for ( Iterator iter = doc.getDescendants( new ElementFilter( "Challenge" ) ); iter.hasNext(); )
    {
        final Element loopQ = ( Element ) iter.next();
        final int maxLength = StringHelper.convertStrToInt( loopQ.getAttributeValue( "MaxLength" ), 255 );
        final int minLength = StringHelper.convertStrToInt( loopQ.getAttributeValue( "MinLength" ), 2 );
        final String defineStrValue = loopQ.getAttributeValue( "Define" );
        final boolean adminDefined = "Admin".equalsIgnoreCase( defineStrValue );
        final String typeStrValue = loopQ.getAttributeValue( "Type" );
        final boolean required = "Required".equalsIgnoreCase( typeStrValue );
        final String challengeText = loopQ.getText();

        final Challenge challenge = new ChaiChallenge( required, challengeText, minLength, maxLength, adminDefined, 0, false );
        returnList.add( challenge );
    }

    return new ChaiChallengeSet( returnList, minRandom, null, guidValue );
}
 
Example #21
Source File: TimeLimitModule.java    From ProjectAres with GNU Affero General Public License v3.0 5 votes vote down vote up
@Override
public TimeLimitModule parse(MapModuleContext context, Logger logger, Document doc) throws InvalidXMLException {
    TimeLimitDefinition timeLimit = parseTimeLimit(doc.getRootElement());
    timeLimit = parseLegacyTimeLimit(context, doc.getRootElement(), "score", timeLimit);
    timeLimit = parseLegacyTimeLimit(context, doc.getRootElement(), "blitz", timeLimit);

    // TimeLimitModule always loads
    return new TimeLimitModule(timeLimit);
}
 
Example #22
Source File: ComplexityMetric.java    From yawl with GNU Lesser General Public License v3.0 5 votes vote down vote up
public double getWeightedResourceCount(Document doc) {
    double weight = Config.getResourcingComplexityWeight();
    if (doc == null || weight <= 0) return 0;
    List<Element> elementList = JDOMUtil.selectElementList(
            doc, "//yawl:role", YAWL_NAMESPACE);
    return elementList.size() + weight;
}
 
Example #23
Source File: XmlBuilder.java    From iaf with Apache License 2.0 5 votes vote down vote up
public String toXML(boolean xmlHeader) {
	Document document = new Document(element.detach());
	XMLOutputter xmlOutputter = new XMLOutputter();
	xmlOutputter.setFormat(
			Format.getPrettyFormat().setOmitDeclaration(!xmlHeader));
	return xmlOutputter.outputString(document);
}
 
Example #24
Source File: JDOMUtil.java    From emissary with Apache License 2.0 5 votes vote down vote up
/**
 * creates a JDOM document from the InputSource
 *
 * @param is an XML document in an InputSource
 * @param filter an XMLFilter to receive callbacks during processing
 * @param validate if true, XML should be validated
 * @return the JDOM representation of that XML document
 */
public static Document createDocument(final InputSource is, final XMLFilter filter, final boolean validate) throws JDOMException {
    final SAXBuilder builder = createSAXBuilder(validate);
    if (filter != null) {
        builder.setXMLFilter(filter);
    }

    try {
        return builder.build(is);
    } catch (IOException iox) {
        throw new JDOMException("Could not parse document: " + iox.getMessage(), iox);
    }
}
 
Example #25
Source File: PointConfigXML.java    From netcdf-java with BSD 3-Clause "New" or "Revised" License 5 votes vote down vote up
/**
 * Create an XML document from this info
 *
 * @return netcdfDatasetInfo XML document
 */
public Document makeDocument() {
  Element rootElem = new Element("pointConfig");
  Document doc = new Document(rootElem);
  if (tableConfigurerClass != null)
    rootElem.addContent(new Element("tableConfigurer").setAttribute("class", tableConfigurerClass));
  if (tc.featureType != null)
    rootElem.setAttribute("featureType", tc.featureType.toString());

  rootElem.addContent(writeTable(tc));

  return doc;
}
 
Example #26
Source File: XMLUtil.java    From jframe with Apache License 2.0 5 votes vote down vote up
@SuppressWarnings({ "rawtypes", "unchecked" })
public static Map doXMLParse(String strxml) throws JDOMException,
        IOException {
    strxml = strxml.replaceFirst("encoding=\".*\"", "encoding=\"UTF-8\"");

    if (null == strxml || "".equals(strxml)) {
        return null;
    }

    Map m = new HashMap();

    InputStream in = new ByteArrayInputStream(strxml.getBytes("UTF-8"));
    SAXBuilder builder = new SAXBuilder();
    Document doc = builder.build(in);
    Element root = doc.getRootElement();
    List list = root.getChildren();
    Iterator it = list.iterator();
    while (it.hasNext()) {
        Element e = (Element) it.next();
        String k = e.getName();
        String v = "";
        List children = e.getChildren();
        if (children.isEmpty()) {
            v = e.getTextNormalize();
        } else {
            v = XMLUtil.getChildrenText(children);
        }

        m.put(k, v);
    }

    in.close();

    return m;
}
 
Example #27
Source File: DescribeCoverage.java    From tds with BSD 3-Clause "New" or "Revised" License 5 votes vote down vote up
Document generateDescribeCoverageDoc() {
  // CoverageDescription (wcs) [1]
  Element coverageDescriptionsElem = new Element("CoverageDescription", wcsNS);
  coverageDescriptionsElem.addNamespaceDeclaration(gmlNS);
  coverageDescriptionsElem.addNamespaceDeclaration(xlinkNS);
  coverageDescriptionsElem.setAttribute("version", this.getVersion());
  // ToDo Consider dealing with "updateSequence"
  // coverageDescriptionsElem.setAttribute( "updateSequence", this.getCurrentUpdateSequence() );

  for (String curCoverageId : this.coverages)
    coverageDescriptionsElem.addContent(genCoverageOfferingElem(curCoverageId));

  return new Document(coverageDescriptionsElem);
}
 
Example #28
Source File: MCRAccessCommands.java    From mycore with GNU General Public License v3.0 5 votes vote down vote up
private static Element getRuleFromFile(String fileName) throws Exception {
    if (!checkFilename(fileName)) {
        LOGGER.warn("Wrong file format or file doesn't exist");
        return null;
    }
    Document ruleDom = MCRXMLParserFactory.getParser().parseXML(new MCRFileContent(fileName));
    Element rule = ruleDom.getRootElement();
    if (!rule.getName().equals("condition")) {
        LOGGER.warn("ROOT element is not valid, a valid rule would be for example:");
        LOGGER.warn("<condition format=\"xml\"><boolean operator=\"true\" /></condition>");
        return null;
    }
    return rule;
}
 
Example #29
Source File: FeatureDatasetCapabilitiesWriter.java    From netcdf-java with BSD 3-Clause "New" or "Revised" License 5 votes vote down vote up
public static String getAltUnits(Document doc) {
  Element root = doc.getRootElement();
  String altUnits = root.getChildText("AltitudeUnits");
  if (altUnits == null || altUnits.isEmpty())
    return null;
  return altUnits;
}
 
Example #30
Source File: YNetRunner.java    From yawl with GNU Lesser General Public License v3.0 5 votes vote down vote up
private synchronized void processCompletedSubnet(YPersistenceManager pmgr,
                                                 YIdentifier caseIDForSubnet,
                                                 YCompositeTask busyCompositeTask,
                                                 Document rawSubnetData)
        throws YDataStateException, YStateException, YQueryException,
        YPersistenceException {

    _logger.debug("--> processCompletedSubnet");

    if (caseIDForSubnet == null) throw new RuntimeException();

    if (busyCompositeTask.t_complete(pmgr, caseIDForSubnet, rawSubnetData)) {
        _busyTasks.remove(busyCompositeTask);
        if (pmgr != null) pmgr.updateObject(this);
        logCompletingTask(caseIDForSubnet, busyCompositeTask);

        //check to see if completing this task resulted in completing the net.
        if (endOfNetReached()) {
            if (_containingCompositeTask != null) {
                YNetRunner parentRunner = _engine.getNetRunner(_caseIDForNet.getParent());
                if ((parentRunner != null) && _containingCompositeTask.t_isBusy()) {
                    parentRunner.setEngine(_engine);           // added to avoid NPE
                    Document dataDoc = _net.usesSimpleRootData() ?
                                _net.getInternalDataDocument() :
                                _net.getOutputData() ;
                    parentRunner.processCompletedSubnet(pmgr, _caseIDForNet,
                                _containingCompositeTask, dataDoc);
                }
            }
        }
        kick(pmgr);
    }
    _logger.debug("<-- processCompletedSubnet");
}