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: 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
            }
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)15.3
Clones locationClones are in different classes having the same super class
Number of node comparisons387
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements59
    Number of unmapped statements in the first code fragment2
    Number of unmapped statements in the second code fragment2
    Time elapsed for statement mapping (ms)132.3
    Clone typeType 3
    Mapped Statements
    ID Statement ID Statement
    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;