private NodeList getValueNodes(Node operation) { List<Node> valueNL = getChildNodes(operation, "value"); if (valueNL.isEmpty()) { return null; } return valueNL.get(0).getChildNodes(); }
public AlbumBean[] getResult() { synchronized (libraryList) { AlbumBean[] res; res = libraryList.toArray(new AlbumBean[libraryList.size()]); return res; } }
/** * @param expected the expected value * @param typeAdapter the body adapter for the cell * @param formatter the formatter * @param minLenForToggle the value determining whether the content should be rendered as a * collapseable section. * @return the formatted content for a cell with a wrong expectation */ public static String makeContentForWrongCell( String expected, RestDataTypeAdapter typeAdapter, CellFormatter<?> formatter, int minLenForToggle) { StringBuffer sb = new StringBuffer(); sb.append(Tools.toHtml(expected)); if (formatter.isDisplayActual()) { sb.append(toHtml("\n")); sb.append(formatter.label("expected")); String actual = typeAdapter.toString(); sb.append(toHtml("-----")); sb.append(toHtml("\n")); if (minLenForToggle >= 0 && actual.length() > minLenForToggle) { sb.append(makeToggleCollapseable("toggle actual", toHtml(actual))); } else { sb.append(toHtml(actual)); } sb.append(toHtml("\n")); sb.append(formatter.label("actual")); } List<String> errors = typeAdapter.getErrors(); if (errors.size() > 0) { sb.append(toHtml("-----")); sb.append(toHtml("\n")); for (String e : errors) { sb.append(toHtml(e + "\n")); } sb.append(toHtml("\n")); sb.append(formatter.label("errors")); } return sb.toString(); }
private SignatureData getFromCmsSignature( SignatureVerificationRequest signatureVerificationRequest, SignatureVerificationResponse response) throws CMSException { String signature = signatureVerificationRequest.getSignature(); byte[] decoded = Base64.decode(signature); CMSSignedData cmsSignedData = new CMSSignedData(decoded); String encodedSignedData = new String((byte[]) cmsSignedData.getSignedContent().getContent()); // Fetch information about the issuers List<String> certInfos = new ArrayList<String>(); Collection certificates = cmsSignedData.getCertificates().getMatches(null); for (Object certificate : certificates) { X509CertificateHolder holder = (X509CertificateHolder) certificate; certInfos.add(holder.getSubject().toString()); CertificateInfo ci = new CertificateInfo(); ci.setSubjectDn(holder.getSubject().toString()); ci.setValidTo(simpleDateFormat.format(holder.getNotAfter())); response.getCertificateInfos().getCertificateInfo().add(ci); } // Fetch timestamp Date signingDate = findTimestamp(cmsSignedData); String dateString = simpleDateFormat.format(signingDate); response.setSignatureDate(dateString); // Create the SignatureData to be verified SignatureData signData = new SignatureData(); signData.setEncodedTbs(encodedSignedData); signData.setSignature(signature); ELegType clientType = new ELegType("test", "test", PkiClient.NETMAKER_NETID_4); signData.setClientType(clientType); return signData; }
private List<Node> getChildNodes(Node parentNode, String tagName) { List<Node> nodeList = new ArrayList<Node>(); for (Node child = parentNode.getFirstChild(); child != null; child = child.getNextSibling()) { if (child.getNodeType() == Node.ELEMENT_NODE && tagName.equals(child.getNodeName())) { nodeList.add(child); } } return nodeList; }
public EvaluationResult evaluate(List<Evaluatable> inputs, EvaluationCtx context) { // Evaluate the arguments AttributeValue[] argValues = new AttributeValue[inputs.size()]; EvaluationResult result = evalArgs(inputs, context, argValues); if (result != null) { return result; } switch (getFunctionId()) { case ID_XPATH_NODE_COUNT: { XPathAttribute xpathAttribute = ((XPathAttribute) argValues[0]); String xpathValue = xpathAttribute.getValue(); String category = xpathAttribute.getXPathCategory(); Node contextNode = null; // this must be XACML 3 Set<Attributes> attributesSet = ((XACML3EvaluationCtx) context).getAttributes(category); if (attributesSet != null) { // only one attributes can be there Attributes attributes = attributesSet.iterator().next(); contextNode = attributes.getContent(); } if (contextNode != null) { // now apply XPath try { NodeList nodeList = getXPathResults(contextNode, xpathValue); return new EvaluationResult(new IntegerAttribute(nodeList.getLength())); } catch (XPathExpressionException e) { List<String> codes = new ArrayList<String>(); codes.add(Status.STATUS_SYNTAX_ERROR); Status status = new Status(codes, e.getMessage()); return new EvaluationResult(status); } } } case ID_XPATH_NODE_EQUAL: { // TODO } } List<String> codes = new ArrayList<String>(); codes.add(Status.STATUS_SYNTAX_ERROR); Status status = new Status(codes, "Not supported function"); return new EvaluationResult(status); }
public void updateBean(AlbumBean newBean, AlbumBean oldBean) throws LibraryException { synchronized (libraryList) { // Find the bean int index = libraryList.indexOf(oldBean); if (index == -1) { LibraryException le = new LibraryException(Utils.getResourceString(ERROR_BEAN_NOT_FOUND)); throw le; } // Set the new bean libraryList.set(index, newBean); setChanged(); fireLibraryChangeEvent( new LibraryChangeEvent(this, new AlbumBean[] {oldBean}, LibraryChangeEvent.UPDATE)); } }
public List<String> payloadAsLines() { List<String> lines = new ArrayList<String>(); BufferedReader in; try { String line; in = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(payload))); while ((line = in.readLine()) != null) { lines.add(line); } in.close(); } catch (IOException e) { log.error("Error reading objects", e); } return lines; }
private AlbumBean addOrUpdateAlbum( Map<Integer, AlbumBean> map, SongBean song, boolean albumOnly) { // Add an album bean if (song != null && song.getAlbum() != null) { int hashCode = (song.getAlbum() + (albumOnly ? "" : '\uFFFF' + song.getArtist())).hashCode(); // Check if the album beam already exists AlbumBean album = map.get(hashCode); if (album == null) { album = new AlbumBean(); album.setAlbum(song.getAlbum()); map.put(hashCode, album); } // Update the album properties try { // Add the track id to the album bean album.addSong(song); album.incTracks(); album.setArtist(song.getArtist()); album.setGenre(song.getGenre()); album.setDisc_Count(song.getDisc_Count()); } catch (LibraryException le) { // There was an error adding the song to this album, remove it map.remove(hashCode); // Add to warning message warningList.add(song.getName() + " " + le); } return album; } return null; }
private static void assertEqualList(List<?> a, Collection<?> b) { if (a.size() == b.size()) { for (Object x : a) { if (!b.contains(x)) throw new AssertionFailedError("expected:<" + a + "> but was: <" + b + ">"); } return; } throw new AssertionFailedError("expected:<" + a + "> but was: <" + b + ">"); }
private NodeList findNodes(Document doc, Node operation) { List<Node> xpaths = getChildNodes(operation, "xpath"); if (xpaths.isEmpty()) { return null; } String xpathExpression = xpaths.get(0).getTextContent(); if (xpathExpression == null) { return null; } XPathFactory xPathfactory = XPathFactory.newInstance(); XPath xpath = xPathfactory.newXPath(); NodeList nl = null; try { XPathExpression expr = xpath.compile(xpathExpression); nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET); } catch (XPathExpressionException ex) { Utils.onError(new Error.WrongXpathExpression(xpathExpression)); } return nl; }
public PageManifestDef read(FileScope fileScope, Document document, PageManifestDef pmd) throws XPathExpressionException { this.fileScope = fileScope; XmlUtils.iterateSubElements( document, resourcesExpr, e -> pmd.addResourceSet(readResourcesDefinition(e))); XmlUtils.iterateSubElements( document, fragmentsExpr, e -> pmd.addFragments(readFragmentDefinition(e))); XmlUtils.iterateSubElements(document, viewsExpr, e -> pmd.addView(readViewDefinition(e))); List<String> imports = XmlUtils.getSingleAttrNodes( document, importsExpr, "file", "import tag must contain file attribute"); imports .stream() .forEach( i -> XMLPageManifestLoader.this.readPageDefinitionFile( fileScope.getRelativePath(i), pmd)); return pmd; }
private void processApply(Node operation) throws ParserConfigurationException, TransformerConfigurationException { List<Node> targets = getChildNodes(operation, "target"); List<Node> scripts = getChildNodes(operation, "script"); for (int t = 0; t < targets.size(); t++) { String path = absolutePath(targets.get(t).getTextContent()); NodeList[] operations = new NodeList[scripts.size()]; for (int s = 0; s < scripts.size(); s++) { operations[s] = scripts.get(s).getChildNodes(); } apply(path, operations); } }
/** Given an input string, level, and optionally a tag length, find a matching prefix. */ private PrefixMatch findPrefixMatch( String input, TagLengthList tagLength, LevelTypeList level_type) { List<PrefixMatch> match_list = new ArrayList<PrefixMatch>(); PrefixTree<PrefixMatch> tree = prefix_tree_map.get(level_type); assert tree != null; List<PrefixMatch> list = tree.search(input); if (!list.isEmpty()) { if (tagLength == null) match_list.addAll(list); else { for (PrefixMatch match : list) if (match.getScheme().getTagLength() == tagLength) match_list.add(match); } } if (match_list.isEmpty()) throw new TDTException("No schemes or levels matched the input value"); else if (match_list.size() > 1) throw new TDTException("More than one scheme/level matched the input value"); else return match_list.get(0); }
@Override protected void readAll(List<Address> members, String clustername, Responses responses) { try { List<String> objects = swiftClient.listObjects(container); for (String object : objects) { List<PingData> list = null; byte[] bytes = swiftClient.readObject(container, object); if ((list = read(new ByteArrayInputStream(bytes))) == null) { log.warn("failed reading " + object); continue; } for (PingData data : list) { if (members == null || members.contains(data.getAddress())) responses.addResponse(data, data.isCoord()); if (local_addr != null && !local_addr.equals(data.getAddress())) addDiscoveryResponseToCaches( data.getAddress(), data.getLogicalName(), data.getPhysicalAddr()); } } } catch (Exception e) { log.error("Error unmarshalling object", e); } }
private void processCopy(Node operation) { List<Node> fromNode = getChildNodes(operation, "from"); List<Node> toNode = getChildNodes(operation, "to"); if (fromNode.isEmpty() || toNode.isEmpty()) { return; } String path = fromNode.get(0).getTextContent(); String fromPath = (new File(path).isAbsolute()) ? path : absolutePath(path); String toPath = absolutePath(toNode.get(0).getTextContent()); Boolean copyContents = fromPath.endsWith(File.separator + "*"); File from = new File((copyContents) ? fromPath.substring(0, fromPath.length() - 2) : fromPath); File to = new File(toPath); if (!from.exists()) { Utils.onError(new Error.FileNotFound(from.getPath())); return; } try { if (copyContents) { FileUtils.forceMkdir(to); FileUtils.copyDirectory(from, to); } else if (from.isDirectory()) { FileUtils.forceMkdir(to); FileUtils.copyDirectoryToDirectory(from, to); } else { if (to.isDirectory()) { FileUtils.forceMkdir(to); FileUtils.copyFileToDirectory(from, to); } else { File toDir = new File(Utils.getParentDir(to)); FileUtils.forceMkdir(toDir); FileUtils.copyFile(from, to); } } } catch (IOException ex) { Utils.onError(new Error.FileCopy(from.getPath(), to.getPath())); } }
public void parseStartup(File file) { Logger.getLogger(com.bombdiggity.amazon.ec2.install.Installer.class) .info((new StringBuilder("InstallParser.parseStartup: ")).append(file).toString()); try { Document doc = loadFile(file); if (doc != null) { XPathFactory factory = XMLUtils.newXPathFactory(); XPath xpath = factory.newXPath(); String rootXPath = "/Startup/Commands/*"; Element root = doc.getDocumentElement(); XPathExpression rootExp = xpath.compile(rootXPath); NodeList streamList = (NodeList) rootExp.evaluate(root, XPathConstants.NODESET); if (streamList != null) { for (int i = 0; i < streamList.getLength(); i++) { Node streamNode = streamList.item(i); Element streamElem = (Element) streamNode; if (streamElem.getNodeName().toLowerCase().equals("install")) { String packageName = null; String folderPath = null; for (Node child = streamNode.getFirstChild(); child != null; child = child.getNextSibling()) if (child.getNodeName().toLowerCase().equals("package")) packageName = XMLUtils.getNodeValue(child).trim(); else if (child.getNodeName().toLowerCase().equals("folder")) folderPath = XMLUtils.getNodeValue(child).trim(); if (packageName != null) InstallCommands.installPackage(session, packageName); else if (folderPath != null) InstallCommands.installFolder(session, folderPath); else Logger.getLogger(com.bombdiggity.amazon.ec2.install.InstallParser.class) .error("StartupParser.loadFile: <Install>: <Package> or <Folder> required"); } else if (streamElem.getNodeName().toLowerCase().equals("download")) { String url = null; String method = "get"; String data = null; String destination = "/opt"; String action = null; List headers = new ArrayList(); for (Node child = streamNode.getFirstChild(); child != null; child = child.getNextSibling()) if (child.getNodeName().toLowerCase().equals("url")) url = XMLUtils.getNodeValue(child).trim(); else if (child.getNodeName().toLowerCase().equals("method")) method = XMLUtils.getNodeValue(child).toLowerCase().trim(); else if (child.getNodeName().toLowerCase().equals("data")) data = XMLUtils.getNodeValue(child).trim(); else if (child.getNodeName().toLowerCase().equals("destination")) destination = XMLUtils.getNodeValue(child).trim(); else if (child.getNodeName().toLowerCase().equals("action")) action = XMLUtils.getNodeValue(child).toLowerCase().trim(); else if (child.getNodeName().toLowerCase().equals("header")) { Node nameNode = XMLUtils.getNodeByTagName((Element) child, "Name"); Node valueNode = XMLUtils.getNodeByTagName((Element) child, "Value"); if (nameNode != null && valueNode != null) { Map namePair = new HashMap(); namePair.put( XMLUtils.getNodeValue(nameNode).trim(), XMLUtils.getNodeValue(valueNode).trim()); headers.add(namePair); } else { Logger.getLogger(com.bombdiggity.amazon.ec2.install.InstallParser.class) .error( "StartupParser.loadFile: <Download/Header>: <Name> and <Value> required"); } } if (url != null && destination != null) InstallCommands.downloadFile( session, url, method, data, headers, destination, action); else Logger.getLogger(com.bombdiggity.amazon.ec2.install.InstallParser.class) .error("StartupParser.loadFile: <Download>: <URL> and <Destination> required"); } else if (streamElem.getNodeName().toLowerCase().equals("s3fetch")) { String awsAccessKeyId = null; String awsSecretAccessKey = null; String bucket = null; String key = null; String destination = null; String action = null; for (Node child = streamNode.getFirstChild(); child != null; child = child.getNextSibling()) if (child.getNodeName().toLowerCase().equals("awsaccesskeyid")) awsAccessKeyId = XMLUtils.getNodeValue(child).trim(); else if (child.getNodeName().toLowerCase().equals("awssecretaccesskey")) awsSecretAccessKey = XMLUtils.getNodeValue(child).trim(); else if (child.getNodeName().toLowerCase().equals("bucket")) bucket = XMLUtils.getNodeValue(child).trim(); else if (child.getNodeName().toLowerCase().equals("key")) key = XMLUtils.getNodeValue(child).trim(); else if (child.getNodeName().toLowerCase().equals("destination")) destination = XMLUtils.getNodeValue(child).trim(); else if (child.getNodeName().toLowerCase().equals("action")) action = XMLUtils.getNodeValue(child).toLowerCase().trim(); if (awsAccessKeyId != null && awsSecretAccessKey != null && bucket != null && key != null && destination != null) InstallCommands.fetchFile( session, awsAccessKeyId, awsSecretAccessKey, bucket, key, destination, action); else Logger.getLogger(com.bombdiggity.amazon.ec2.install.InstallParser.class) .error( "StartupParser.loadFile: <Fetch>: <AWSAccessKeyId>, <AWSSecretAccessKey>, <Bucket>, <Key> and <Destination> required"); } else if (streamElem.getNodeName().toLowerCase().equals("runscript")) { String script = null; List params = new ArrayList(); for (Node child = streamNode.getFirstChild(); child != null; child = child.getNextSibling()) if (child.getNodeName().toLowerCase().equals("script")) script = XMLUtils.getNodeValue(child).trim(); else if (child.getNodeName().toLowerCase().equals("param")) { String param = XMLUtils.getNodeValue(child).trim(); params.add(param); } if (script != null) InstallCommands.runScript(session, script, params); else Logger.getLogger(com.bombdiggity.amazon.ec2.install.InstallParser.class) .error("StartupParser.loadFile: <RunScript>: <Script> required"); } } } } } catch (Exception e) { Logger.getLogger(com.bombdiggity.amazon.ec2.install.InstallParser.class) .error( (new StringBuilder("InstallParser.parseStartup: ")).append(e.toString()).toString()); e.printStackTrace(); } }
protected Document parse(InputStream inputStream) throws LibraryException { Map<Integer, SongBean> songMap = new HashMap<Integer, SongBean>(); Map<Integer, AlbumBean> albumMap = new HashMap<Integer, AlbumBean>(); Map<Integer, AlbumBean> secondaryAlbumMap = new HashMap<Integer, AlbumBean>(); warningList.clear(); try { // Create a builder factory DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(false); factory.setNamespaceAware(true); factory.setIgnoringElementContentWhitespace(true); factory.setIgnoringComments(true); // Create the builder and parse the file DocumentBuilder builder = factory.newDocumentBuilder(); // Set an error listener and parse the document builder.setErrorHandler(new iTradeTunesLibraryErrorHandler()); builder.setEntityResolver(new iTradeTunesLibraryResolver()); Document document = builder.parse(inputStream); synchronized (libraryList) { // Query the library document and build the library list XPath xPath = XPathFactory.newInstance().newXPath(); XPathExpression xPathExpression = xPath.compile(XPATH_LIBRARY_LIST); NodeList nodelist = (NodeList) xPathExpression.evaluate(document, XPathConstants.NODESET); // Process the elements in the nodelist SongBean song = null; for (int i = 0; i < nodelist.getLength(); i++) { boolean isTrackID = false; // Get element and child nodes Element elem = (Element) nodelist.item(i); NodeList list = elem.getChildNodes(); // Get node value Node childKey = list.item(0); String key = childKey.getNodeValue(); // Check if we have to create a new bean if (SongBean.NAME_TRACK_ID.equals(key)) { isTrackID = true; SongBean previousSong = song; song = new SongBean(); if (previousSong != null && !("AAC audio file".equals(previousSong.getKind()) || "MPEG audio file".equals(previousSong.getKind()))) { songMap.remove(previousSong.getTrack_ID()); } else { // Add an album bean addOrUpdateAlbum(albumMap, previousSong, false); } } // The first parameter is the key String prop = childKey.getNodeValue().replace(' ', '_'); // The second parameter is the value i++; // Get element and child nodes elem = (Element) nodelist.item(i); // Check for boolean properties Object value = null; // Get node value list = elem.getChildNodes(); childKey = list.item(0); value = (childKey == null) ? elem.getNodeName() : childKey.getNodeValue(); if (isTrackID) { isTrackID = false; } // Set the property of the song bean Statement stmt = new Statement(song, "set" + prop, new Object[] {value}); try { stmt.execute(); } catch (Exception e) { // Ignore that field, we do not have it in our bean } // If the property is the track ID, add the song to the hash // map if (SongBean.NAME_TRACK_ID.equals(key)) { int trackID = Integer.valueOf((String) value); songMap.put(trackID, song); } } // Update album for last song addOrUpdateAlbum(albumMap, song, false); // Check the album map for inconsistencies Iterator<AlbumBean> albums = albumMap.values().iterator(); while (albums.hasNext()) { AlbumBean album = albums.next(); if (album.checkConsistency()) { libraryList.add(album); album.setHashCode(); } else { // Add an inconsistent album only using the album title SongBean[] songs = album.getSongs(); for (int i = 0; i < songs.length; i++) { addOrUpdateAlbum(secondaryAlbumMap, songs[i], true); } } } // Check secondary album map for consistency albums = secondaryAlbumMap.values().iterator(); while (albums.hasNext()) { AlbumBean album = albums.next(); if (album.checkConsistency()) { libraryList.add(album); album.setHashCode(); } else { // This album cannot be matched // TODO: Add to warning message } } setChanged(); } return document; } catch (IOException ioe) { // Log an expected connect exception throw new LibraryException(ioe); } catch (SAXException se) { // Catch all other exceptions throw new LibraryException(se); } catch (ParserConfigurationException pce) { // Catch all other exceptions Utils.logSevere(pce); throw new LibraryException(pce); } catch (XPathExpressionException xpe) { // Catch all other exceptions Utils.logSevere(xpe); throw new LibraryException(xpe); } catch (NumberFormatException nfe) { // Catch all other exceptions throw new LibraryException(nfe); } }
public int getCount() { synchronized (libraryList) { return libraryList.size(); } }
private void processTxt(Node operation) { List<Node> targets = getChildNodes(operation, "target"); List<Node> optionNodes = getChildNodes(operation, "opt"); List<Node> separatorNode = getChildNodes(operation, "separator"); if (targets.isEmpty() || optionNodes.isEmpty()) { return; } String defaultSeparator = "="; String globalSeparator = defaultSeparator; if (!separatorNode.isEmpty()) { globalSeparator = separatorNode.get(0).getTextContent(); if (globalSeparator.length() != 1) { globalSeparator = defaultSeparator; } } Map<String, String> options = new HashMap<String, String>(); Map<String, String> processedOptions = new HashMap<String, String>(); for (int i = 0; i < optionNodes.size(); i++) { Node option = optionNodes.get(i); String name = option.getAttributes().getNamedItem("name").getNodeValue(); String value = option.getTextContent(); if (options.containsKey(name)) { options.remove(name); } options.put(name, value); } for (int t = 0; t < targets.size(); t++) { File target = new File(absolutePath(targets.get(t).getTextContent())); File tmpFile = new File(Utils.timestamp()); BufferedWriter bw = null; BufferedReader br = null; try { Node separatorAttr = targets.get(t).getAttributes().getNamedItem("separator"); String separator = (separatorAttr == null) ? globalSeparator : separatorAttr.getNodeValue(); if (separator.length() != 1) { separator = globalSeparator; } bw = new BufferedWriter(new FileWriter(tmpFile)); if (target.exists()) { br = new BufferedReader(new FileReader(target)); for (String line; (line = br.readLine()) != null; ) { String[] parts = line.split(separator); if (parts.length < 2) { bw.write(line); bw.newLine(); continue; } String optName = parts[0].trim(); if (options.containsKey(optName)) { String optValue = options.get(optName); bw.write(optName + " " + separator + " " + optValue); bw.newLine(); processedOptions.put(optName, optValue); options.remove(optName); } else if (processedOptions.containsKey(optName)) { bw.write(optName + " " + separator + " " + processedOptions.get(optName)); bw.newLine(); } else { bw.write(line); bw.newLine(); } } br.close(); } for (Map.Entry<String, String> entry : options.entrySet()) { bw.write(entry.getKey() + " " + separator + " " + entry.getValue()); bw.newLine(); } bw.close(); FileUtils.copyFile(tmpFile, target); FileUtils.forceDelete(tmpFile); } catch (IOException ex) { Utils.onError(new Error.WriteTxtConfig(target.getPath())); } } }
private void processXml(Node operation) throws ParserConfigurationException, TransformerConfigurationException { List<Node> targets = getChildNodes(operation, "target"); List<Node> appendOpNodes = getChildNodes(operation, "append"); List<Node> setOpNodes = getChildNodes(operation, "set"); List<Node> replaceOpNodes = getChildNodes(operation, "replace"); List<Node> removeOpNodes = getChildNodes(operation, "remove"); if (targets.isEmpty()) { return; } for (int t = 0; t < targets.size(); t++) { File target = new File(absolutePath(targets.get(t).getTextContent())); if (!target.exists()) { Utils.onError(new Error.FileNotFound(target.getPath())); return; } DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document doc = null; try { doc = db.parse(target); } catch (Exception ex) { Utils.onError(new Error.FileParse(target.getPath())); return; } for (int i = 0; i < removeOpNodes.size(); i++) removeXmlEntry(doc, removeOpNodes.get(i)); for (int i = 0; i < replaceOpNodes.size(); i++) replaceXmlEntry(doc, replaceOpNodes.get(i)); for (int i = 0; i < setOpNodes.size(); i++) setXmlEntry(doc, setOpNodes.get(i)); for (int i = 0; i < appendOpNodes.size(); i++) appendXmlEntry(doc, appendOpNodes.get(i)); try { OutputFormat format = new OutputFormat(doc); format.setOmitXMLDeclaration(true); format.setLineWidth(65); format.setIndenting(true); format.setIndent(4); Writer out = new FileWriter(target); XMLSerializer serializer = new XMLSerializer(out, format); serializer.serialize(doc); } catch (IOException e) { Utils.onError(new Error.WriteXmlConfig(target.getPath())); } } }