if ((outputFilterChains != null && outputFilterChains.size() > 0) || !(outputEncoding.equalsIgnoreCase(inputEncoding))) { try { LeadPipeInputStream snk = new LeadPipeInputStream(); snk.setManagingComponent(managingTask); InputStream outPumpIn = snk; Reader reader = new InputStreamReader(outPumpIn, inputEncoding); if (outputFilterChains != null && outputFilterChains.size() > 0) { ChainReaderHelper helper = new ChainReaderHelper(); helper.setProject(managingTask.getProject()); helper.setPrimaryReader(reader); helper.setFilterChains(outputFilterChains); reader = helper.getAssembledReader(); } outPumpIn = new ReaderInputStream(reader, outputEncoding); Thread t = new Thread(threadGroup, new StreamPumper( outPumpIn, outputStream, true), "output pumper"); t.setPriority(Thread.MAX_PRIORITY); outputStream = new PipedOutputStream(snk); t.start(); } catch (IOException eyeOhEx) { throw new BuildException( "error setting up output stream", eyeOhEx); } }
if ((errorFilterChains != null && errorFilterChains.size() > 0) || !(errorEncoding.equalsIgnoreCase(inputEncoding))) { try { LeadPipeInputStream snk = new LeadPipeInputStream(); snk.setManagingComponent(managingTask); InputStream errPumpIn = snk; Reader reader = new InputStreamReader(errPumpIn, inputEncoding); if (errorFilterChains != null && errorFilterChains.size() > 0) { ChainReaderHelper helper = new ChainReaderHelper(); helper.setProject(managingTask.getProject()); helper.setPrimaryReader(reader); helper.setFilterChains(errorFilterChains); reader = helper.getAssembledReader(); } errPumpIn = new ReaderInputStream(reader, errorEncoding); Thread t = new Thread(threadGroup, new StreamPumper( errPumpIn, errorStream, true), "error pumper"); t.setPriority(Thread.MAX_PRIORITY); errorStream = new PipedOutputStream(snk); t.start(); } catch (IOException eyeOhEx) { throw new BuildException( "error setting up error stream", eyeOhEx); } }
Clone fragments detected by clone detection tool
File path: /apache-ant-1.7.0/src/org/apache/tools/ant/taskdefs/Redirector.java File path: /apache-ant-1.7.0/src/org/apache/tools/ant/taskdefs/Redirector.java
Method name: void createStreams() Method name: void createStreams()
Number of AST nodes: 17 Number of AST nodes: 17
1
if ((outputFilterChains != null && outputFilterChains.size() > 0)
1
if ((errorFilterChains != null && errorFilterChains.size() > 0)
2
            || !(outputEncoding.equalsIgnoreCase(inputEncoding))) {
2
            || !(errorEncoding.equalsIgnoreCase(inputEncoding))) {
3
            try {
3
            try {
4
                LeadPipeInputStream snk = new LeadPipeInputStream();
4
                LeadPipeInputStream snk = new LeadPipeInputStream();
5
                snk.setManagingComponent(managingTask);
5
                snk.setManagingComponent(managingTask);
6
                InputStream outPumpIn = snk;
6
                InputStream errPumpIn = snk;
7
                Reader reader = new InputStreamReader(outPumpIn, inputEncoding);
7
                Reader reader = new InputStreamReader(errPumpIn, inputEncoding);
8
                if (outputFilterChains != null && outputFilterChains.size() > 0) {
8
                if (errorFilterChains != null && errorFilterChains.size() > 0) {
9
                    ChainReaderHelper helper = new ChainReaderHelper();
9
                    ChainReaderHelper helper = new ChainReaderHelper();
10
                    helper.setProject(managingTask.getProject());
10
                    helper.setProject(managingTask.getProject());
11
                    helper.setPrimaryReader(reader);
11
                    helper.setPrimaryReader(reader);
12
                    helper.setFilterChains(outputFilterChains);
12
                    helper.setFilterChains(errorFilterChains);
13
                    reader = helper.getAssembledReader();
13
                    reader = helper.getAssembledReader();
14
                }
14
                }
15
                outPumpIn = new ReaderInputStream(reader, outputEncoding);
15
                errPumpIn = new ReaderInputStream(reader, errorEncoding);
16
                Thread t = new Thread(threadGroup, new StreamPumper(
16
                Thread t = new Thread(threadGroup, new StreamPumper(
17
                    outPumpIn, outputStream, true), "output pumper");
17
                    errPumpIn, errorStream, true), "error pumper");
18
                t.setPriority(Thread.MAX_PRIORITY);
18
                t.setPriority(Thread.MAX_PRIORITY);
19
                outputStream = new PipedOutputStream(snk);
19
                errorStream = new PipedOutputStream(snk);
20
                t.start();
20
                t.start();
21
            } catch (IOException eyeOhEx) {
21
            } catch (IOException eyeOhEx) {
22
                throw new BuildException(
22
                throw new BuildException(
23
                    "error setting up output stream", eyeOhEx);
23
                    "error setting up error stream", eyeOhEx);
24
            }
24
            }
25
        }
25
        }
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.6
Clones locationClones are in the same method
Number of node comparisons137
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements17
    Number of unmapped statements in the first code fragment0
    Number of unmapped statements in the second code fragment0
    Time elapsed for statement mapping (ms)10.4
    Clone typeType 2
    Mapped Statements
    ID Statement ID Statement
    33
    if ((outputFilterChains != null && outputFilterChains.size() > 0) || !(outputEncoding.equalsIgnoreCase(inputEncoding)))
    33
    if ((outputFilterChains != null && outputFilterChains.size() > 0) || !(outputEncoding.equalsIgnoreCase(inputEncoding)))
    50
    if ((errorFilterChains != null && errorFilterChains.size() > 0) || !(errorEncoding.equalsIgnoreCase(inputEncoding)))
    Differences
    Expression1Expression2Difference
    outputFilterChainserrorFilterChainsVARIABLE_NAME_MISMATCH
    outputFilterChainserrorFilterChainsVARIABLE_NAME_MISMATCH
    outputEncodingerrorEncodingVARIABLE_NAME_MISMATCH
    50
    if ((errorFilterChains != null && errorFilterChains.size() > 0) || !(errorEncoding.equalsIgnoreCase(inputEncoding)))
    34
    try
    34
    try
    51
    try
    Differences
    Expression1Expression2Difference
    "error setting up output stream""error setting up error stream"LITERAL_VALUE_MISMATCH
    51
    try
    35
    LeadPipeInputStream snk = new LeadPipeInputStream();
    52
    LeadPipeInputStream snk = new LeadPipeInputStream();
    36
    snk.setManagingComponent(managingTask);
    53
    snk.setManagingComponent(managingTask);
    37
    InputStream outPumpIn = snk;
    37
    InputStream outPumpIn = snk;
    54
    InputStream errPumpIn = snk;
    Differences
    Expression1Expression2Difference
    outPumpInerrPumpInVARIABLE_NAME_MISMATCH
    54
    InputStream errPumpIn = snk;
    38
    Reader reader = new InputStreamReader(outPumpIn, inputEncoding);
    38
    Reader reader = new InputStreamReader(outPumpIn, inputEncoding);
    55
    Reader reader = new InputStreamReader(errPumpIn, inputEncoding);
    Differences
    Expression1Expression2Difference
    outPumpInerrPumpInVARIABLE_NAME_MISMATCH
    55
    Reader reader = new InputStreamReader(errPumpIn, inputEncoding);
    39
    if (outputFilterChains != null && outputFilterChains.size() > 0)
    39
    if (outputFilterChains != null && outputFilterChains.size() > 0)
    56
    if (errorFilterChains != null && errorFilterChains.size() > 0)
    Differences
    Expression1Expression2Difference
    outputFilterChainserrorFilterChainsVARIABLE_NAME_MISMATCH
    outputFilterChainserrorFilterChainsVARIABLE_NAME_MISMATCH
    56
    if (errorFilterChains != null && errorFilterChains.size() > 0)
    40
    ChainReaderHelper helper = new ChainReaderHelper();
    57
    ChainReaderHelper helper = new ChainReaderHelper();
    41
    helper.setProject(managingTask.getProject());
    58
    helper.setProject(managingTask.getProject());
    42
    helper.setPrimaryReader(reader);
    59
    helper.setPrimaryReader(reader);
    43
    helper.setFilterChains(outputFilterChains);
    43
    helper.setFilterChains(outputFilterChains);
    60
    helper.setFilterChains(errorFilterChains);
    Differences
    Expression1Expression2Difference
    outputFilterChainserrorFilterChainsVARIABLE_NAME_MISMATCH
    60
    helper.setFilterChains(errorFilterChains);
    44
    reader = helper.getAssembledReader();
    61
    reader = helper.getAssembledReader();
    45
    outPumpIn = new ReaderInputStream(reader, outputEncoding);
    45
    outPumpIn = new ReaderInputStream(reader, outputEncoding);
    62
    errPumpIn = new ReaderInputStream(reader, errorEncoding);
    Differences
    Expression1Expression2Difference
    outPumpInerrPumpInVARIABLE_NAME_MISMATCH
    outputEncodingerrorEncodingVARIABLE_NAME_MISMATCH
    62
    errPumpIn = new ReaderInputStream(reader, errorEncoding);
    46
    Thread t = new Thread(threadGroup, new StreamPumper(outPumpIn, outputStream, true), "output pumper");
    46
    Thread t = new Thread(threadGroup, new StreamPumper(outPumpIn, outputStream, true), "output pumper");
    63
    Thread t = new Thread(threadGroup, new StreamPumper(errPumpIn, errorStream, true), "error pumper");
    Differences
    Expression1Expression2Difference
    outPumpInerrPumpInVARIABLE_NAME_MISMATCH
    outputStreamerrorStreamVARIABLE_NAME_MISMATCH
    "output pumper""error pumper"LITERAL_VALUE_MISMATCH
    63
    Thread t = new Thread(threadGroup, new StreamPumper(errPumpIn, errorStream, true), "error pumper");
    47
    t.setPriority(Thread.MAX_PRIORITY);
    64
    t.setPriority(Thread.MAX_PRIORITY);
    48
    outputStream = new PipedOutputStream(snk);
    48
    outputStream = new PipedOutputStream(snk);
    65
    errorStream = new PipedOutputStream(snk);
    Differences
    Expression1Expression2Difference
    outputStreamerrorStreamVARIABLE_NAME_MISMATCH
    Preondition Violations
    Expression outputStream is a field being modified, and thus it cannot be parameterized
    Expression errorStream is a field being modified, and thus it cannot be parameterized
    65
    errorStream = new PipedOutputStream(snk);
    49
    t.start();
    66
    t.start();
    Precondition Violations (2)
    Row Violation
    1Expression outputStream is a field being modified, and thus it cannot be parameterized
    2Expression errorStream is a field being modified, and thus it cannot be parameterized