File path: /apache-ant-1.7.0/src/org/apache/tools/ant/taskdefs/optional/ejb/WeblogicDeploymentTool.java | File path: /apache-ant-1.7.0/src/org/apache/tools/ant/taskdefs/optional/ejb/WebsphereDeploymentTool.java | |||
Method name: boolean isRebuildRequired(File, File)
|
Method name: boolean isRebuildRequired(File, File)
|
|||
Number of AST nodes: 61 | Number of AST nodes: 61 | |||
1 | if (genericJarFile.exists() && genericJarFile.isFile()↵ | 1 | if (genericJarFile.exists() && genericJarFile.isFile()↵ | |
2 | && weblogicJarFile.exists() && weblogicJarFile.isFile()) {↵ | 2 | && websphereJarFile.exists() && websphereJarFile.isFile()) {↵ | |
3 | //open jar files↵ | 3 | //open jar files↵ | |
4 | genericJar = new JarFile(genericJarFile);↵ | 4 | genericJar = new JarFile(genericJarFile);↵ | |
5 | wlJar = new JarFile(weblogicJarFile);↵ | 5 | wasJar = new JarFile(websphereJarFile);↵ | |
6 | Hashtable genericEntries = new Hashtable();↵ | 6 | Hashtable genericEntries = new Hashtable();↵ | |
7 | Hashtable wlEntries = new Hashtable();↵ | 7 | Hashtable wasEntries = new Hashtable();↵ | |
8 | Hashtable replaceEntries = new Hashtable();↵ | 8 | Hashtable replaceEntries = new Hashtable();↵ | |
9 | //get the list of generic jar entries↵ | 9 | //get the list of generic jar entries↵ | |
10 | for (Enumeration e = genericJar.entries(); e.hasMoreElements();) {↵ | 10 | for (Enumeration e = genericJar.entries(); e.hasMoreElements();) {↵ | |
11 | JarEntry je = (JarEntry) e.nextElement();↵ | 11 | JarEntry je = (JarEntry) e.nextElement();↵ | |
12 | genericEntries.put(je.getName().replace('\\', '/'), je);↵ | 12 | genericEntries.put(je.getName().replace('\\', '/'), je);↵ | |
13 | }↵ | 13 | }↵ | |
14 | //get the list of weblogic jar entries↵ | 14 | //get the list of websphere jar entries↵ | |
15 | for (Enumeration e = wlJar.entries(); e.hasMoreElements();) {↵ | 15 | for (Enumeration e = wasJar.entries(); e.hasMoreElements();) {↵ | |
16 | JarEntry je = (JarEntry) e.nextElement();↵ | 16 | JarEntry je = (JarEntry) e.nextElement();↵ | |
17 | wlEntries.put(je.getName(), je);↵ | 17 | wasEntries.put(je.getName(), je);↵ | |
18 | }↵ | 18 | }↵ | |
19 | //Cycle Through generic and make sure its in weblogic↵ | 19 | //Cycle Through generic and make sure its in websphere↵ | |
20 | genericLoader = getClassLoaderFromJar(genericJarFile);↵ | 20 | ClassLoader genericLoader = getClassLoaderFromJar(genericJarFile);↵ | |
21 | for (Enumeration e = genericEntries.keys(); e.hasMoreElements();) {↵ | 21 | for (Enumeration e = genericEntries.keys(); e.hasMoreElements();) {↵ | |
22 | String filepath = (String) e.nextElement();↵ | 22 | String filepath = (String) e.nextElement();↵ | |
23 | if (wlEntries.containsKey(filepath)) {↵ | 23 | if (wasEntries.containsKey(filepath)) {↵ | |
24 | // File name/path match↵ | 24 | // File name/path match↵ | |
25 | // Check files see if same↵ | 25 | // Check files see if same↵ | |
26 | JarEntry genericEntry = (JarEntry) genericEntries.get(filepath);↵ | 26 | JarEntry genericEntry = (JarEntry) genericEntries.get(filepath);↵ | |
27 | JarEntry wlEntry = (JarEntry) wlEntries.get(filepath);↵ | 27 | JarEntry wasEntry = (JarEntry) wasEntries.get(filepath);↵ | |
28 | if ((genericEntry.getCrc() != wlEntry.getCrc())↵ | 28 | if ((genericEntry.getCrc() != wasEntry.getCrc())↵ | |
29 | || (genericEntry.getSize() != wlEntry.getSize())) {↵ | 29 | || (genericEntry.getSize() != wasEntry.getSize())) {↵ | |
30 | if (genericEntry.getName().endsWith(".class")) {↵ | 30 | if (genericEntry.getName().endsWith(".class")) {↵ | |
31 | //File are different see if its an object or an interface↵ | 31 | //File are different see if its an object or an interface↵ | |
32 | String classname↵ | 32 | String classname↵ | |
33 | = genericEntry.getName().replace(File.separatorChar, '.');↵ | 33 | = genericEntry.getName().replace(File.separatorChar, '.');↵ | |
34 | classname = classname.substring(0, classname.lastIndexOf(".class"));↵ | 34 | classname = classname.substring(0, classname.lastIndexOf(".class"));↵ | |
35 | Class genclass = genericLoader.loadClass(classname);↵ | 35 | Class genclass = genericLoader.loadClass(classname);↵ | |
36 | if (genclass.isInterface()) {↵ | 36 | if (genclass.isInterface()) {↵ | |
37 | //Interface changed rebuild jar.↵ | 37 | //Interface changed rebuild jar.↵ | |
38 | log("Interface " + genclass.getName()↵ | 38 | log("Interface " + genclass.getName()↵ | |
39 | + " has changed", Project.MSG_VERBOSE);↵ | 39 | + " has changed", Project.MSG_VERBOSE);↵ | |
40 | rebuild = true;↵ | 40 | rebuild = true;↵ | |
41 | break;↵ | 41 | break;↵ | |
42 | } else {↵ | 42 | } else {↵ | |
43 | //Object class Changed update it.↵ | 43 | //Object class Changed update it.↵ | |
44 | replaceEntries.put(filepath, genericEntry);↵ | 44 | replaceEntries.put(filepath, genericEntry);↵ | |
45 | }↵ | 45 | }↵ | |
46 | } else {↵ | 46 | } else {↵ | |
47 | // is it the manifest. If so ignore it↵ | 47 | // is it the manifest. If so ignore it↵ | |
48 | if (!genericEntry.getName().equals("META-INF/MANIFEST.MF")) {↵ | 48 | if (!genericEntry.getName().equals("META-INF/MANIFEST.MF")) {↵ | |
49 | //File other then class changed rebuild↵ | 49 | //File other then class changed rebuild↵ | |
50 | log("Non class file " + genericEntry.getName()↵ | 50 | log("Non class file " + genericEntry.getName()↵ | |
51 | + " has changed", Project.MSG_VERBOSE);↵ | 51 | + " has changed", Project.MSG_VERBOSE);↵ | |
52 | rebuild = true;↵ | 52 | rebuild = true;↵ | |
53 | break;↵ | 53 | }↵ | |
54 | }↵ | 54 | break;↵ | |
55 | }↵ | 55 | }↵ | |
56 | }↵ | 56 | }↵ | |
57 | } else {↵ | 57 | } else {↵ | |
58 | // a file doesnt exist rebuild↵ | 58 | // a file doesn't exist rebuild↵ | |
59 | log("File " + filepath + " not present in weblogic jar",↵ | 59 | log("File " + filepath + " not present in websphere jar",↵ | |
60 | Project.MSG_VERBOSE);↵ | 60 | Project.MSG_VERBOSE);↵ | |
61 | rebuild = true;↵ | 61 | rebuild = true;↵ | |
62 | break;↵ | 62 | break;↵ | |
63 | }↵ | 63 | }↵ | |
64 | }↵ | 64 | }↵ | |
65 | if (!rebuild) {↵ | 65 | if (!rebuild) {↵ | |
66 | log("No rebuild needed - updating jar", Project.MSG_VERBOSE);↵ | 66 | log("No rebuild needed - updating jar", Project.MSG_VERBOSE);↵ | |
67 | newWLJarFile = new File(weblogicJarFile.getAbsolutePath() + ".temp");↵ | 67 | newwasJarFile = new File(websphereJarFile.getAbsolutePath() + ".temp");↵ | |
68 | if (newWLJarFile.exists()) {↵ | 68 | if (newwasJarFile.exists()) {↵ | |
69 | newWLJarFile.delete();↵ | 69 | newwasJarFile.delete();↵ | |
70 | }↵ | 70 | }↵ | |
71 | newJarStream = new JarOutputStream(new FileOutputStream(newWLJarFile));↵ | 71 | newJarStream = new JarOutputStream(new FileOutputStream(newwasJarFile));↵ | |
72 | newJarStream.setLevel(0);↵ | 72 | newJarStream.setLevel(0);↵ | |
73 | //Copy files from old weblogic jar↵ | 73 | //Copy files from old websphere jar↵ | |
74 | for (Enumeration e = wlEntries.elements(); e.hasMoreElements();) {↵ | 74 | for (Enumeration e = wasEntries.elements(); e.hasMoreElements();) {↵ | |
75 | byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];↵ | 75 | byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];↵ | |
76 | int bytesRead;↵ | 76 | int bytesRead;↵ | |
77 | InputStream is;↵ | 77 | InputStream is;↵ | |
78 | JarEntry je = (JarEntry) e.nextElement();↵ | 78 | JarEntry je = (JarEntry) e.nextElement();↵ | |
79 | if (je.getCompressedSize() == -1↵ | 79 | if (je.getCompressedSize() == -1↵ | |
80 | || je.getCompressedSize() == je.getSize()) {↵ | 80 | || je.getCompressedSize() == je.getSize()) {↵ | |
81 | newJarStream.setLevel(0);↵ | 81 | newJarStream.setLevel(0);↵ | |
82 | } else {↵ | 82 | } else {↵ | |
83 | newJarStream.setLevel(JAR_COMPRESS_LEVEL);↵ | 83 | newJarStream.setLevel(JAR_COMPRESS_LEVEL);↵ | |
84 | }↵ | 84 | }↵ | |
85 | // Update with changed Bean class↵ | 85 | // Update with changed Bean class↵ | |
86 | if (replaceEntries.containsKey(je.getName())) {↵ | 86 | if (replaceEntries.containsKey(je.getName())) {↵ | |
87 | log("Updating Bean class from generic Jar "↵ | 87 | log("Updating Bean class from generic Jar "↵ | |
88 | ↵ | 88 | + je.getName(),↵ | |
89 | + je.getName(), Project.MSG_VERBOSE);↵ | 89 | Project.MSG_VERBOSE);↵ | |
90 | // Use the entry from the generic jar↵ | 90 | // Use the entry from the generic jar↵ | |
91 | je = (JarEntry) replaceEntries.get(je.getName());↵ | 91 | je = (JarEntry) replaceEntries.get(je.getName());↵ | |
92 | is = genericJar.getInputStream(je);↵ | 92 | is = genericJar.getInputStream(je);↵ | |
93 | } else {↵ | 93 | } else {↵ | |
94 | //use fle from original weblogic jar↵ | 94 | //use fle from original websphere jar↵ | |
95 | is = wlJar.getInputStream(je);↵ | 95 | is = wasJar.getInputStream(je);↵ | |
96 | }↵ | 96 | }↵ | |
97 | newJarStream.putNextEntry(new JarEntry(je.getName()));↵ | 97 | newJarStream.putNextEntry(new JarEntry(je.getName()));↵ | |
98 | while ((bytesRead = is.read(buffer)) != -1) {↵ | 98 | while ((bytesRead = is.read(buffer)) != -1) {↵ | |
99 | newJarStream.write(buffer, 0, bytesRead);↵ | 99 | newJarStream.write(buffer, 0, bytesRead);↵ | |
100 | }↵ | 100 | }↵ | |
101 | is.close();↵ | 101 | is.close();↵ | |
102 | }↵ | 102 | }↵ | |
103 | } else {↵ | 103 | } else {↵ | |
104 | log("Weblogic Jar rebuild needed due to changed "↵ | 104 | log("websphere Jar rebuild needed due to changed "↵ | |
105 | + "interface or XML", Project.MSG_VERBOSE);↵ | 105 | + "interface or XML", Project.MSG_VERBOSE);↵ | |
106 | }↵ | 106 | }↵ | |
107 | } else {↵ | 107 | } else {↵ | |
108 | rebuild = true;↵ | 108 | rebuild = true;↵ | |
109 | } | 109 |
| |
See real code fragment | See real code fragment |
Number of common nesting structure subtrees | 1 |
Number of refactorable cases | 0 |
Number of non-refactorable cases | 1 |
Time elapsed for finding largest common nesting structure subtrees (ms) | 15.3 |
Clones location | Clones are in different classes having the same super class |
Number of node comparisons | 387 |
Number of mapped statements | 59 |
Number of unmapped statements in the first code fragment | 2 |
Number of unmapped statements in the second code fragment | 2 |
Time elapsed for statement mapping (ms) | 132.3 |
Clone type | Type 3 |
ID | Statement | ID | Statement | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
9 | if (genericJarFile.exists() && genericJarFile.isFile() && weblogicJarFile.exists() && weblogicJarFile.isFile()) |
| 8 | if (genericJarFile.exists() && genericJarFile.isFile() && websphereJarFile.exists() && websphereJarFile.isFile()) | |||||||||||||
10 | genericJar = new JarFile(genericJarFile); | 9 | genericJar = new JarFile(genericJarFile); | ||||||||||||||
11 | wlJar = new JarFile(weblogicJarFile); |
| 10 | wasJar = new JarFile(websphereJarFile); | |||||||||||||
12 | Hashtable genericEntries = new Hashtable(); | 11 | Hashtable genericEntries = new Hashtable(); | ||||||||||||||
13 | Hashtable wlEntries = new Hashtable(); |
| 12 | Hashtable wasEntries = new Hashtable(); | |||||||||||||
14 | Hashtable replaceEntries = new Hashtable(); | 13 | Hashtable replaceEntries = new Hashtable(); | ||||||||||||||
15 | for (Enumeration e = genericJar.entries(); e.hasMoreElements(); ) | 14 | for (Enumeration e = genericJar.entries(); e.hasMoreElements(); ) | ||||||||||||||
16 | JarEntry je = (JarEntry)e.nextElement(); | 15 | JarEntry je = (JarEntry)e.nextElement(); | ||||||||||||||
17 | genericEntries.put(je.getName().replace('\\', '/'), je); | 16 | genericEntries.put(je.getName().replace('\\', '/'), je); | ||||||||||||||
18 | for (Enumeration e = wlJar.entries(); e.hasMoreElements(); ) |
| 17 | for (Enumeration e = wasJar.entries(); e.hasMoreElements(); ) | |||||||||||||
19 | JarEntry je = (JarEntry)e.nextElement(); | 18 | JarEntry je = (JarEntry)e.nextElement(); | ||||||||||||||
20 | wlEntries.put(je.getName(), je); |
| 19 | wasEntries.put(je.getName(), je); | |||||||||||||
|
| 20 | ClassLoader genericLoader = getClassLoaderFromJar(genericJarFile); | ||||||||||||||
21 | genericLoader = getClassLoaderFromJar(genericJarFile); |
| | ||||||||||||||
22 | for (Enumeration e = genericEntries.keys(); e.hasMoreElements(); ) | 21 | for (Enumeration e = genericEntries.keys(); e.hasMoreElements(); ) | ||||||||||||||
23 | String filepath = (String)e.nextElement(); | 22 | String filepath = (String)e.nextElement(); | ||||||||||||||
24 | if (wlEntries.containsKey(filepath)) |
| 23 | if (wasEntries.containsKey(filepath)) | |||||||||||||
25 | JarEntry genericEntry = (JarEntry)genericEntries.get(filepath); | 24 | JarEntry genericEntry = (JarEntry)genericEntries.get(filepath); | ||||||||||||||
26 | JarEntry wlEntry = (JarEntry)wlEntries.get(filepath); |
| 25 | JarEntry wasEntry = (JarEntry)wasEntries.get(filepath); | |||||||||||||
27 | if ((genericEntry.getCrc() != wlEntry.getCrc()) || (genericEntry.getSize() != wlEntry.getSize())) |
| 26 | if ((genericEntry.getCrc() != wasEntry.getCrc()) || (genericEntry.getSize() != wasEntry.getSize())) | |||||||||||||
28 | if (genericEntry.getName().endsWith(".class")) | 27 | if (genericEntry.getName().endsWith(".class")) | ||||||||||||||
29 | String classname = genericEntry.getName().replace(File.separatorChar, '.'); | 28 | String classname = genericEntry.getName().replace(File.separatorChar, '.'); | ||||||||||||||
30 | classname = classname.substring(0, classname.lastIndexOf(".class")); | 29 | classname = classname.substring(0, classname.lastIndexOf(".class")); | ||||||||||||||
31 | Class genclass = genericLoader.loadClass(classname); | 30 | Class genclass = genericLoader.loadClass(classname); | ||||||||||||||
32 | if (genclass.isInterface()) | 31 | if (genclass.isInterface()) | ||||||||||||||
33 | log("Interface " + genclass.getName() + " has changed", Project.MSG_VERBOSE); | 32 | log("Interface " + genclass.getName() + " has changed", Project.MSG_VERBOSE); | ||||||||||||||
34 | rebuild = true; | 33 | rebuild = true; | ||||||||||||||
35 | break; | 34 | break; | ||||||||||||||
else | else | ||||||||||||||||
36 | replaceEntries.put(filepath, genericEntry); | 35 | replaceEntries.put(filepath, genericEntry); | ||||||||||||||
else | else | ||||||||||||||||
37 | if (!genericEntry.getName().equals("META-INF/MANIFEST.MF")) | 36 | if (!genericEntry.getName().equals("META-INF/MANIFEST.MF")) | ||||||||||||||
38 | log("Non class file " + genericEntry.getName() + " has changed", Project.MSG_VERBOSE); | 37 | log("Non class file " + genericEntry.getName() + " has changed", Project.MSG_VERBOSE); | ||||||||||||||
39 | rebuild = true; | 38 | rebuild = true; | ||||||||||||||
40 | break; |
| | ||||||||||||||
|
| 39 | break; | ||||||||||||||
else | else | ||||||||||||||||
41 | log("File " + filepath + " not present in weblogic jar", Project.MSG_VERBOSE); |
| 40 | log("File " + filepath + " not present in websphere jar", Project.MSG_VERBOSE); | |||||||||||||
42 | rebuild = true; | 41 | rebuild = true; | ||||||||||||||
43 | break; | 42 | break; | ||||||||||||||
44 | if (!rebuild) | 43 | if (!rebuild) | ||||||||||||||
45 | log("No rebuild needed - updating jar", Project.MSG_VERBOSE); | 44 | log("No rebuild needed - updating jar", Project.MSG_VERBOSE); | ||||||||||||||
46 | newWLJarFile = new File(weblogicJarFile.getAbsolutePath() + ".temp"); |
| 45 | newwasJarFile = new File(websphereJarFile.getAbsolutePath() + ".temp"); | |||||||||||||
47 | if (newWLJarFile.exists()) |
| 46 | if (newwasJarFile.exists()) | |||||||||||||
48 | newWLJarFile.delete(); |
| 47 | newwasJarFile.delete(); | |||||||||||||
49 | newJarStream = new JarOutputStream(new FileOutputStream(newWLJarFile)); |
| 48 | newJarStream = new JarOutputStream(new FileOutputStream(newwasJarFile)); | |||||||||||||
50 | newJarStream.setLevel(0); | 49 | newJarStream.setLevel(0); | ||||||||||||||
51 | for (Enumeration e = wlEntries.elements(); e.hasMoreElements(); ) |
| 50 | for (Enumeration e = wasEntries.elements(); e.hasMoreElements(); ) | |||||||||||||
52 | byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; | 51 | byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; | ||||||||||||||
53 | int bytesRead; | 52 | int bytesRead; | ||||||||||||||
54 | InputStream is; | 53 | InputStream is; | ||||||||||||||
55 | JarEntry je = (JarEntry)e.nextElement(); | 54 | JarEntry je = (JarEntry)e.nextElement(); | ||||||||||||||
56 | if (je.getCompressedSize() == -1 || je.getCompressedSize() == je.getSize()) | 55 | if (je.getCompressedSize() == -1 || je.getCompressedSize() == je.getSize()) | ||||||||||||||
57 | newJarStream.setLevel(0); | 56 | newJarStream.setLevel(0); | ||||||||||||||
else | else | ||||||||||||||||
58 | newJarStream.setLevel(JAR_COMPRESS_LEVEL); | 57 | newJarStream.setLevel(JAR_COMPRESS_LEVEL); | ||||||||||||||
59 | if (replaceEntries.containsKey(je.getName())) | 58 | if (replaceEntries.containsKey(je.getName())) | ||||||||||||||
60 | log("Updating Bean class from generic Jar " + je.getName(), Project.MSG_VERBOSE); | 59 | log("Updating Bean class from generic Jar " + je.getName(), Project.MSG_VERBOSE); | ||||||||||||||
61 | je = (JarEntry)replaceEntries.get(je.getName()); | 60 | je = (JarEntry)replaceEntries.get(je.getName()); | ||||||||||||||
62 | is = genericJar.getInputStream(je); | 61 | is = genericJar.getInputStream(je); | ||||||||||||||
else | else | ||||||||||||||||
63 | is = wlJar.getInputStream(je); |
| 62 | is = wasJar.getInputStream(je); | |||||||||||||
64 | newJarStream.putNextEntry(new JarEntry(je.getName())); | 63 | newJarStream.putNextEntry(new JarEntry(je.getName())); | ||||||||||||||
65 | while ((bytesRead = is.read(buffer)) != -1) | 64 | while ((bytesRead = is.read(buffer)) != -1) | ||||||||||||||
66 | newJarStream.write(buffer, 0, bytesRead); | 65 | newJarStream.write(buffer, 0, bytesRead); | ||||||||||||||
67 | is.close(); | 66 | is.close(); | ||||||||||||||
else | else | ||||||||||||||||
68 | log("Weblogic Jar rebuild needed due to changed " + "interface or XML", Project.MSG_VERBOSE); |
| 67 | log("websphere Jar rebuild needed due to changed " + "interface or XML", Project.MSG_VERBOSE); | |||||||||||||
else | else | ||||||||||||||||
69 | rebuild = true; | 68 | rebuild = true; |
Row | Violation |
---|---|
1 | Unmatched statement ClassLoader genericLoader=getClassLoaderFromJar(genericJarFile); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted |
2 | Unmatched statement genericLoader=getClassLoaderFromJar(genericJarFile); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted |
3 | Unmatched break; |
4 | Unmatched break; |