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

(-)a/projectapi/apichanges.xml (+16 lines)
Lines 104-109 Link Here
104
    <!-- ACTUAL CHANGES BEGIN HERE: -->
104
    <!-- ACTUAL CHANGES BEGIN HERE: -->
105
105
106
    <changes>
106
    <changes>
107
108
        <change id="lookupprovider-ann">
109
            <api name="general"/>
110
            <summary>Add annotation @LookupProvider.Register</summary>
111
            <version major="1" minor="21"/>
112
            <date day="13" month="11" year="2008"/>
113
            <author login="mkleint"/>
114
            <compatibility addition="yes" binary="compatible" deletion="no" deprecation="no" modification="no" semantic="compatible" source="compatible"/>
115
            <description>
116
                <p>
117
                  Add annotation @LookupProvider.Register to replace registration in layer files.
118
                </p>
119
            </description>
120
            <class package="org.netbeans.spi.project" name="LookupProvider"/>
121
            <issue number="152392"/>
122
        </change>
107
123
108
        <change id="test-single-method">
124
        <change id="test-single-method">
109
            <api name="general"/>
125
            <api name="general"/>
(-)a/projectapi/manifest.mf (-1 / +1 lines)
Lines 1-7 Link Here
1
Manifest-Version: 1.0
1
Manifest-Version: 1.0
2
OpenIDE-Module: org.netbeans.modules.projectapi/1
2
OpenIDE-Module: org.netbeans.modules.projectapi/1
3
OpenIDE-Module-Install: org/netbeans/modules/projectapi/Installer.class
3
OpenIDE-Module-Install: org/netbeans/modules/projectapi/Installer.class
4
OpenIDE-Module-Specification-Version: 1.20
4
OpenIDE-Module-Specification-Version: 1.21
5
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/projectapi/Bundle.properties
5
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/projectapi/Bundle.properties
6
OpenIDE-Module-Layer: org/netbeans/modules/projectapi/layer.xml
6
OpenIDE-Module-Layer: org/netbeans/modules/projectapi/layer.xml
7
7
(-)a/projectapi/nbproject/project.properties (+1 lines)
Lines 43-48 Link Here
43
javac.source=1.5
43
javac.source=1.5
44
javadoc.arch=${basedir}/arch.xml
44
javadoc.arch=${basedir}/arch.xml
45
javadoc.apichanges=${basedir}/apichanges.xml
45
javadoc.apichanges=${basedir}/apichanges.xml
46
cp.extra=${nb_all}/apisupport.harness/external/openjdk-javac-6-b12.jar
46
47
47
# masterfs needed for the usual reasons; core.jar needed for ArchiveURLMapper:
48
# masterfs needed for the usual reasons; core.jar needed for ArchiveURLMapper:
48
test.unit.run.cp.extra=${core.startup.dir}/core/core.jar:${o.n.bootstrap.dir}/lib/boot.jar
49
test.unit.run.cp.extra=${core.startup.dir}/core/core.jar:${o.n.bootstrap.dir}/lib/boot.jar
(-)7fe5cbc7e421 (+78 lines)
Added Link Here
1
/*
2
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3
 *
4
 * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
5
 *
6
 * The contents of this file are subject to the terms of either the GNU
7
 * General Public License Version 2 only ("GPL") or the Common
8
 * Development and Distribution License("CDDL") (collectively, the
9
 * "License"). You may not use this file except in compliance with the
10
 * License. You can obtain a copy of the License at
11
 * http://www.netbeans.org/cddl-gplv2.html
12
 * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
13
 * specific language governing permissions and limitations under the
14
 * License.  When distributing the software, include this License Header
15
 * Notice in each file and include the License file at
16
 * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
17
 * particular file as subject to the "Classpath" exception as provided
18
 * by Sun in the GPL Version 2 section of the License file that
19
 * accompanied this code. If applicable, add the following below the
20
 * License Header, with the fields enclosed by brackets [] replaced by
21
 * your own identifying information:
22
 * "Portions Copyrighted [year] [name of copyright owner]"
23
 *
24
 * If you wish your version of this file to be governed by only the CDDL
25
 * or only the GPL Version 2, indicate your decision by adding
26
 * "[Contributor] elects to include this software in this distribution
27
 * under the [CDDL or GPL Version 2] license." If you do not indicate a
28
 * single choice of license, a recipient has the option to distribute
29
 * your version of this file under either the CDDL, the GPL Version 2 or
30
 * to extend the choice of license to its licensees as provided above.
31
 * However, if you add GPL Version 2 code and therefore, elected the GPL
32
 * Version 2 license, then the option applies only if the new code is
33
 * made subject to such option by the copyright holder.
34
 *
35
 * Contributor(s):
36
 *
37
 * Portions Copyrighted 2008 Sun Microsystems, Inc.
38
 */
39
40
package org.netbeans.modules.projectapi;
41
42
import java.util.Set;
43
import javax.annotation.processing.Processor;
44
import javax.annotation.processing.RoundEnvironment;
45
import javax.annotation.processing.SupportedAnnotationTypes;
46
import javax.annotation.processing.SupportedSourceVersion;
47
import javax.lang.model.SourceVersion;
48
import javax.lang.model.element.Element;
49
import javax.lang.model.element.TypeElement;
50
import org.netbeans.spi.project.LookupProvider;
51
import org.openide.filesystems.annotations.LayerGeneratingProcessor;
52
import org.openide.filesystems.annotations.LayerGenerationException;
53
import org.openide.util.lookup.ServiceProvider;
54
55
/**
56
 * processor for LookupProvider.Register annotation.
57
 * @author mkleint
58
 */
59
@ServiceProvider(service=Processor.class)
60
@SupportedSourceVersion(SourceVersion.RELEASE_6)
61
@SupportedAnnotationTypes("org.netbeans.spi.project.LookupProvider.Register")
62
public class LookupProviderAnnotationProcessor extends LayerGeneratingProcessor {
63
64
    @Override
65
    protected boolean handleProcess(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) throws LayerGenerationException {
66
        if (roundEnv.processingOver()) {
67
            return false;
68
        }
69
        for (Element e : roundEnv.getElementsAnnotatedWith(LookupProvider.Register.class)) {
70
            LookupProvider.Register lpr = e.getAnnotation(LookupProvider.Register.class);
71
            for (String type : lpr.projectType()) {
72
                layer(e).instanceFile("Projects/" + type + "/Lookup", null, LookupProvider.class).write();
73
            }
74
        }
75
        return true;
76
    }
77
78
}
(-)a/projectapi/src/org/netbeans/spi/project/LookupProvider.java (+13 lines)
Lines 64-67 Link Here
64
     * @return a {@link org.openide.util.Lookup} instance that is to be added to the project's lookup, never null.
64
     * @return a {@link org.openide.util.Lookup} instance that is to be added to the project's lookup, never null.
65
     */ 
65
     */ 
66
    Lookup createAdditionalLookup(Lookup baseContext);
66
    Lookup createAdditionalLookup(Lookup baseContext);
67
68
    /**
69
     * annotation to register LookupProvider instances.
70
     * @since org.netbeans.modules.projectapi 1.21
71
     */
72
    public @interface Register {
73
        /**
74
         * token(s) denoting one or more project types, eg. org-netbeans-modules-maven or org-netbeans-modules-java-j2seproject
75
         * @return
76
         */
77
        String[] projectType();
78
    }
79
67
}
80
}

Return to bug 152392