This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 243322
Collapse All | Expand All

(-)a/debugger.jpda.js/nbproject/project.xml (-1 / +11 lines)
Lines 46-52 Link Here
46
<project xmlns="http://www.netbeans.org/ns/project/1">
46
<project xmlns="http://www.netbeans.org/ns/project/1">
47
    <type>org.netbeans.modules.apisupport.project</type>
47
    <type>org.netbeans.modules.apisupport.project</type>
48
    <configuration>
48
    <configuration>
49
        <data xmlns="http://www.netbeans.org/ns/nb-module-project/2">
49
        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
50
            <code-name-base>org.netbeans.modules.debugger.jpda.js</code-name-base>
50
            <code-name-base>org.netbeans.modules.debugger.jpda.js</code-name-base>
51
            <module-dependencies>
51
            <module-dependencies>
52
                <dependency>
52
                <dependency>
Lines 248-253 Link Here
248
                    </run-dependency>
248
                    </run-dependency>
249
                </dependency>
249
                </dependency>
250
            </module-dependencies>
250
            </module-dependencies>
251
            <test-dependencies>
252
                <test-type>
253
                    <name>unit</name>
254
                    <test-dependency>
255
                        <code-name-base>org.netbeans.modules.nbjunit</code-name-base>
256
                        <recursive/>
257
                        <compile-dependency/>
258
                    </test-dependency>
259
                </test-type>
260
            </test-dependencies>
251
            <public-packages/>
261
            <public-packages/>
252
        </data>
262
        </data>
253
    </configuration>
263
    </configuration>
(-)a/debugger.jpda.js/src/org/netbeans/modules/debugger/jpda/js/breakpoints/JSJavaBreakpointsManager.java (-36 lines)
Lines 424-464 Link Here
424
        }
424
        }
425
    }
425
    }
426
    
426
    
427
    private static final class URLEquality {
428
        
429
        private final String protocol;
430
        private final String host;
431
        private final int port;
432
        private final String path;
433
        
434
        public URLEquality(URL url) {
435
            protocol = url.getProtocol().toLowerCase();
436
            String h = url.getHost();
437
            if (h != null) {
438
                h = h.toLowerCase();
439
            }
440
            host = h;
441
            port = url.getPort();
442
            path = url.getPath();
443
        }
444
445
        @Override
446
        public int hashCode() {
447
            return protocol.hashCode() + host.hashCode() + port + path.hashCode();
448
        }
449
450
        @Override
451
        public boolean equals(Object obj) {
452
            if (!(obj instanceof URLEquality)) {
453
                return false;
454
            }
455
            URLEquality ue = (URLEquality) obj;
456
            return protocol.equals(ue.protocol) &&
457
                   (host == null && ue.host == null || host != null && host.equals(ue.host)) &&
458
                   port == ue.port &&
459
                   (path == null && ue.path == null || path != null && path.equals(ue.path));
460
        }
461
        
462
    }
463
427
464
}
428
}
(-)e53dbd7a6525 (+110 lines)
Added Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2014 Oracle and/or its affiliates. All rights reserved.
5
 *
6
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
7
 * Other names may be trademarks of their respective owners.
8
 *
9
 * The contents of this file are subject to the terms of either the GNU
10
 * General Public License Version 2 only ("GPL") or the Common
11
 * Development and Distribution License("CDDL") (collectively, the
12
 * "License"). You may not use this file except in compliance with the
13
 * License. You can obtain a copy of the License at
14
 * http://www.netbeans.org/cddl-gplv2.html
15
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
16
 * specific language governing permissions and limitations under the
17
 * License.  When distributing the software, include this License Header
18
 * Notice in each file and include the License file at
19
 * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
20
 * particular file as subject to the "Classpath" exception as provided
21
 * by Oracle in the GPL Version 2 section of the License file that
22
 * accompanied this code. If applicable, add the following below the
23
 * License Header, with the fields enclosed by brackets [] replaced by
24
 * your own identifying information:
25
 * "Portions Copyrighted [year] [name of copyright owner]"
26
 *
27
 * If you wish your version of this file to be governed by only the CDDL
28
 * or only the GPL Version 2, indicate your decision by adding
29
 * "[Contributor] elects to include this software in this distribution
30
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
31
 * single choice of license, a recipient has the option to distribute
32
 * your version of this file under either the CDDL, the GPL Version 2 or
33
 * to extend the choice of license to its licensees as provided above.
34
 * However, if you add GPL Version 2 code and therefore, elected the GPL
35
 * Version 2 license, then the option applies only if the new code is
36
 * made subject to such option by the copyright holder.
37
 *
38
 * Contributor(s):
39
 *
40
 * Portions Copyrighted 2014 Sun Microsystems, Inc.
41
 */
42
43
package org.netbeans.modules.debugger.jpda.js.breakpoints;
44
45
import java.io.File;
46
import java.io.IOException;
47
import java.net.URL;
48
import java.util.Objects;
49
50
/** Equality for URLs that can handle canonical paths on local file URLs.
51
 *
52
 */
