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 (!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: 26 Number of AST nodes: 26
1
if (!rebuild) {
1
if (!rebuild) {
2
                    log("No rebuild needed - updating jar", Project.MSG_VERBOSE);
2
                    log("No rebuild needed - updating jar", Project.MSG_VERBOSE);
3
                    newWLJarFile = new File(weblogicJarFile.getAbsolutePath() + ".temp");
3
                    newwasJarFile = new File(websphereJarFile.getAbsolutePath() + ".temp");
4
                    if (newWLJarFile.exists()) {
4
                    if (newwasJarFile.exists()) {
5
                        newWLJarFile.delete();
5
                        newwasJarFile.delete();
6
                    }
6
                    }
7
                    newJarStream = new JarOutputStream(new FileOutputStream(newWLJarFile));
7
                    newJarStream = new JarOutputStream(new FileOutputStream(newwasJarFile));
8
                    newJarStream.setLevel(0);
8
                    newJarStream.setLevel(0);
9
                    //Copy files from old weblogic jar
9
                    //Copy files from old websphere jar
10
                    for (Enumeration e = wlEntries.elements(); e.hasMoreElements();) {
10
                    for (Enumeration e = wasEntries.elements(); e.hasMoreElements();) {
11
                        byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
11
                        byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
12
                        int bytesRead;
12
                        int bytesRead;
13
                        InputStream is;
13
                        InputStream is;
14
                        JarEntry je = (JarEntry) e.nextElement();
14
                        JarEntry je = (JarEntry) e.nextElement();
15
                        if (je.getCompressedSize() == -1
15
                        if (je.getCompressedSize() == -1
16
                            || je.getCompressedSize() == je.getSize()) {
16
                            || je.getCompressedSize() == je.getSize()) {
17
                            newJarStream.setLevel(0);
17
                            newJarStream.setLevel(0);
18
                        } else {
18
                        } else {
19
                            newJarStream.setLevel(JAR_COMPRESS_LEVEL);
19
                            newJarStream.setLevel(JAR_COMPRESS_LEVEL);
20
                        }
20
                        }
21
                        // Update with changed Bean class
21
                        // Update with changed Bean class
22
                        if (replaceEntries.containsKey(je.getName())) {
22
                        if (replaceEntries.containsKey(je.getName())) {
23
                            log("Updating Bean class from generic Jar "
23
                            log("Updating Bean class from generic Jar "
24
  
24
 + je.getName(),
25
                              + je.getName(), Project.MSG_VERBOSE);
25
                                Project.MSG_VERBOSE);
26
                            // Use the entry from the generic jar
26
                            // Use the entry from the generic jar
27
                            je = (JarEntry) replaceEntries.get(je.getName());
27
                            je = (JarEntry) replaceEntries.get(je.getName());
28
                            is = genericJar.getInputStream(je);
28
                            is = genericJar.getInputStream(je);
29
                        } else {
29
                        } else {
30
                            //use fle from original weblogic jar
30
                            //use fle from original websphere jar
31
                            is = wlJar.getInputStream(je);
31
                            is = wasJar.getInputStream(je);
32
                        }
32
                        }
33
                        newJarStream.putNextEntry(new JarEntry(je.getName()));
33
                        newJarStream.putNextEntry(new JarEntry(je.getName()));
34
                        while ((bytesRead = is.read(buffer)) != -1) {
34
                        while ((bytesRead = is.read(buffer)) != -1) {
35
                            newJarStream.write(buffer, 0, bytesRead);
35
                            newJarStream.write(buffer, 0, bytesRead);
36
                        }
36
                        }
37
                        is.close();
37
                        is.close();
38
                    }
38
                    }
39
                } else {
39
                } else {
40
                    log("Weblogic Jar rebuild needed due to changed "
40
                    log("websphere Jar rebuild needed due to changed "
41
                         + "interface or XML", Project.MSG_VERBOSE);
41
                        + "interface or XML", Project.MSG_VERBOSE);
42
                }
42
                }
43
            } else {
43
            } else {
44
                rebuild = true;
44
                rebuild = true;
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)1.4
Clones locationClones are in different classes having the same super class
Number of node comparisons154
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements26
    Number of unmapped statements in the first code fragment0
    Number of unmapped statements in the second code fragment0
    Time elapsed for statement mapping (ms)56.8
    Clone typeType 2
    Mapped Statements
    ID Statement ID Statement
    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);
    69
    rebuild = true;
    68
    rebuild = true;
    Precondition Violations (1)
    Row Violation
    1Clone fragment #1 returns variables newWLJarFile, newJarStream, rebuild , while Clone fragment #2 returns variables newwasJarFile, newJarStream, rebuild