boolean rebuild = false; JarFile genericJar = null; JarFile wlJar = null; File newWLJarFile = null; JarOutputStream newJarStream = null; ClassLoader genericLoader = null; try { log("Checking if weblogic Jar needs to be rebuilt for jar " + weblogicJarFile.getName(), Project.MSG_VERBOSE); // Only go forward if the generic and the weblogic file both exist 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; } } catch (ClassNotFoundException cnfe) { String cnfmsg = "ClassNotFoundException while processing ejb-jar file" + ". Details: " + cnfe.getMessage(); throw new BuildException(cnfmsg, cnfe); } catch (IOException ioe) { String msg = "IOException while processing ejb-jar file " + ". Details: " + ioe.getMessage(); throw new BuildException(msg, ioe); } finally { // need to close files and perhaps rename output if (genericJar != null) { try { genericJar.close(); } catch (IOException closeException) { // empty } } if (wlJar != null) { try { wlJar.close(); } catch (IOException closeException) { // empty } } if (newJarStream != null) { try { newJarStream.close(); } catch (IOException closeException) { // empty } try { FILE_UTILS.rename(newWLJarFile, weblogicJarFile); } catch (IOException renameException) { log(renameException.getMessage(), Project.MSG_WARN); rebuild = true; } } if (genericLoader != null && genericLoader instanceof AntClassLoader) { AntClassLoader loader = (AntClassLoader) genericLoader; loader.cleanup(); } } return rebuild;
boolean rebuild = false; JarFile genericJar = null; JarFile wasJar = null; File newwasJarFile = null; JarOutputStream newJarStream = null; try { log("Checking if websphere Jar needs to be rebuilt for jar " + websphereJarFile.getName(), Project.MSG_VERBOSE); // Only go forward if the generic and the websphere file both exist 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; } } catch (ClassNotFoundException cnfe) { String cnfmsg = "ClassNotFoundException while processing ejb-jar file" + ". Details: " + cnfe.getMessage(); throw new BuildException(cnfmsg, cnfe); } catch (IOException ioe) { String msg = "IOException while processing ejb-jar file " + ". Details: " + ioe.getMessage(); throw new BuildException(msg, ioe); } finally { // need to close files and perhaps rename output if (genericJar != null) { try { genericJar.close(); } catch (IOException closeException) { // Ignore } } if (wasJar != null) { try { wasJar.close(); } catch (IOException closeException) { // Ignore } } if (newJarStream != null) { try { newJarStream.close(); } catch (IOException closeException) { // Ignore } try { FILE_UTILS.rename(newwasJarFile, websphereJarFile); } catch (IOException renameException) { log(renameException.getMessage(), Project.MSG_WARN); rebuild = true; } } } return rebuild;
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: boolean isRebuildRequired(File, File) Method name: boolean isRebuildRequired(File, File)
Number of AST nodes: 70 Number of AST nodes: 69
1
boolean rebuild = false;
1
boolean rebuild = false;
2
        JarFile genericJar = null;
2
        JarFile genericJar = null;
3
        JarFile wlJar = null;
3
        JarFile wasJar = null;
4
        File newWLJarFile = null;
4
        File newwasJarFile = null;
5
        JarOutputStream newJarStream = null;
5
        JarOutputStream newJarStream = null;
6
        ClassLoader genericLoader = null;
7
        try {
6
        try {
8
            log("Checking if weblogic Jar needs to be rebuilt for jar " + weblogic
7
            log("Checking if websphere Jar needs to be rebuilt for jar "
9
JarFile.getName(),
8
                + websphereJarFile.getName(),
10
                Project.MSG_VERBOSE);
9
 Project.MSG_VERBOSE);
11
            // Only go forward if the generic and the weblogic file both exist
10
            // Only go forward if the generic and the websphere file both exist
12
            if (genericJarFile.exists() && genericJarFile.isFile()
11
            if (genericJarFile.exists() && genericJarFile.isFile()
13
                 && weblogicJarFile.exists() && weblogicJarFile.isFile()) {
12
                 && websphereJarFile.exists() && websphereJarFile.isFile()) {
14
                //open jar files
13
                //open jar files
15
                genericJar = new JarFile(genericJarFile);
14
                genericJar = new JarFile(genericJarFile);
16
                wlJar = new JarFile(weblogicJarFile);
15
                wasJar = new JarFile(websphereJarFile);
17
                Hashtable genericEntries = new Hashtable();
16
                Hashtable genericEntries = new Hashtable();
18
                Hashtable wlEntries = new Hashtable();
17
                Hashtable wasEntries = new Hashtable();
19
                Hashtable replaceEntries = new Hashtable();
18
                Hashtable replaceEntries = new Hashtable();
20
                //get the list of generic jar entries
19
                //get the list of generic jar entries
21
                for (Enumeration e = genericJar.entries(); e.hasMoreElements();) {
20
                for (Enumeration e = genericJar.entries(); e.hasMoreElements();) {
22
                    JarEntry je = (JarEntry) e.nextElement();
21
                    JarEntry je = (JarEntry) e.nextElement();
23
                    genericEntries.put(je.getName().replace('\\', '/'), je);
22
                    genericEntries.put(je.getName().replace('\\', '/'), je);
24
                }
23
                }
25
                //get the list of weblogic jar entries
24
                //get the list of websphere jar entries
26
                for (Enumeration e = wlJar.entries(); e.hasMoreElements();) {
25
                for (Enumeration e = wasJar.entries(); e.hasMoreElements();) {
27
                    JarEntry je = (JarEntry) e.nextElement();
26
                    JarEntry je = (JarEntry) e.nextElement();
28
                    wlEntries.put(je.getName(), je);
27
                    wasEntries.put(je.getName(), je);
29
                }
28
                }
30
                //Cycle Through generic and make sure its in weblogic
29
                //Cycle Through generic and make sure its in websphere
31
                genericLoader = getClassLoaderFromJar(genericJarFile);
30
                ClassLoader genericLoader = getClassLoaderFromJar(genericJarFile);
32
                for (Enumeration e = genericEntries.keys(); e.hasMoreElements();) {
31
                for (Enumeration e = genericEntries.keys(); e.hasMoreElements();) {
33
                    String filepath = (String) e.nextElement();
32
                    String filepath = (String) e.nextElement();
34
                    if (wlEntries.containsKey(filepath)) {
33
                    if (wasEntries.containsKey(filepath)) {
35
                        // File name/path match
34
                        // File name/path match
36
                        // Check files see if same
35
                        // Check files see if same
37
                        JarEntry genericEntry = (JarEntry) genericEntries.get(filepath);
36
                        JarEntry genericEntry = (JarEntry) genericEntries.get(filepath);
38
                        JarEntry wlEntry = (JarEntry) wlEntries.get(filepath);
37
                        JarEntry wasEntry = (JarEntry) wasEntries.get(filepath);
39
                        if ((genericEntry.getCrc() != wlEntry.getCrc())
38
                        if ((genericEntry.getCrc() != wasEntry.getCrc())
40
                            || (genericEntry.getSize() != wlEntry.getSize())) {
39
                            || (genericEntry.getSize() != wasEntry.getSize())) {
41
                            if (genericEntry.getName().endsWith(".class")) {
40
                            if (genericEntry.getName().endsWith(".class")) {
42
                                //File are different see if its an object or an interface
41
                                //File are different see if its an object or an interface
43
                                String classname
42
                                String classname
44
                                    = genericEntry.getName().replace(File.separatorChar, '.');
43
                                    = genericEntry.getName().replace(File.separatorChar, '.');
45
                                classname = classname.substring(0, classname.lastIndexOf(".class"));
44
                                classname = classname.substring(0, classname.lastIndexOf(".class"));
46
                                Class genclass = genericLoader.loadClass(classname);
45
                                Class genclass = genericLoader.loadClass(classname);
47
                                if (genclass.isInterface()) {
46
                                if (genclass.isInterface()) {
48
                                    //Interface changed   rebuild jar.
47
                                    //Interface changed   rebuild jar.
49
                                    log("Interface " + genclass.getName()
48
                                    log("Interface " + genclass.getName()
50
                                        + " has changed", Project.MSG_VERBOSE);
49
                                        + " has changed", Project.MSG_VERBOSE);
51
                                    rebuild = true;
50
                                    rebuild = true;
52
                                    break;
51
                                    break;
53
                                } else {
52
                                } else {
54
                                    //Object class Changed   update it.
53
                                    //Object class Changed   update it.
55
                                    replaceEntries.put(filepath, genericEntry);
54
                                    replaceEntries.put(filepath, genericEntry);
56
                                }
55
                                }
57
                            } else {
56
                            } else {
58
                                // is it the manifest. If so ignore it
57
                                // is it the manifest. If so ignore it
59
                                if (!genericEntry.getName().equals("META-INF/MANIFEST.MF")) {
58
                                if (!genericEntry.getName().equals("META-INF/MANIFEST.MF")) {
60
                                    //File other then class changed   rebuild
59
                                    //File other then class changed   rebuild
61
                                    log("Non class file " + genericEntry.getName()
60
                                    log("Non class file " + genericEntry.getName()
62
                                        + " has changed", Project.MSG_VERBOSE);
61
                                        + " has changed", Project.MSG_VERBOSE);
63
                                    rebuild = true;
62
                                    rebuild = true;
64
                                    break;
63
                                }
65
                                }
64
                                break;
66
                            }
65
                            }
67
                        }
66
                        }
68
                    } else {
67
                    } else {
69
                        // a file doesnt exist rebuild
68
                        // a file doesn't exist rebuild
70
                        log("File " + filepath + " not present in weblogic jar",
69
                        log("File " + filepath + " not present in websphere jar",
71
                            Project.MSG_VERBOSE);
70
                            Project.MSG_VERBOSE);
72
                        rebuild = true;
71
                        rebuild = true;
73
                        break;
72
                        break;
74
                    }
73
                    }
75
                }
74
                }
76
                if (!rebuild) {
75
                if (!rebuild) {
77
                    log("No rebuild needed - updating jar", Project.MSG_VERBOSE);
76
                    log("No rebuild needed - updating jar", Project.MSG_VERBOSE);
78
                    newWLJarFile = new File(weblogicJarFile.getAbsolutePath() + ".temp");
77
                    newwasJarFile = new File(websphereJarFile.getAbsolutePath() + ".temp");
79
                    if (newWLJarFile.exists()) {
78
                    if (newwasJarFile.exists()) {
80
                        newWLJarFile.delete();
79
                        newwasJarFile.delete();
81
                    }
80
                    }
82
                    newJarStream = new JarOutputStream(new FileOutputStream(newWLJarFile));
81
                    newJarStream = new JarOutputStream(new FileOutputStream(newwasJarFile));
83
                    newJarStream.setLevel(0);
82
                    newJarStream.setLevel(0);
84
                    //Copy files from old weblogic jar
83
                    //Copy files from old websphere jar
85
                    for (Enumeration e = wlEntries.elements(); e.hasMoreElements();) {
84
                    for (Enumeration e = wasEntries.elements(); e.hasMoreElements();) {
86
                        byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
85
                        byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
87
                        int bytesRead;
86
                        int bytesRead;
88
                        InputStream is;
87
                        InputStream is;
89
                        JarEntry je = (JarEntry) e.nextElement();
88
                        JarEntry je = (JarEntry) e.nextElement();
90
                        if (je.getCompressedSize() == -1
89
                        if (je.getCompressedSize() == -1
91
                            || je.getCompressedSize() == je.getSize()) {
90
                            || je.getCompressedSize() == je.getSize()) {
92
                            newJarStream.setLevel(0);
91
                            newJarStream.setLevel(0);
93
                        } else {
92
                        } else {
94
                            newJarStream.setLevel(JAR_COMPRESS_LEVEL);
93
                            newJarStream.setLevel(JAR_COMPRESS_LEVEL);
95
                        }
94
                        }
96
                        // Update with changed Bean class
95
                        // Update with changed Bean class
97
                        if (replaceEntries.containsKey(je.getName())) {
96
                        if (replaceEntries.containsKey(je.getName())) {
98
                            log("Updating Bean class from generic Jar "
97
                            log("Updating Bean class from generic Jar " + je.getName(),
99
                                + je.getName(), Project.MSG_VERBOSE);
98
                                Project.MSG_VERBOSE);
100
                            // Use the entry from the generic jar
99
                            // Use the entry from the generic jar
101
                            je = (JarEntry) replaceEntries.get(je.getName());
100
                            je = (JarEntry) replaceEntries.get(je.getName());
102
                            is = genericJar.getInputStream(je);
101
                            is = genericJar.getInputStream(je);
103
                        } else {
102
                        } else {
104
                            //use fle from original weblogic jar
103
                            //use fle from original websphere jar
105
                            is = wlJar.getInputStream(je);
104
                            is = wasJar.getInputStream(je);
106
                        }
105
                        }
107
                        newJarStream.putNextEntry(new JarEntry(je.getName()));
106
                        newJarStream.putNextEntry(new JarEntry(je.getName()));
108
                        while ((bytesRead = is.read(buffer)) != -1) {
107
                        while ((bytesRead = is.read(buffer)) != -1) {
109
                            newJarStream.write(buffer, 0, bytesRead);
108
                            newJarStream.write(buffer, 0, bytesRead);
110
                        }
109
                        }
111
                        is.close();
110
                        is.close();
112
                    }
111
                    }
113
                } else {
112
                } else {
114
                    log("Weblogic Jar rebuild needed due to changed "
113
                    log("websphere Jar rebuild needed due to changed "
115
                         + "interface or XML", Project.MSG_VERBOSE);
114
                        + "interface or XML", Project.MSG_VERBOSE);
116
                }
115
                }
117
            } else {
116
            } else {
118
                rebuild = true;
117
                rebuild = true;
119
            }
118
            }
120
        } catch (ClassNotFoundException cnfe) {
119
        } catch (ClassNotFoundException cnfe) {
121
            String cnfmsg = "ClassNotFoundException while processing ejb-jar file"
120
            String cnfmsg = "ClassNotFoundException while processing ejb-jar file"
122
                 + ". Details: "
121
                 + ". Details: "
123
                 + cnfe.getMessage();
122
                 + cnfe.getMessage();
124
            throw new BuildException(cnfmsg, cnfe);
123
            throw new BuildException(cnfmsg, cnfe);
125
        } catch (IOException ioe) {
124
        } catch (IOException ioe) {
126
            String msg = "IOException while processing ejb-jar file "
125
            String msg = "IOException while processing ejb-jar file "
127
                 + ". Details: "
126
                 + ". Details: "
128
                 + ioe.getMessage();
127
                 + ioe.getMessage();
129
            throw new BuildException(msg, ioe);
128
            throw new BuildException(msg, ioe);
130
        } finally {
129
        } finally {
131
            // need to close files and perhaps rename output
130
            // need to close files and perhaps rename output
132
            if (genericJar != null) {
131
            if (genericJar != null) {
133
                try {
132
                try {
134
                    genericJar.close();
133
                    genericJar.close();
135
                } catch (IOException closeException) {
134
                } catch (IOException closeException) {
136
                    // empty
135
                    // Ignore
137
                }
136
                }
138
            }
137
            }
139
            if (wlJar != null) {
138
            if (wasJar != null) {
140
                try {
139
                try {
141
                    wlJar.close();
140
                    wasJar.close();
142
                } catch (IOException closeException) {
141
                } catch (IOException closeException) {
143
                    // empty
142
                    // Ignore
144
                }
143
                }
145
            }
144
            }
146
            if (newJarStream != null) {
145
            if (newJarStream != null) {
147
                try {
146
                try {
148
                    newJarStream.close();
147
                    newJarStream.close();
149
                } catch (IOException closeException) {
148
                } catch (IOException closeException) {
150
                    // empty
149
                    // Ignore
151
                }
150
                }
152
                try {
151
                try {
153
                    FILE_UTILS.rename(newWLJarFile, weblogicJarFile);
152
                    FILE_UTILS.rename(newwasJarFile, websphereJarFile);
154
                } catch (IOException renameException) {
153
                } catch (IOException renameException) {
155
                    log(renameException.getMessage(), Project.MSG_WARN);
154
                    log(renameException.getMessage(), Project.MSG_WARN);
156
                    rebuild = true;
155
                    rebuild = true;
157
                }
156
                }
158
            }
157
            }
159
            if (genericLoader != null
160
                && genericLoader instanceof AntClassLoader) {
161
                AntClassLoader loader = (AntClassLoader) genericLoader;
162
                loader.cleanup();
163
            }
164
        }
158
        }
165
        return rebuild;
159
        return rebuild;
Summary
Number of common nesting structure subtrees1
Number of refactorable cases0
Number of non-refactorable cases1
Time elapsed for finding largest common nesting structure subtrees (ms)191.3
Clones locationClones are in different classes having the same super class
Number of node comparisons388
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements60
    Number of unmapped statements in the first code fragment2
    Number of unmapped statements in the second code fragment2
    Time elapsed for statement mapping (ms)490.0
    Clone typeType 3
    Mapped Statements
    ID Statement ID Statement
    8
    log("Checking if weblogic Jar needs to be rebuilt for jar " + weblogicJarFile.getName(), Project.MSG_VERBOSE);
    8
    log("Checking if weblogic Jar needs to be rebuilt for jar " + weblogicJarFile.getName(), Project.MSG_VERBOSE);
    7
    log("Checking if websphere Jar needs to be rebuilt for jar " + websphereJarFile.getName(), Project.MSG_VERBOSE);
    Differences
    Expression1Expression2Difference
    "Checking if weblogic Jar needs to be rebuilt for jar ""Checking if websphere Jar needs to be rebuilt for jar "LITERAL_VALUE_MISMATCH
    weblogicJarFilewebsphereJarFileVARIABLE_NAME_MISMATCH
    7
    log("Checking if websphere Jar needs to be rebuilt for jar " + websphereJarFile.getName(), Project.MSG_VERBOSE);
    9
    if (genericJarFile.exists() && genericJarFile.isFile() && weblogicJarFile.exists() && weblogicJarFile.isFile())
    9
    if (genericJarFile.exists() && genericJarFile.isFile() && weblogicJarFile.exists() && weblogicJarFile.isFile())
    8
    if (genericJarFile.exists() && genericJarFile.isFile() && websphereJarFile.exists() && websphereJarFile.isFile())
    Differences
    Expression1Expression2Difference
    weblogicJarFilewebsphereJarFileVARIABLE_NAME_MISMATCH
    weblogicJarFilewebsphereJarFileVARIABLE_NAME_MISMATCH
    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);
    11
    wlJar = new JarFile(weblogicJarFile);
    10
    wasJar = new JarFile(websphereJarFile);
    Differences
    Expression1Expression2Difference
    wlJarwasJarVARIABLE_NAME_MISMATCH
    weblogicJarFilewebsphereJarFileVARIABLE_NAME_MISMATCH
    10
    wasJar = new JarFile(websphereJarFile);
    12
    Hashtable genericEntries = new Hashtable();
    11
    Hashtable genericEntries = new Hashtable();
    13
    Hashtable wlEntries = new Hashtable();
    13
    Hashtable wlEntries = new Hashtable();
    12
    Hashtable wasEntries = new Hashtable();
    Differences
    Expression1Expression2Difference
    wlEntrieswasEntriesVARIABLE_NAME_MISMATCH
    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(); )
    18
    for (Enumeration e = wlJar.entries(); e.hasMoreElements(); )
    17
    for (Enumeration e = wasJar.entries(); e.hasMoreElements(); )
    Differences
    Expression1Expression2Difference
    wlJarwasJarVARIABLE_NAME_MISMATCH
    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);
    20
    wlEntries.put(je.getName(), je);
    19
    wasEntries.put(je.getName(), je);
    Differences
    Expression1Expression2Difference
    wlEntrieswasEntriesVARIABLE_NAME_MISMATCH
    19
    wasEntries.put(je.getName(), je);
                                                                                                                                            
    20
    ClassLoader genericLoader = getClassLoaderFromJar(genericJarFile);
    Preondition Violations
    Unmatched statement ClassLoader genericLoader=getClassLoaderFromJar(genericJarFile); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
    20
    ClassLoader genericLoader = getClassLoaderFromJar(genericJarFile);
    21
    genericLoader = getClassLoaderFromJar(genericJarFile);
    21
    genericLoader = getClassLoaderFromJar(genericJarFile);
    Preondition Violations
    Unmatched statement genericLoader=getClassLoaderFromJar(genericJarFile); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
                                                                                                                    
    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))
    24
    if (wlEntries.containsKey(filepath))
    23
    if (wasEntries.containsKey(filepath))
    Differences
    Expression1Expression2Difference
    wlEntrieswasEntriesVARIABLE_NAME_MISMATCH
    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);
    26
    JarEntry wlEntry = (JarEntry)wlEntries.get(filepath);
    25
    JarEntry wasEntry = (JarEntry)wasEntries.get(filepath);
    Differences
    Expression1Expression2Difference
    wlEntrywasEntryVARIABLE_NAME_MISMATCH
    wlEntrieswasEntriesVARIABLE_NAME_MISMATCH
    25
    JarEntry wasEntry = (JarEntry)wasEntries.get(filepath);
    27
    if ((genericEntry.getCrc() != wlEntry.getCrc()) || (genericEntry.getSize() != wlEntry.getSize()))
    27
    if ((genericEntry.getCrc() != wlEntry.getCrc()) || (genericEntry.getSize() != wlEntry.getSize()))
    26
    if ((genericEntry.getCrc() != wasEntry.getCrc()) || (genericEntry.getSize() != wasEntry.getSize()))
    Differences
    Expression1Expression2Difference
    wlEntrywasEntryVARIABLE_NAME_MISMATCH
    wlEntrywasEntryVARIABLE_NAME_MISMATCH
    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;
    40
    break;
    Preondition Violations
    Unmatched break;
                        
                        
    39
    break;
    Preondition Violations
    Unmatched break;
    39
    break;
    else
    else
    41
    log("File " + filepath + " not present in weblogic jar", Project.MSG_VERBOSE);
    41
    log("File " + filepath + " not present in weblogic jar", Project.MSG_VERBOSE);
    40
    log("File " + filepath + " not present in websphere jar", Project.MSG_VERBOSE);
    Differences
    Expression1Expression2Difference
    " not present in weblogic jar"" not present in websphere jar"LITERAL_VALUE_MISMATCH
    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");
    46
    newWLJarFile = new File(weblogicJarFile.getAbsolutePath() + ".temp");
    45
    newwasJarFile = new File(websphereJarFile.getAbsolutePath() + ".temp");
    Differences
    Expression1Expression2Difference
    newWLJarFilenewwasJarFileVARIABLE_NAME_MISMATCH
    weblogicJarFilewebsphereJarFileVARIABLE_NAME_MISMATCH
    45
    newwasJarFile = new File(websphereJarFile.getAbsolutePath() + ".temp");
    47
    if (newWLJarFile.exists())
    47
    if (newWLJarFile.exists())
    46
    if (newwasJarFile.exists())
    Differences
    Expression1Expression2Difference
    newWLJarFilenewwasJarFileVARIABLE_NAME_MISMATCH
    46
    if (newwasJarFile.exists())
    48
    newWLJarFile.delete();
    48
    newWLJarFile.delete();
    47
    newwasJarFile.delete();
    Differences
    Expression1Expression2Difference
    newWLJarFilenewwasJarFileVARIABLE_NAME_MISMATCH
    47
    newwasJarFile.delete();
    49
    newJarStream = new JarOutputStream(new FileOutputStream(newWLJarFile));
    49
    newJarStream = new JarOutputStream(new FileOutputStream(newWLJarFile));
    48
    newJarStream = new JarOutputStream(new FileOutputStream(newwasJarFile));
    Differences
    Expression1Expression2Difference
    newWLJarFilenewwasJarFileVARIABLE_NAME_MISMATCH
    48
    newJarStream = new JarOutputStream(new FileOutputStream(newwasJarFile));
    50
    newJarStream.setLevel(0);
    49
    newJarStream.setLevel(0);
    51
    for (Enumeration e = wlEntries.elements(); e.hasMoreElements(); )
    51
    for (Enumeration e = wlEntries.elements(); e.hasMoreElements(); )
    50
    for (Enumeration e = wasEntries.elements(); e.hasMoreElements(); )
    Differences
    Expression1Expression2Difference
    wlEntrieswasEntriesVARIABLE_NAME_MISMATCH
    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);
    63
    is = wlJar.getInputStream(je);
    62
    is = wasJar.getInputStream(je);
    Differences
    Expression1Expression2Difference
    wlJarwasJarVARIABLE_NAME_MISMATCH
    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);
    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);
    Differences
    Expression1Expression2Difference
    "Weblogic Jar rebuild needed due to changed ""websphere Jar rebuild needed due to changed "LITERAL_VALUE_MISMATCH
    67
    log("websphere Jar rebuild needed due to changed " + "interface or XML", Project.MSG_VERBOSE);
    else
    else
    69
    rebuild = true;
    68
    rebuild = true;
    Precondition Violations (4)
    Row Violation
    1Unmatched statement ClassLoader genericLoader=getClassLoaderFromJar(genericJarFile); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
    2Unmatched statement genericLoader=getClassLoaderFromJar(genericJarFile); cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted
    3Unmatched break;
    4Unmatched break;