53
final class URLEquality {
54
    private final String protocol;
55
    private final String host;
56
    private final int port;
57
    private final String path;
58
    private final int hash;
59
60
    public URLEquality(URL url) {
61
        protocol = url.getProtocol().toLowerCase();
62
        String h = url.getHost();
63
        if (h != null) {
64
            h = h.toLowerCase();
65
        }
66
        host = h;
67
        port = url.getPort();
68
        path = url.getPath();
69
        int last = url.getPath().lastIndexOf("/");
70
        hash = protocol.hashCode() + host.hashCode() + port + url.getPath().substring(last + 1).hashCode();
71
    }
72
73
    @Override
74
    public int hashCode() {
75
        return hash;
76
    }
77
78
    @Override
79
    public boolean equals(Object obj) {
80
        if (!(obj instanceof URLEquality)) {
81
            return false;
82
        }
83
        URLEquality ue = (URLEquality) obj;
84
        if (ue.hash != hash) {
85
            return false;
86
        }
87
        if (
88
            protocol.equals(ue.protocol) && 
89
            Objects.equals(host, ue.host) &&
90
            port == ue.port
91
        ) {
92
            if (Objects.equals(path, ue.path)) {
93
                return true;
94
            }
95
            if ("file".equals(protocol) && path != null && ue.path != null) { // NOI18N
96
                try {
97
                    File fThis = new File(path);
98
                    File fObj = new File(ue.path);
99
                    if (fThis.getCanonicalPath().equals(fObj.getCanonicalPath())) {
100
                        return true;
101
                    }
102
                } catch (IOException ex) {
103
                    // go on
104
                }
105
            }
106
        }
107
        return false;
108
    }
109
    
110
}
(-)e53dbd7a6525 (+107 lines)
Added Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2014 Oracle and/or its affiliates. All rights reserved.
5
 *
6
 * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
7
 * Other names may be trademarks of their respective owners.
8
 *
9
 * The contents of this file are subject to the terms of either the GNU
10
 * General Public License Version 2 only ("GPL") or the Common
11
 * Development and Distribution License("CDDL") (collectively, the
12
 * "License"). You may not use this file except in compliance with the
13
 * License. You can obtain a copy of the License at
14
 * http://www.netbeans.org/cddl-gplv2.html
15
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
16
 * specific language governing permissions and limitations under the
17
 * License.  When distributing the software, include this License Header
18
 * Notice in each file and include the License file at
19
 * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
20
 * particular file as subject to the "Classpath" exception as provided
21
 * by Oracle in the GPL Version 2 section of the License file that
22
 * accompanied this code. If applicable, add the following below the
23
 * License Header, with the fields enclosed by brackets [] replaced by
24
 * your own identifying information:
25
 * "Portions Copyrighted [year] [name of copyright owner]"
26
 *
27
 * If you wish your version of this file to be governed by only the CDDL
28
 * or only the GPL Version 2, indicate your decision by adding
29
 * "[Contributor] elects to include this software in this distribution
30
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
31
 * single choice of license, a recipient has the option to distribute
32
 * your version of this file under either the CDDL, the GPL Version 2 or
33
 * to extend the choice of license to its licensees as provided above.
34
 * However, if you add GPL Version 2 code and therefore, elected the GPL
35
 * Version 2 license, then the option applies only if the new code is
36
 * made subject to such option by the copyright holder.
37
 *
38
 * Contributor(s):
39
 *
40
 * Portions Copyrighted 2014 Sun Microsystems, Inc.
41
 */
42
43
package org.netbeans.modules.debugger.jpda.js.breakpoints;
44
45
import java.io.File;
46
import java.io.IOException;
47
import org.netbeans.junit.NbTestCase;
48
import org.openide.util.Utilities;
49
50
/**
51
 *
52
 * @author Jaroslav Tulach <jtulach@netbeans.org>
53
 */
54
public class URLEqualityTest extends NbTestCase {
55
    private File orig;
56
    
57
    public URLEqualityTest(String testName) {
58
        super(testName);
59
    }
60
    
61
    @Override
62
    protected void setUp() throws Exception {
63
        clearWorkDir();
64
        File odir = new File(getWorkDir(), "orig");
65
        odir.mkdir();
66
        orig = new File(odir, "test.js");
67
        orig.createNewFile();
68
    }
69
    
70
    @Override
71
    protected void tearDown() throws Exception {
72
        super.tearDown();
73
    }
74
75
    public void testEqualSymlinks() throws Exception {
76
        if (!Utilities.isUnix()) {
77
            return;
78
        }
79
        File copy = new File(getWorkDir(), "copy");
80
        int ret = new ProcessBuilder("ln", "-s", "orig", copy.getPath()).start().waitFor();
81
        assertEquals("Symlink created", ret, 0);
82
        assertTrue("Dir exists", copy.exists());
83
        File f = new File(copy, "test.js");
84
        assertTrue("File exists", f.exists());
85
        
86
        URLEquality oe = new URLEquality(orig.toURI().toURL());
87
        URLEquality ne = new URLEquality(f.toURI().toURL());
88
89
        assertEquals("Same hashCode", oe.hashCode(), ne.hashCode());
90
        assertEquals("They are similar", oe, ne);
91
        
92
    }
93
94
    public void testDifferentInSiblinks() throws Exception {
95
        File copy = new File(getWorkDir(), "copy");
96
        copy.mkdir();
97
        File f = new File(copy, "test.js");
98
        f.createNewFile();
99
        
100
        URLEquality oe = new URLEquality(orig.toURI().toURL());
101
        URLEquality ne = new URLEquality(f.toURI().toURL());
102
        
103
        assertEquals("Same hashCode", oe.hashCode(), ne.hashCode());
104
        assertFalse("Not equals", oe.equals(ne));
105
    }
106
    
107
}

Return to bug 243322