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 198982
Collapse All | Expand All

(-)a460295a66ea (+131 lines)
Added Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 1997-2010 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
 * Contributor(s):
28
 *
29
 * The Original Software is NetBeans. The Initial Developer of the Original
30
 * Software is Sun Microsystems, Inc. Portions Copyright 1997-2008 Sun
31
 * Microsystems, Inc. All Rights Reserved.
32
 *
33
 * If you wish your version of this file to be governed by only the CDDL
34
 * or only the GPL Version 2, indicate your decision by adding
35
 * "[Contributor] elects to include this software in this distribution
36
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
37
 * single choice of license, a recipient has the option to distribute
38
 * your version of this file under either the CDDL, the GPL Version 2 or
39
 * to extend the choice of license to its licensees as provided above.
40
 * However, if you add GPL Version 2 code and therefore, elected the GPL
41
 * Version 2 license, then the option applies only if the new code is
42
 * made subject to such option by the copyright holder.
43
 */
44
45
package org.netbeans.core.netigso;
46
47
import java.net.URL;
48
import org.netbeans.core.startup.*;
49
import java.io.File;
50
import java.io.IOException;
51
import java.util.Locale;
52
import java.util.concurrent.Callable;
53
import org.netbeans.Module;
54
import org.netbeans.ModuleManager;
55
import org.netbeans.SetupHid;
56
import org.openide.util.Lookup;
57
import org.openide.util.Mutex.ExceptionAction;
58
import org.osgi.framework.Bundle;
59
60
/**
61
 * Do we correctly handle META-INF/services in bundles?
62
 *
63
 * @author Jaroslav Tulach
64
 */
65
public class BundleGetEntryTest extends SetupHid {
66
    private static Module m1;
67
    private static ModuleManager mgr;
68
    private int cnt;
69
    private File jar;
70
    private File simpleModule;
71
72
    public BundleGetEntryTest(String name) {
73
        super(name);
74
    }
75
76
    protected @Override void setUp() throws Exception {
77
        Locale.setDefault(Locale.US);
78
        clearWorkDir();
79
        File ud = new File(getWorkDir(), "ud");
80
        ud.mkdirs();
81
        System.setProperty("netbeans.user", ud.getPath());
82
        
83
        data = new File(getDataDir(), "jars");
84
        jars = new File(getWorkDir(), "space in path");
85
        jars.mkdirs();
86
        simpleModule = createTestJAR("activate", null);
87
        String mf = "OpenIDE-Module: can.read.metainf\n"
88
                + "OpenIDE-Public-Packages: org.activate\n"
89
                + "\n"
90
                + "\n";
91
       jar = NetigsoHid.changeManifest(getWorkDir(), simpleModule, mf);
92
    }
93
94
    public void testActivation() throws Exception {
95
        ModuleSystem ms = Main.getModuleSystem();
96
        mgr = ms.getManager();
97
        mgr.mutex().writeAccess(new ExceptionAction<Void>() {
98
            @Override
99
            public Void run() throws Exception {
100
                Callable<?> fr = Lookup.getDefault().lookup(Callable.class);
101
                assertNull("No registration found yet", fr);
102
103
104
                m1 = mgr.create(jar, null, false, false, false);
105
                mgr.enable(m1);
106
107
                Module m2 = mgr.create(simpleModule, null, false, false, false);
108
                mgr.enable(m2);
109
110
                Netigso n = Lookup.getDefault().lookup(Netigso.class);
111
                Bundle bundle = null;
112
                for (Bundle b : n.getFramework().getBundleContext().getBundles()) {
113
                    if (b.getSymbolicName().equals("can.read.metainf")) {
114
                        bundle = b;
115
                        break;
116
                    }
117
                }
118
                assertNotNull("Bundle found", bundle);
119
                URL res = bundle.getEntry("META-INF/services/java.lang.concurrent.Callable");
120
                assertNotNull("Entry found", res);
121
122
                mgr.disable(m1);
123
124
                return null;
125
            }
126
        });
127
    }
128
    private File createTestJAR(String name, String srcdir, File... classpath) throws IOException {
129
        return createTestJAR(data, jars, name, srcdir, classpath);
130
    }
131
}

Return to bug 198982