1
19
20 package com.liferay.portal.tools;
21
22 import com.liferay.portal.kernel.util.FileUtil;
23 import com.liferay.portal.kernel.xml.Document;
24 import com.liferay.portal.kernel.xml.DocumentException;
25 import com.liferay.portal.kernel.xml.Element;
26 import com.liferay.portal.kernel.xml.SAXReaderUtil;
27 import com.liferay.portal.util.InitUtil;
28
29 import java.io.File;
30 import java.io.IOException;
31
32 import java.util.Iterator;
33 import java.util.List;
34 import java.util.Map;
35 import java.util.TreeMap;
36
37
43 public class WSDDMerger {
44
45 public static void main(String[] args) {
46 InitUtil.initWithSpring();
47
48 new WSDDMerger(args[0], args[1]);
49 }
50
51 public static void merge(String source, String destination)
52 throws DocumentException, IOException {
53
54
56 File sourceFile = new File(source);
57
58 Document doc = SAXReaderUtil.read(sourceFile);
59
60 Element root = doc.getRootElement();
61
62 List<Element> sourceServices = root.elements("service");
63
64 if (sourceServices.size() == 0) {
65 return;
66 }
67
68
70 File destinationFile = new File(destination);
71
72 doc = SAXReaderUtil.read(destinationFile);
73
74 root = doc.getRootElement();
75
76 Map<String, Element> servicesMap = new TreeMap<String, Element>();
77
78 Iterator<Element> itr = root.elements("service").iterator();
79
80 while (itr.hasNext()) {
81 Element service = itr.next();
82
83 String name = service.attributeValue("name");
84
85 servicesMap.put(name, service);
86
87 service.detach();
88 }
89
90 itr = sourceServices.iterator();
91
92 while (itr.hasNext()) {
93 Element service = itr.next();
94
95 String name = service.attributeValue("name");
96
97 servicesMap.put(name, service);
98
99 service.detach();
100 }
101
102 for (Map.Entry<String, Element> entry : servicesMap.entrySet()) {
103 Element service = entry.getValue();
104
105 root.add(service);
106 }
107
108 FileUtil.write(destination, doc.formattedString(), true);
109 }
110
111 public WSDDMerger(String source, String destination) {
112 try {
113 merge(source, destination);
114 }
115 catch (Exception e) {
116 e.printStackTrace();
117 }
118 }
119
120 }