diff --git a/libs.asm/build.xml b/libs.asm/build.xml new file mode 100644 --- /dev/null +++ b/libs.asm/build.xml @@ -0,0 +1,48 @@ + + + + + diff --git a/libs.asm/external/asm-all-5.0.1-license.txt b/libs.asm/external/asm-all-5.0.1-license.txt new file mode 100644 --- /dev/null +++ b/libs.asm/external/asm-all-5.0.1-license.txt @@ -0,0 +1,37 @@ +Name: OW2 ASM +Version: 5.0.1 +License: INRIA license +Origin: http://forge.ow2.org/project/download.php?group_id=23&file_id=19789 +OSR: 13078 +Description: Bytecode manipulation library + +******************************************************************************* +* ASM: a very small and fast Java bytecode manipulation framework +* Copyright (c) 2000-2011 INRIA, France Telecom +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* 1. Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* 2. Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* 3. Neither the name of the copyright holders nor the names of its +* contributors may be used to endorse or promote products derived from +* this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +* THE POSSIBILITY OF SUCH DAMAGE. +******************************************************************************* + diff --git a/libs.asm/external/binaries-list b/libs.asm/external/binaries-list new file mode 100644 --- /dev/null +++ b/libs.asm/external/binaries-list @@ -0,0 +1,1 @@ +2F7553F50B0D14ED811B849C282DA8C1FFC32AAE asm-all-5.0.1.jar diff --git a/libs.asm/manifest.mf b/libs.asm/manifest.mf new file mode 100644 --- /dev/null +++ b/libs.asm/manifest.mf @@ -0,0 +1,4 @@ +Manifest-Version: 1.0 +OpenIDE-Module: org.netbeans.libs.asm +OpenIDE-Module-Localizing-Bundle: org/netbeans/libs/asm/Bundle.properties +OpenIDE-Module-Specification-Version: 5.1 diff --git a/libs.asm/nbproject/project.properties b/libs.asm/nbproject/project.properties new file mode 100644 --- /dev/null +++ b/libs.asm/nbproject/project.properties @@ -0,0 +1,48 @@ +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# +# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved. +# +# Oracle and Java are registered trademarks of Oracle and/or its affiliates. +# Other names may be trademarks of their respective owners. +# +# The contents of this file are subject to the terms of either the GNU +# General Public License Version 2 only ("GPL") or the Common +# Development and Distribution License("CDDL") (collectively, the +# "License"). You may not use this file except in compliance with the +# License. You can obtain a copy of the License at +# http://www.netbeans.org/cddl-gplv2.html +# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the +# specific language governing permissions and limitations under the +# License. When distributing the software, include this License Header +# Notice in each file and include the License file at +# nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the GPL Version 2 section of the License file that +# accompanied this code. If applicable, add the following below the +# License Header, with the fields enclosed by brackets [] replaced by +# your own identifying information: +# "Portions Copyrighted [year] [name of copyright owner]" +# +# Contributor(s): +# +# The Original Software is NetBeans. The Initial Developer of the Original +# Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun +# Microsystems, Inc. All Rights Reserved. +# +# If you wish your version of this file to be governed by only the CDDL +# or only the GPL Version 2, indicate your decision by adding +# "[Contributor] elects to include this software in this distribution +# under the [CDDL or GPL Version 2] license." If you do not indicate a +# single choice of license, a recipient has the option to distribute +# your version of this file under either the CDDL, the GPL Version 2 or +# to extend the choice of license to its licensees as provided above. +# However, if you add GPL Version 2 code and therefore, elected the GPL +# Version 2 license, then the option applies only if the new code is +# made subject to such option by the copyright holder. + +javac.compilerargs=-Xlint -Xlint:-serial +javac.source=1.7 +module.jar.dir=lib + +release.external/asm-all-5.0.1.jar=lib/ext/asm-5.0.1/asm-all-5.0.1.jar +license.file=../external/asm-all-5.0.1-license.txt diff --git a/libs.asm/nbproject/project.xml b/libs.asm/nbproject/project.xml new file mode 100644 --- /dev/null +++ b/libs.asm/nbproject/project.xml @@ -0,0 +1,73 @@ + + + + org.netbeans.modules.apisupport.project + + + org.netbeans.libs.asm + + + org + + + ext/asm-5.0.1/asm-all-5.0.1.jar + external/asm-all-5.0.1.jar + + + + + diff --git a/libs.asm/src/org/netbeans/libs/asm/Bundle.properties b/libs.asm/src/org/netbeans/libs/asm/Bundle.properties new file mode 100644 --- /dev/null +++ b/libs.asm/src/org/netbeans/libs/asm/Bundle.properties @@ -0,0 +1,47 @@ +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# +# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved. +# +# Oracle and Java are registered trademarks of Oracle and/or its affiliates. +# Other names may be trademarks of their respective owners. +# +# The contents of this file are subject to the terms of either the GNU +# General Public License Version 2 only ("GPL") or the Common +# Development and Distribution License("CDDL") (collectively, the +# "License"). You may not use this file except in compliance with the +# License. You can obtain a copy of the License at +# http://www.netbeans.org/cddl-gplv2.html +# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the +# specific language governing permissions and limitations under the +# License. When distributing the software, include this License Header +# Notice in each file and include the License file at +# nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the GPL Version 2 section of the License file that +# accompanied this code. If applicable, add the following below the +# License Header, with the fields enclosed by brackets [] replaced by +# your own identifying information: +# "Portions Copyrighted [year] [name of copyright owner]" +# +# Contributor(s): +# +# The Original Software is NetBeans. The Initial Developer of the Original +# Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun +# Microsystems, Inc. All Rights Reserved. +# +# If you wish your version of this file to be governed by only the CDDL +# or only the GPL Version 2, indicate your decision by adding +# "[Contributor] elects to include this software in this distribution +# under the [CDDL or GPL Version 2] license." If you do not indicate a +# single choice of license, a recipient has the option to distribute +# your version of this file under either the CDDL, the GPL Version 2 or +# to extend the choice of license to its licensees as provided above. +# However, if you add GPL Version 2 code and therefore, elected the GPL +# Version 2 license, then the option applies only if the new code is +# made subject to such option by the copyright holder. + +OpenIDE-Module-Name=OW2 ASM +OpenIDE-Module-Display-Category=Libraries +OpenIDE-Module-Short-Description=Bundles OW2 ASM (bytecode manipulation) +OpenIDE-Module-Long-Description=\ + This module bundles OW2 ASM (bytecode manipulation library). diff --git a/nbbuild/cluster.properties b/nbbuild/cluster.properties --- a/nbbuild/cluster.properties +++ b/nbbuild/cluster.properties @@ -166,6 +166,7 @@ nb.cluster.bootstrap.depends= nb.cluster.bootstrap=\ core.startup,\ + libs.asm,\ o.n.bootstrap,\ openide.filesystems,\ openide.modules,\ diff --git a/o.n.bootstrap/apichanges.xml b/o.n.bootstrap/apichanges.xml --- a/o.n.bootstrap/apichanges.xml +++ b/o.n.bootstrap/apichanges.xml @@ -53,6 +53,23 @@ + + + Ability to join other module + + + + + +

+ Module can be declared as + Module Fragment + to join other module loader. Fragment classes may ask to be bytecode-patched + as superclasses of API classes to preserve compatibility. +

+
+ +
Ability to patch classes diff --git a/o.n.bootstrap/arch.xml b/o.n.bootstrap/arch.xml --- a/o.n.bootstrap/arch.xml +++ b/o.n.bootstrap/arch.xml @@ -1533,10 +1533,33 @@ have access to the class instance that is being defined yet.

+ + +

+ This is a specific case of Patch Classes use-case. + To maintain binary compatibility when removing methods from API classes, + the "removed" implementation is actually moved to a special class, which becomes + a superclass of the original API class. Such special classes should be + separated into a 'compat' module, which is only loaded in presence of old clients. +

+

+ The compat module should declare it is a fragment of the original API module in its + MANIFEST.MF +

+
+OpenIDE-Module-Fragment-Host: orignal.module.codename
+            
+

+ which ensures contents of the compat module will be loaded using classloader + of the 'fragment host' module. The compat module will not get its own classloader. + The special class itself should be marked using PatchPublic annotation, + which causes it will be patched as superclass and inserted into the inheritance + chain. +

+
-