if (genericJarFile.exists() && genericJarFile.isFile() && weblogicJarFile.exists() && weblogicJarFile.isFile()) { //open jar files genericJar = new JarFile(genericJarFile); wlJar = new JarFile(weblogicJarFile); Hashtable genericEntries = new Hashtable(); Hashtable wlEntries = new Hashtable(); Hashtable replaceEntries = new Hashtable(); //get the list of generic jar entries for (Enumeration e = genericJar.entries(); e.hasMoreElements();) { JarEntry je = (JarEntry) e.nextElement(); genericEntries.put(je.getName().replace('\\', '/'), je); } //get the list of weblogic jar entries for (Enumeration e = wlJar.entries(); e.hasMoreElements();) { JarEntry je = (JarEntry) e.nextElement(); wlEntries.put(je.getName(), je); } //Cycle Through generic and make sure its in weblogic genericLoader = getClassLoaderFromJar(genericJarFile); for (Enumeration e = genericEntries.keys(); e.hasMoreElements();) { String filepath = (String) e.nextElement(); if (wlEntries.containsKey(filepath)) { // File name/path match // Check files see if same JarEntry genericEntry = (JarEntry) genericEntries.get(filepath); JarEntry wlEntry = (JarEntry) wlEntries.get(filepath); if ((genericEntry.getCrc() != wlEntry.getCrc()) || (genericEntry.getSize() != wlEntry.getSize())) { if (genericEntry.getName().endsWith(".class")) { //File are different see if its an object or an interface String classname = genericEntry.getName().replace(File.separatorChar, '.'); classname = classname.substring(0, classname.lastIndexOf(".class")); Class genclass = genericLoader.loadClass(classname); if (genclass.isInterface()) { //Interface changed rebuild jar. log("Interface " + genclass.getName() + " has changed", Project.MSG_VERBOSE); rebuild = true; break; } else { //Object class Changed update it. replaceEntries.put(filepath, genericEntry); } } else { // is it the manifest. If so ignore it if (!genericEntry.getName().equals("META-INF/MANIFEST.MF")) { //File other then class changed rebuild log("Non class file " + genericEntry.getName() + " has changed", Project.MSG_VERBOSE); rebuild = true; break; } } } } else { // a file doesnt exist rebuild log("File " + filepath + " not present in weblogic jar", Project.MSG_VERBOSE); rebuild = true; break; } } if (!rebuild) { log("No rebuild needed - updating jar", Project.MSG_VERBOSE); newWLJarFile = new File(weblogicJarFile.getAbsolutePath() + ".temp"); if (newWLJarFile.exists()) { newWLJarFile.delete(); } newJarStream = new JarOutputStream(new FileOutputStream(newWLJarFile)); newJarStream.setLevel(0); //Copy files from old weblogic jar for (Enumeration e = wlEntries.elements(); e.hasMoreElements();) { byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; int bytesRead; InputStream is; JarEntry je = (JarEntry) e.nextElement(); if (je.getCompressedSize() == -1 || je.getCompressedSize() == je.getSize()) { newJarStream.setLevel(0); } else { newJarStream.setLevel(JAR_COMPRESS_LEVEL); } // Update with changed Bean class if (replaceEntries.containsKey(je.getName())) { log("Updating Bean class from generic Jar " + je.getName(), Project.MSG_VERBOSE); // Use the entry from the generic jar je = (JarEntry) replaceEntries.get(je.getName()); is = genericJar.getInputStream(je); } else { //use fle from original weblogic jar is = wlJar.getInputStream(je); } newJarStream.putNextEntry(new JarEntry(je.getName())); while ((bytesRead = is.read(buffer)) != -1) { newJarStream.write(buffer, 0, bytesRead); } is.close(); } } else { log("Weblogic Jar rebuild needed due to changed " + "interface or XML", Project.MSG_VERBOSE); } } else { rebuild = true; }
if (genericJarFile.exists() && genericJarFile.isFile() && websphereJarFile.exists() && websphereJarFile.isFile()) { //open jar files genericJar = new JarFile(genericJarFile); wasJar = new JarFile(websphereJarFile); Hashtable genericEntries = new Hashtable(); Hashtable wasEntries = new Hashtable(); Hashtable replaceEntries = new Hashtable(); //get the list of generic jar entries for (Enumeration e = genericJar.entries(); e.hasMoreElements();) { JarEntry je = (JarEntry) e.nextElement(); genericEntries.put(je.getName().replace('\\', '/'), je); } //get the list of websphere jar entries for (Enumeration e = wasJar.entries(); e.hasMoreElements();) { JarEntry je = (JarEntry) e.nextElement(); wasEntries.put(je.getName(), je); } //Cycle Through generic and make sure its in websphere ClassLoader genericLoader = getClassLoaderFromJar(genericJarFile); for (Enumeration e = genericEntries.keys(); e.hasMoreElements();) { String filepath = (String) e.nextElement(); if (wasEntries.containsKey(filepath)) { // File name/path match // Check files see if same JarEntry genericEntry = (JarEntry) genericEntries.get(filepath); JarEntry wasEntry = (JarEntry) wasEntries.get(filepath); if ((genericEntry.getCrc() != wasEntry.getCrc()) || (genericEntry.getSize() != wasEntry.getSize())) { if (genericEntry.getName().endsWith(".class")) { //File are different see if its an object or an interface String classname = genericEntry.getName().replace(File.separatorChar, '.'); classname = classname.substring(0, classname.lastIndexOf(".class")); Class genclass = genericLoader.loadClass(classname); if (genclass.isInterface()) { //Interface changed rebuild jar. log("Interface " + genclass.getName() + " has changed", Project.MSG_VERBOSE); rebuild = true; break; } else { //Object class Changed update it. replaceEntries.put(filepath, genericEntry); } } else { // is it the manifest. If so ignore it if (!genericEntry.getName().equals("META-INF/MANIFEST.MF")) { //File other then class changed rebuild log("Non class file " + genericEntry.getName() + " has changed", Project.MSG_VERBOSE); rebuild = true; } break; } } } else { // a file doesn't exist rebuild log("File " + filepath + " not present in websphere jar", Project.MSG_VERBOSE); rebuild = true; break; } } if (!rebuild) { log("No rebuild needed - updating jar", Project.MSG_VERBOSE); newwasJarFile = new File(websphereJarFile.getAbsolutePath() + ".temp"); if (newwasJarFile.exists()) { newwasJarFile.delete(); } newJarStream = new JarOutputStream(new FileOutputStream(newwasJarFile)); newJarStream.setLevel(0); //Copy files from old websphere jar for (Enumeration e = wasEntries.elements(); e.hasMoreElements();) { byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; int bytesRead; InputStream is; JarEntry je = (JarEntry) e.nextElement(); if (je.getCompressedSize() == -1 || je.getCompressedSize() == je.getSize()) { newJarStream.setLevel(0); } else { newJarStream.setLevel(JAR_COMPRESS_LEVEL); } // Update with changed Bean class if (replaceEntries.containsKey(je.getName())) { log("Updating Bean class from generic Jar " + je.getName(), Project.MSG_VERBOSE); // Use the entry from the generic jar je = (JarEntry) replaceEntries.get(je.getName()); is = genericJar.getInputStream(je); } else { //use fle from original websphere jar is = wasJar.getInputStream(je); } newJarStream.putNextEntry(new JarEntry(je.getName())); while ((bytesRead = is.read(buffer)) != -1) { newJarStream.write(buffer, 0, bytesRead); } is.close(); } } else { log("websphere Jar rebuild needed due to changed " + "interface or XML", Project.MSG_VERBOSE); } } else { rebuild = true; }
Clone fragments detected by clone detection tool
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: Method name:
Number of AST nodes: 0 Number of AST nodes: 0
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
            }
Summary
Number of common nesting structure subtrees0
Number of refactorable cases0
Number of non-refactorable cases0
Time elapsed for finding largest common nesting structure subtrees (ms)0.0
Clones location
Number of node comparisons0