geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jason Dillon <ja...@planet57.com>
Subject Re: svn commit: r432101 - in /geronimo/sandbox/plugins/global-jndi: ./ src/ src/java/ src/java/org/ src/java/org/apache/ src/java/org/apache/geronimo/ src/java/org/apache/geronimo/gjndi/ src/java/org/apache/geronimo/gjndi/java/ src/site/ src/site/apt/ src/...
Date Thu, 17 Aug 2006 15:11:55 GMT
Peep at modules/transaction/pom.xml, you just need to add the <build>  
section to get the standard layout.

I'd really like to fix all modules to use the standard layout...

--jason


On Aug 17, 2006, at 8:04 AM, Dain Sundstrom wrote:

> I'm using the modules pom as a parent, so as soon as you change  
> that (or give me another correct pom), I'll move this to the  
> correct layout.
>
> -dain
>
> On Aug 16, 2006, at 7:28 PM, Jason Dillon wrote:
>
>> Hey if you are gonna add new modules, can you please use the m2  
>> standard layout?
>>
>> --jason
>>
>>
>> On Aug 16, 2006, at 6:33 PM, dain@apache.org wrote:
>>
>>> Author: dain
>>> Date: Wed Aug 16 18:32:59 2006
>>> New Revision: 432101
>>>
>>> URL: http://svn.apache.org/viewvc?rev=432101&view=rev
>>> Log:
>>> Starting of a global jndi plugin
>>>
>>> Added:
>>>     geronimo/sandbox/plugins/global-jndi/
>>>     geronimo/sandbox/plugins/global-jndi/LICENSE.txt
>>>     geronimo/sandbox/plugins/global-jndi/NOTICE.txt
>>>     geronimo/sandbox/plugins/global-jndi/pom.xml
>>>     geronimo/sandbox/plugins/global-jndi/src/
>>>     geronimo/sandbox/plugins/global-jndi/src/java/
>>>     geronimo/sandbox/plugins/global-jndi/src/java/org/
>>>     geronimo/sandbox/plugins/global-jndi/src/java/org/apache/
>>>     geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/
>>>     geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/
>>>     geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/GlobalContextBootstrap.java
>>>     geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/GlobalContextGBean.java
>>>     geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/JavaCompContextGBean.java
>>>     geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/KernelContextGBean.java
>>>     geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/java/
>>>     geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/java/javaURLContextFactory.java
>>>     geronimo/sandbox/plugins/global-jndi/src/site/
>>>     geronimo/sandbox/plugins/global-jndi/src/site/apt/
>>>     geronimo/sandbox/plugins/global-jndi/src/site/site.xml
>>>     geronimo/sandbox/plugins/global-jndi/src/test/
>>>     geronimo/sandbox/plugins/global-jndi/src/test-data/
>>>     geronimo/sandbox/plugins/global-jndi/src/test/org/
>>>     geronimo/sandbox/plugins/global-jndi/src/test/org/apache/
>>>     geronimo/sandbox/plugins/global-jndi/src/test/org/apache/ 
>>> geronimo/
>>>     geronimo/sandbox/plugins/global-jndi/src/test/org/apache/ 
>>> geronimo/gjndi/
>>>     geronimo/sandbox/plugins/global-jndi/src/test/org/apache/ 
>>> geronimo/gjndi/AbstractContextTest.java
>>>     geronimo/sandbox/plugins/global-jndi/src/test/org/apache/ 
>>> geronimo/gjndi/JavaCompContextTest.java
>>>     geronimo/sandbox/plugins/global-jndi/src/test/org/apache/ 
>>> geronimo/gjndi/KernelContextGBeanTest.java
>>>
>>> Added: geronimo/sandbox/plugins/global-jndi/LICENSE.txt
>>> URL: http://svn.apache.org/viewvc/geronimo/sandbox/plugins/global- 
>>> jndi/LICENSE.txt?rev=432101&view=auto
>>> ==================================================================== 
>>> ==========
>>> --- geronimo/sandbox/plugins/global-jndi/LICENSE.txt (added)
>>> +++ geronimo/sandbox/plugins/global-jndi/LICENSE.txt Wed Aug 16  
>>> 18:32:59 2006
>>> @@ -0,0 +1,203 @@
>>> +
>>> +                                 Apache License
>>> +                           Version 2.0, January 2004
>>> +                        http://www.apache.org/licenses/
>>> +
>>> +   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
>>> +
>>> +   1. Definitions.
>>> +
>>> +      "License" shall mean the terms and conditions for use,  
>>> reproduction,
>>> +      and distribution as defined by Sections 1 through 9 of  
>>> this document.
>>> +
>>> +      "Licensor" shall mean the copyright owner or entity  
>>> authorized by
>>> +      the copyright owner that is granting the License.
>>> +
>>> +      "Legal Entity" shall mean the union of the acting entity  
>>> and all
>>> +      other entities that control, are controlled by, or are  
>>> under common
>>> +      control with that entity. For the purposes of this  
>>> definition,
>>> +      "control" means (i) the power, direct or indirect, to  
>>> cause the
>>> +      direction or management of such entity, whether by  
>>> contract or
>>> +      otherwise, or (ii) ownership of fifty percent (50%) or  
>>> more of the
>>> +      outstanding shares, or (iii) beneficial ownership of such  
>>> entity.
>>> +
>>> +      "You" (or "Your") shall mean an individual or Legal Entity
>>> +      exercising permissions granted by this License.
>>> +
>>> +      "Source" form shall mean the preferred form for making  
>>> modifications,
>>> +      including but not limited to software source code,  
>>> documentation
>>> +      source, and configuration files.
>>> +
>>> +      "Object" form shall mean any form resulting from mechanical
>>> +      transformation or translation of a Source form, including but
>>> +      not limited to compiled object code, generated documentation,
>>> +      and conversions to other media types.
>>> +
>>> +      "Work" shall mean the work of authorship, whether in  
>>> Source or
>>> +      Object form, made available under the License, as  
>>> indicated by a
>>> +      copyright notice that is included in or attached to the work
>>> +      (an example is provided in the Appendix below).
>>> +
>>> +      "Derivative Works" shall mean any work, whether in Source  
>>> or Object
>>> +      form, that is based on (or derived from) the Work and for  
>>> which the
>>> +      editorial revisions, annotations, elaborations, or other  
>>> modifications
>>> +      represent, as a whole, an original work of authorship. For  
>>> the purposes
>>> +      of this License, Derivative Works shall not include works  
>>> that remain
>>> +      separable from, or merely link (or bind by name) to the  
>>> interfaces of,
>>> +      the Work and Derivative Works thereof.
>>> +
>>> +      "Contribution" shall mean any work of authorship, including
>>> +      the original version of the Work and any modifications or  
>>> additions
>>> +      to that Work or Derivative Works thereof, that is  
>>> intentionally
>>> +      submitted to Licensor for inclusion in the Work by the  
>>> copyright owner
>>> +      or by an individual or Legal Entity authorized to submit  
>>> on behalf of
>>> +      the copyright owner. For the purposes of this definition,  
>>> "submitted"
>>> +      means any form of electronic, verbal, or written  
>>> communication sent
>>> +      to the Licensor or its representatives, including but not  
>>> limited to
>>> +      communication on electronic mailing lists, source code  
>>> control systems,
>>> +      and issue tracking systems that are managed by, or on  
>>> behalf of, the
>>> +      Licensor for the purpose of discussing and improving the  
>>> Work, but
>>> +      excluding communication that is conspicuously marked or  
>>> otherwise
>>> +      designated in writing by the copyright owner as "Not a  
>>> Contribution."
>>> +
>>> +      "Contributor" shall mean Licensor and any individual or  
>>> Legal Entity
>>> +      on behalf of whom a Contribution has been received by  
>>> Licensor and
>>> +      subsequently incorporated within the Work.
>>> +
>>> +   2. Grant of Copyright License. Subject to the terms and  
>>> conditions of
>>> +      this License, each Contributor hereby grants to You a  
>>> perpetual,
>>> +      worldwide, non-exclusive, no-charge, royalty-free,  
>>> irrevocable
>>> +      copyright license to reproduce, prepare Derivative Works of,
>>> +      publicly display, publicly perform, sublicense, and  
>>> distribute the
>>> +      Work and such Derivative Works in Source or Object form.
>>> +
>>> +   3. Grant of Patent License. Subject to the terms and  
>>> conditions of
>>> +      this License, each Contributor hereby grants to You a  
>>> perpetual,
>>> +      worldwide, non-exclusive, no-charge, royalty-free,  
>>> irrevocable
>>> +      (except as stated in this section) patent license to make,  
>>> have made,
>>> +      use, offer to sell, sell, import, and otherwise transfer  
>>> the Work,
>>> +      where such license applies only to those patent claims  
>>> licensable
>>> +      by such Contributor that are necessarily infringed by their
>>> +      Contribution(s) alone or by combination of their  
>>> Contribution(s)
>>> +      with the Work to which such Contribution(s) was submitted.  
>>> If You
>>> +      institute patent litigation against any entity (including a
>>> +      cross-claim or counterclaim in a lawsuit) alleging that  
>>> the Work
>>> +      or a Contribution incorporated within the Work constitutes  
>>> direct
>>> +      or contributory patent infringement, then any patent licenses
>>> +      granted to You under this License for that Work shall  
>>> terminate
>>> +      as of the date such litigation is filed.
>>> +
>>> +   4. Redistribution. You may reproduce and distribute copies of  
>>> the
>>> +      Work or Derivative Works thereof in any medium, with or  
>>> without
>>> +      modifications, and in Source or Object form, provided that  
>>> You
>>> +      meet the following conditions:
>>> +
>>> +      (a) You must give any other recipients of the Work or
>>> +          Derivative Works a copy of this License; and
>>> +
>>> +      (b) You must cause any modified files to carry prominent  
>>> notices
>>> +          stating that You changed the files; and
>>> +
>>> +      (c) You must retain, in the Source form of any Derivative  
>>> Works
>>> +          that You distribute, all copyright, patent, trademark,  
>>> and
>>> +          attribution notices from the Source form of the Work,
>>> +          excluding those notices that do not pertain to any  
>>> part of
>>> +          the Derivative Works; and
>>> +
>>> +      (d) If the Work includes a "NOTICE" text file as part of its
>>> +          distribution, then any Derivative Works that You  
>>> distribute must
>>> +          include a readable copy of the attribution notices  
>>> contained
>>> +          within such NOTICE file, excluding those notices that  
>>> do not
>>> +          pertain to any part of the Derivative Works, in at  
>>> least one
>>> +          of the following places: within a NOTICE text file  
>>> distributed
>>> +          as part of the Derivative Works; within the Source  
>>> form or
>>> +          documentation, if provided along with the Derivative  
>>> Works; or,
>>> +          within a display generated by the Derivative Works, if  
>>> and
>>> +          wherever such third-party notices normally appear. The  
>>> contents
>>> +          of the NOTICE file are for informational purposes only  
>>> and
>>> +          do not modify the License. You may add Your own  
>>> attribution
>>> +          notices within Derivative Works that You distribute,  
>>> alongside
>>> +          or as an addendum to the NOTICE text from the Work,  
>>> provided
>>> +          that such additional attribution notices cannot be  
>>> construed
>>> +          as modifying the License.
>>> +
>>> +      You may add Your own copyright statement to Your  
>>> modifications and
>>> +      may provide additional or different license terms and  
>>> conditions
>>> +      for use, reproduction, or distribution of Your  
>>> modifications, or
>>> +      for any such Derivative Works as a whole, provided Your use,
>>> +      reproduction, and distribution of the Work otherwise  
>>> complies with
>>> +      the conditions stated in this License.
>>> +
>>> +   5. Submission of Contributions. Unless You explicitly state  
>>> otherwise,
>>> +      any Contribution intentionally submitted for inclusion in  
>>> the Work
>>> +      by You to the Licensor shall be under the terms and  
>>> conditions of
>>> +      this License, without any additional terms or conditions.
>>> +      Notwithstanding the above, nothing herein shall supersede  
>>> or modify
>>> +      the terms of any separate license agreement you may have  
>>> executed
>>> +      with Licensor regarding such Contributions.
>>> +
>>> +   6. Trademarks. This License does not grant permission to use  
>>> the trade
>>> +      names, trademarks, service marks, or product names of the  
>>> Licensor,
>>> +      except as required for reasonable and customary use in  
>>> describing the
>>> +      origin of the Work and reproducing the content of the  
>>> NOTICE file.
>>> +
>>> +   7. Disclaimer of Warranty. Unless required by applicable law or
>>> +      agreed to in writing, Licensor provides the Work (and each
>>> +      Contributor provides its Contributions) on an "AS IS" BASIS,
>>> +      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either  
>>> express or
>>> +      implied, including, without limitation, any warranties or  
>>> conditions
>>> +      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
>>> +      PARTICULAR PURPOSE. You are solely responsible for  
>>> determining the
>>> +      appropriateness of using or redistributing the Work and  
>>> assume any
>>> +      risks associated with Your exercise of permissions under  
>>> this License.
>>> +
>>> +   8. Limitation of Liability. In no event and under no legal  
>>> theory,
>>> +      whether in tort (including negligence), contract, or  
>>> otherwise,
>>> +      unless required by applicable law (such as deliberate and  
>>> grossly
>>> +      negligent acts) or agreed to in writing, shall any  
>>> Contributor be
>>> +      liable to You for damages, including any direct, indirect,  
>>> special,
>>> +      incidental, or consequential damages of any character  
>>> arising as a
>>> +      result of this License or out of the use or inability to  
>>> use the
>>> +      Work (including but not limited to damages for loss of  
>>> goodwill,
>>> +      work stoppage, computer failure or malfunction, or any and  
>>> all
>>> +      other commercial damages or losses), even if such Contributor
>>> +      has been advised of the possibility of such damages.
>>> +
>>> +   9. Accepting Warranty or Additional Liability. While  
>>> redistributing
>>> +      the Work or Derivative Works thereof, You may choose to  
>>> offer,
>>> +      and charge a fee for, acceptance of support, warranty,  
>>> indemnity,
>>> +      or other liability obligations and/or rights consistent  
>>> with this
>>> +      License. However, in accepting such obligations, You may  
>>> act only
>>> +      on Your own behalf and on Your sole responsibility, not on  
>>> behalf
>>> +      of any other Contributor, and only if You agree to indemnify,
>>> +      defend, and hold each Contributor harmless for any liability
>>> +      incurred by, or claims asserted against, such Contributor  
>>> by reason
>>> +      of your accepting any such warranty or additional liability.
>>> +
>>> +   END OF TERMS AND CONDITIONS
>>> +
>>> +   APPENDIX: How to apply the Apache License to your work.
>>> +
>>> +      To apply the Apache License to your work, attach the  
>>> following
>>> +      boilerplate notice, with the fields enclosed by brackets "[]"
>>> +      replaced with your own identifying information. (Don't  
>>> include
>>> +      the brackets!)  The text should be enclosed in the  
>>> appropriate
>>> +      comment syntax for the file format. We also recommend that a
>>> +      file or class name and description of purpose be included  
>>> on the
>>> +      same "printed page" as the copyright notice for easier
>>> +      identification within third-party archives.
>>> +
>>> +   Copyright [yyyy] [name of copyright owner]
>>> +
>>> +   Licensed under the Apache License, Version 2.0 (the "License");
>>> +   you may not use this file except in compliance with the License.
>>> +   You may obtain a copy of the License at
>>> +
>>> +       http://www.apache.org/licenses/LICENSE-2.0
>>> +
>>> +   Unless required by applicable law or agreed to in writing,  
>>> software
>>> +   distributed under the License is distributed on an "AS IS"  
>>> BASIS,
>>> +   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express  
>>> or implied.
>>> +   See the License for the specific language governing  
>>> permissions and
>>> +   limitations under the License.
>>> +
>>>
>>> Added: geronimo/sandbox/plugins/global-jndi/NOTICE.txt
>>> URL: http://svn.apache.org/viewvc/geronimo/sandbox/plugins/global- 
>>> jndi/NOTICE.txt?rev=432101&view=auto
>>> ==================================================================== 
>>> ==========
>>> --- geronimo/sandbox/plugins/global-jndi/NOTICE.txt (added)
>>> +++ geronimo/sandbox/plugins/global-jndi/NOTICE.txt Wed Aug 16  
>>> 18:32:59 2006
>>> @@ -0,0 +1,3 @@
>>> +This product includes software developed by
>>> +The Apache Software Foundation (http://www.apache.org/).
>>> +
>>>
>>> Added: geronimo/sandbox/plugins/global-jndi/pom.xml
>>> URL: http://svn.apache.org/viewvc/geronimo/sandbox/plugins/global- 
>>> jndi/pom.xml?rev=432101&view=auto
>>> ==================================================================== 
>>> ==========
>>> --- geronimo/sandbox/plugins/global-jndi/pom.xml (added)
>>> +++ geronimo/sandbox/plugins/global-jndi/pom.xml Wed Aug 16  
>>> 18:32:59 2006
>>> @@ -0,0 +1,52 @@
>>> +<?xml version="1.0" encoding="ISO-8859-1"?>
>>> +<!--
>>> +    Copyright 2006 The Apache Software Foundation
>>> +
>>> +    Licensed under the Apache License, Version 2.0 (the "License");
>>> +    you may not use this file except in compliance with the  
>>> License.
>>> +    You may obtain a copy of the License at
>>> +
>>> +       http://www.apache.org/licenses/LICENSE-2.0
>>> +
>>> +    Unless required by applicable law or agreed to in writing,  
>>> software
>>> +    distributed under the License is distributed on an "AS IS"  
>>> BASIS,
>>> +    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express  
>>> or implied.
>>> +    See the License for the specific language governing  
>>> permissions and
>>> +    limitations under the License.
>>> +-->
>>> +
>>> +<!-- $Rev: 429882 $ $Date: 2006-08-08 16:33:09 -0700 (Tue, 08  
>>> Aug 2006) $ -->
>>> +
>>> +<project xmlns="http://maven.apache.org/POM/4.0.0"  
>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
>>> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http:// 
>>> maven.apache.org/maven-v4_0_0.xsd">
>>> +
>>> +    <modelVersion>4.0.0</modelVersion>
>>> +
>>> +    <parent>
>>> +        <groupId>org.apache.geronimo.modules</groupId>
>>> +        <artifactId>modules</artifactId>
>>> +        <version>1.2-SNAPSHOT</version>
>>> +        <relativePath>../pom.xml</relativePath>
>>> +    </parent>
>>> +
>>> +    <groupId>org.apache.geronimo.sandbox</groupId>
>>> +    <artifactId>geronimo-global-jndi</artifactId>
>>> +    <name>Geronimo :: Global JNDI</name>
>>> +
>>> +    <dependencies>
>>> +        <dependency>
>>> +            <groupId>org.apache.xbean</groupId>
>>> +            <artifactId>xbean-naming</artifactId>
>>> +            <version>COL-SNAPSHOT</version>
>>> +        </dependency>
>>> +        <dependency>
>>> +            <groupId>org.apache.geronimo.modules</groupId>
>>> +            <artifactId>geronimo-naming</artifactId>
>>> +            <version>${pom.version}</version>
>>> +        </dependency>
>>> +        <dependency>
>>> +            <groupId>backport-util-concurrent</groupId>
>>> +            <artifactId>backport-util-concurrent</artifactId>
>>> +        </dependency>
>>> +    </dependencies>
>>> +</project>
>>> +
>>>
>>> Added: geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/GlobalContextBootstrap.java
>>> URL: http://svn.apache.org/viewvc/geronimo/sandbox/plugins/global- 
>>> jndi/src/java/org/apache/geronimo/gjndi/ 
>>> GlobalContextBootstrap.java?rev=432101&view=auto
>>> ==================================================================== 
>>> ==========
>>> --- geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/GlobalContextBootstrap.java (added)
>>> +++ geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/GlobalContextBootstrap.java Wed Aug 16 18:32:59 2006
>>> @@ -0,0 +1,61 @@
>>> +/**
>>> + *
>>> + * Copyright 2006 The Apache Software Foundation
>>> + *
>>> + *  Licensed under the Apache License, Version 2.0 (the "License");
>>> + *  you may not use this file except in compliance with the  
>>> License.
>>> + *  You may obtain a copy of the License at
>>> + *
>>> + *     http://www.apache.org/licenses/LICENSE-2.0
>>> + *
>>> + *  Unless required by applicable law or agreed to in writing,  
>>> software
>>> + *  distributed under the License is distributed on an "AS IS"  
>>> BASIS,
>>> + *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express  
>>> or implied.
>>> + *  See the License for the specific language governing  
>>> permissions and
>>> + *  limitations under the License.
>>> + */
>>> +package org.apache.geronimo.gjndi;
>>> +
>>> +import org.apache.commons.logging.Log;
>>> +import org.apache.commons.logging.LogFactory;
>>> +import org.apache.geronimo.gbean.AbstractName;
>>> +import org.apache.geronimo.gbean.GBeanData;
>>> +import org.apache.geronimo.kernel.Kernel;
>>> +import org.apache.geronimo.kernel.KernelRegistry;
>>> +import org.apache.xbean.naming.global.GlobalContextManager;
>>> +
>>> +import java.net.URI;
>>> +
>>> +/**
>>> + * URLContextFactory for the java: namespace.
>>> + *
>>> + * @version $Rev: 355877 $ $Date: 2005-12-10 18:48:27 -0800  
>>> (Sat, 10 Dec 2005) $
>>> + */
>>> +public class GlobalContextBootstrap extends GlobalContextManager {
>>> +    private static final Log log = LogFactory.getLog 
>>> (GlobalContextBootstrap.class);
>>> +
>>> +    private static boolean initalized;
>>> +
>>> +    public GlobalContextBootstrap() {
>>> +        synchronized (GlobalContextBootstrap.class) {
>>> +            if (!GlobalContextBootstrap.initalized) {
>>> +                ClassLoader classLoader = getClass 
>>> ().getClassLoader();
>>> +
>>> +                Kernel kernel = KernelRegistry.getSingleKernel();
>>> +
>>> +                try {
>>> +                    AbstractName globalContextName = new  
>>> AbstractName(new URI("bootstrap/global-jndi/0/boot? 
>>> name=GlobalContext"));
>>> +                    kernel.loadGBean(new GBeanData 
>>> (globalContextName, GlobalContextGBean.GBEAN_INFO), classLoader);
>>> +                    kernel.startGBean(globalContextName);
>>> +
>>> +                    AbstractName javaCompName = new AbstractName 
>>> (new URI("bootstrap/global-jndi/0/boot?name=JavaComp"));
>>> +                    kernel.loadGBean(new GBeanData(javaCompName,  
>>> JavaCompContextGBean.GBEAN_INFO), classLoader);
>>> +                    kernel.startGBean(javaCompName);
>>> +                } catch (Exception e) {
>>> +                    GlobalContextBootstrap.log.error("Unable to  
>>> bootstrap global jndi gbeans");
>>> +                }
>>> +                GlobalContextBootstrap.initalized = true;
>>> +            }
>>> +        }
>>> +    }
>>> +}
>>>
>>> Added: geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/GlobalContextGBean.java
>>> URL: http://svn.apache.org/viewvc/geronimo/sandbox/plugins/global- 
>>> jndi/src/java/org/apache/geronimo/gjndi/GlobalContextGBean.java? 
>>> rev=432101&view=auto
>>> ==================================================================== 
>>> ==========
>>> --- geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/GlobalContextGBean.java (added)
>>> +++ geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/GlobalContextGBean.java Wed Aug 16 18:32:59 2006
>>> @@ -0,0 +1,76 @@
>>> +/**
>>> + *
>>> + * Copyright 2006 The Apache Software Foundation
>>> + *
>>> + *  Licensed under the Apache License, Version 2.0 (the "License");
>>> + *  you may not use this file except in compliance with the  
>>> License.
>>> + *  You may obtain a copy of the License at
>>> + *
>>> + *     http://www.apache.org/licenses/LICENSE-2.0
>>> + *
>>> + *  Unless required by applicable law or agreed to in writing,  
>>> software
>>> + *  distributed under the License is distributed on an "AS IS"  
>>> BASIS,
>>> + *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express  
>>> or implied.
>>> + *  See the License for the specific language governing  
>>> permissions and
>>> + *  limitations under the License.
>>> + */
>>> +package org.apache.geronimo.gjndi;
>>> +
>>> +import org.apache.geronimo.gbean.GBeanInfo;
>>> +import org.apache.geronimo.gbean.GBeanInfoBuilder;
>>> +import org.apache.geronimo.gbean.GBeanLifecycle;
>>> +import org.apache.geronimo.gbean.AbstractNameQuery;
>>> +import org.apache.geronimo.gbean.AbstractName;
>>> +import org.apache.geronimo.kernel.Kernel;
>>> +import org.apache.xbean.naming.global.GlobalContextManager;
>>> +
>>> +import javax.naming.Context;
>>> +import javax.naming.NamingException;
>>> +import java.util.Collections;
>>> +
>>> +/**
>>> + * @version $Rev$ $Date$
>>> + */
>>> +public class GlobalContextGBean extends KernelContextGBean  
>>> implements GBeanLifecycle {
>>> +    public GlobalContextGBean(Kernel kernel) throws  
>>> NamingException {
>>> +        super("", new AbstractNameQuery(null,  
>>> Collections.EMPTY_MAP, Context.class.getName()), kernel);
>>> +    }
>>> +
>>> +    public void doStart() {
>>> +        super.doStart();
>>> +        GlobalContextManager.setGlobalContext(this);
>>> +    }
>>> +
>>> +    public void doStop() {
>>> +        GlobalContextManager.setGlobalContext(null);
>>> +        super.doStop();
>>> +    }
>>> +
>>> +    public void doFail() {
>>> +        GlobalContextManager.setGlobalContext(null);
>>> +        super.doFail();
>>> +    }
>>> +
>>> +    protected String createBindingName(AbstractName  
>>> abstractName, Object value) throws NamingException {
>>> +        if (value instanceof Context) {
>>> +            // don't bind yourself
>>> +            if (value == this) return null;
>>> +
>>> +            Context context = (Context) value;
>>> +            return context.getNameInNamespace();
>>> +        }
>>> +        throw new NamingException("value is not a context:  
>>> abstractName=" + abstractName + " valueType=" + value.getClass 
>>> ().getName());
>>> +    }
>>> +
>>> +    public static final GBeanInfo GBEAN_INFO;
>>> +
>>> +    public static GBeanInfo getGBeanInfo() {
>>> +        return GBEAN_INFO;
>>> +    }
>>> +
>>> +    static {
>>> +        GBeanInfoBuilder builder = GBeanInfoBuilder.createStatic 
>>> (GlobalContextGBean.class, "GlobalContext");
>>> +        builder.setConstructor(new String[]{"kernel"});
>>> +        GBEAN_INFO = builder.getBeanInfo();
>>> +    }
>>> +}
>>>
>>> Added: geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/JavaCompContextGBean.java
>>> URL: http://svn.apache.org/viewvc/geronimo/sandbox/plugins/global- 
>>> jndi/src/java/org/apache/geronimo/gjndi/JavaCompContextGBean.java? 
>>> rev=432101&view=auto
>>> ==================================================================== 
>>> ==========
>>> --- geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/JavaCompContextGBean.java (added)
>>> +++ geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/JavaCompContextGBean.java Wed Aug 16 18:32:59 2006
>>> @@ -0,0 +1,49 @@
>>> +/**
>>> + *
>>> + * Copyright 2006 The Apache Software Foundation
>>> + *
>>> + *  Licensed under the Apache License, Version 2.0 (the "License");
>>> + *  you may not use this file except in compliance with the  
>>> License.
>>> + *  You may obtain a copy of the License at
>>> + *
>>> + *     http://www.apache.org/licenses/LICENSE-2.0
>>> + *
>>> + *  Unless required by applicable law or agreed to in writing,  
>>> software
>>> + *  distributed under the License is distributed on an "AS IS"  
>>> BASIS,
>>> + *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express  
>>> or implied.
>>> + *  See the License for the specific language governing  
>>> permissions and
>>> + *  limitations under the License.
>>> + */
>>> +package org.apache.geronimo.gjndi;
>>> +
>>> +import org.apache.geronimo.gbean.GBeanInfo;
>>> +import org.apache.geronimo.gbean.GBeanInfoBuilder;
>>> +import org.apache.geronimo.naming.java.RootContext;
>>> +import org.apache.xbean.naming.context.ContextFlyweight;
>>> +
>>> +import javax.naming.Context;
>>> +import javax.naming.NamingException;
>>> +
>>> +/**
>>> + * @version $Rev$ $Date$
>>> + */
>>> +public class JavaCompContextGBean extends ContextFlyweight {
>>> +    protected Context getContext() {
>>> +        return RootContext.getComponentContext();
>>> +    }
>>> +
>>> +    public String getNameInNamespace() throws NamingException {
>>> +        return "java:comp";
>>> +    }
>>> +
>>> +    public static final GBeanInfo GBEAN_INFO;
>>> +
>>> +    public static GBeanInfo getGBeanInfo() {
>>> +        return GBEAN_INFO;
>>> +    }
>>> +
>>> +    static {
>>> +        GBeanInfoBuilder builder = GBeanInfoBuilder.createStatic 
>>> (JavaCompContextGBean.class, "Context");
>>> +        GBEAN_INFO = builder.getBeanInfo();
>>> +    }
>>> +}
>>>
>>> Added: geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/KernelContextGBean.java
>>> URL: http://svn.apache.org/viewvc/geronimo/sandbox/plugins/global- 
>>> jndi/src/java/org/apache/geronimo/gjndi/KernelContextGBean.java? 
>>> rev=432101&view=auto
>>> ==================================================================== 
>>> ==========
>>> --- geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/KernelContextGBean.java (added)
>>> +++ geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/KernelContextGBean.java Wed Aug 16 18:32:59 2006
>>> @@ -0,0 +1,198 @@
>>> +/**
>>> + *
>>> + * Copyright 2006 The Apache Software Foundation
>>> + *
>>> + *  Licensed under the Apache License, Version 2.0 (the "License");
>>> + *  you may not use this file except in compliance with the  
>>> License.
>>> + *  You may obtain a copy of the License at
>>> + *
>>> + *     http://www.apache.org/licenses/LICENSE-2.0
>>> + *
>>> + *  Unless required by applicable law or agreed to in writing,  
>>> software
>>> + *  distributed under the License is distributed on an "AS IS"  
>>> BASIS,
>>> + *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express  
>>> or implied.
>>> + *  See the License for the specific language governing  
>>> permissions and
>>> + *  limitations under the License.
>>> + */
>>> +package org.apache.geronimo.gjndi;
>>> +
>>> +import org.apache.commons.logging.Log;
>>> +import org.apache.commons.logging.LogFactory;
>>> +import org.apache.geronimo.gbean.AbstractName;
>>> +import org.apache.geronimo.gbean.AbstractNameQuery;
>>> +import org.apache.geronimo.gbean.GBeanInfo;
>>> +import org.apache.geronimo.gbean.GBeanInfoBuilder;
>>> +import org.apache.geronimo.gbean.GBeanLifecycle;
>>> +import org.apache.geronimo.kernel.GBeanNotFoundException;
>>> +import org.apache.geronimo.kernel.Kernel;
>>> +import org.apache.geronimo.kernel.lifecycle.LifecycleAdapter;
>>> +import org.apache.geronimo.kernel.lifecycle.LifecycleListener;
>>> +import org.apache.xbean.naming.context.UnmodifiableContext;
>>> +
>>> +import javax.naming.NamingException;
>>> +import java.util.Collections;
>>> +import java.util.HashMap;
>>> +import java.util.Map;
>>> +import java.util.Iterator;
>>> +import java.util.Set;
>>> +
>>> +/**
>>> + * @version $Rev$ $Date$
>>> + */
>>> +public class KernelContextGBean extends UnmodifiableContext  
>>> implements GBeanLifecycle {
>>> +    private static final Log log = LogFactory.getLog 
>>> (KernelContextGBean.class);
>>> +
>>> +    private final Kernel kernel;
>>> +    private final AbstractNameQuery abstractNameQuery;
>>> +    private final LifecycleListener listener = new  
>>> ContextLifecycleListener();
>>> +    private final Map bindingsByAbstractName = new HashMap();
>>> +
>>> +    public KernelContextGBean(String nameInNamespace,  
>>> AbstractNameQuery abstractNameQuery, Kernel kernel) throws  
>>> NamingException {
>>> +        super(nameInNamespace, Collections.EMPTY_MAP, false);
>>> +        this.abstractNameQuery = abstractNameQuery;
>>> +        this.kernel = kernel;
>>> +    }
>>> +
>>> +    public synchronized void doStart() {
>>> +        kernel.getLifecycleMonitor().addLifecycleListener 
>>> (listener, abstractNameQuery);
>>> +        Set set = kernel.listGBeans(abstractNameQuery);
>>> +        for (Iterator iterator = set.iterator(); iterator.hasNext 
>>> ();) {
>>> +            AbstractName abstractName = (AbstractName)  
>>> iterator.next();
>>> +            try {
>>> +                if (kernel.isRunning(abstractName)) {
>>> +                    addBinding(abstractName);
>>> +                }
>>> +            } catch (NamingException e) {
>>> +                log.error("Error adding binding for " +  
>>> abstractName);
>>> +            }
>>> +        }
>>> +
>>> +    }
>>> +
>>> +    public void doStop() {
>>> +        destroy();
>>> +    }
>>> +
>>> +    public void doFail() {
>>> +        destroy();
>>> +    }
>>> +
>>> +    private synchronized void destroy() {
>>> +        kernel.getLifecycleMonitor().removeLifecycleListener 
>>> (listener);
>>> +        for (Iterator iterator = bindingsByAbstractName.values 
>>> ().iterator(); iterator.hasNext();) {
>>> +            try {
>>> +                String name = (String) iterator.next();
>>> +                removeDeepBinding(name);
>>> +            } catch (NamingException ignored) {
>>> +            }
>>> +        }
>>> +        bindingsByAbstractName.clear();
>>> +    }
>>> +
>>> +    private class ContextLifecycleListener extends  
>>> LifecycleAdapter {
>>> +        public void running(AbstractName abstractName) {
>>> +            try {
>>> +                addBinding(abstractName);
>>> +            } catch (NamingException e) {
>>> +                log.error("Error adding binding for " +  
>>> abstractName);
>>> +            }
>>> +        }
>>> +
>>> +        public void stopping(AbstractName abstractName) {
>>> +            removeBinding(abstractName);
>>> +        }
>>> +
>>> +        public void stopped(AbstractName abstractName) {
>>> +            removeBinding(abstractName);
>>> +        }
>>> +
>>> +        public void failed(AbstractName abstractName) {
>>> +            removeBinding(abstractName);
>>> +        }
>>> +
>>> +        public void unloaded(AbstractName abstractName) {
>>> +            removeBinding(abstractName);
>>> +        }
>>> +    }
>>> +
>>> +    /**
>>> +     * Binds the specified gbean.  This method uses  
>>> createBindingName and preprocessValue before binding the object.
>>> +     * @param abstractName the abstract name of the gbean to bind
>>> +     * @throws NamingException if an error occurs during binding
>>> +     */
>>> +    protected synchronized void addBinding(AbstractName  
>>> abstractName) throws NamingException {
>>> +        // get the gbean
>>> +        Object value = null;
>>> +        try {
>>> +            value = kernel.getGBean(abstractName);
>>> +        } catch (GBeanNotFoundException e) {
>>> +            throw new NamingException("GBean not found: " +  
>>> abstractName);
>>> +        }
>>> +
>>> +        // generate a name for this binding
>>> +        String name = createBindingName(abstractName, value);
>>> +        if (name == null) return;
>>> +
>>> +        // give sub classes a chance to preprocess the value
>>> +        value = preprocessVaue(abstractName, name, value);
>>> +        if (value == null) return;
>>> +
>>> +        // bind the value
>>> +
>>> +        addDeepBinding(name, value);
>>> +
>>> +        // remember where we bound this value
>>> +        bindingsByAbstractName.put(abstractName, name);
>>> +    }
>>> +
>>> +    /**
>>> +     * Unbinds the specified gbean.
>>> +     * @param abstractName the abstract name of the gbean to unbind
>>> +     */
>>> +    protected synchronized void removeBinding(AbstractName  
>>> abstractName) {
>>> +        String name = (String) bindingsByAbstractName.remove 
>>> (abstractName);
>>> +        if (name != null) {
>>> +            try {
>>> +                removeDeepBinding(name);
>>> +            } catch (NamingException ignored) {
>>> +            }
>>> +        }
>>> +    }
>>> +
>>> +    /**
>>> +     * Create a name under which we will bind the specified  
>>> gbean with the specified value.
>>> +     * By default, this method simply returns the "name" element  
>>> of the abstract name
>>> +     * @param abstractName the abstract name of the gbean to bind
>>> +     * @param value the gbean instance
>>> +     * @return the name under which the gbean should be bound
>>> +     */
>>> +    protected String createBindingName(AbstractName  
>>> abstractName, Object value) throws NamingException {
>>> +        return (String) abstractName.getName().get("name");
>>> +    }
>>> +
>>> +    /**
>>> +     * Preprocess the value before it is bound.  This is usefult  
>>> for wrapping values with reference objects.
>>> +     * By default, this method simply return the value.
>>> +     * @param abstractName the abstract name of the gbean to bind
>>> +     * @param name the name under which the gbean will be bound
>>> +     * @param value the gbean instance
>>> +     * @return the value to bind
>>> +     */
>>> +    protected Object preprocessVaue(AbstractName abstractName,  
>>> String name, Object value) throws NamingException {
>>> +        return value;
>>> +    }
>>> +
>>> +    public static final GBeanInfo GBEAN_INFO;
>>> +
>>> +    public static GBeanInfo getGBeanInfo() {
>>> +        return GBEAN_INFO;
>>> +    }
>>> +
>>> +    static {
>>> +        GBeanInfoBuilder builder = GBeanInfoBuilder.createStatic 
>>> (KernelContextGBean.class, "Context");
>>> +        builder.addAttribute("nameInNamespace", String.class,  
>>> true);
>>> +        builder.addAttribute("abstractNameQuery",  
>>> AbstractNameQuery.class, true);
>>> +        builder.setConstructor(new String[]{"nameInNamespace",  
>>> "abstractNameQuery", "kernel"});
>>> +        GBEAN_INFO = builder.getBeanInfo();
>>> +    }
>>> +}
>>>
>>> Added: geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/java/javaURLContextFactory.java
>>> URL: http://svn.apache.org/viewvc/geronimo/sandbox/plugins/global- 
>>> jndi/src/java/org/apache/geronimo/gjndi/java/ 
>>> javaURLContextFactory.java?rev=432101&view=auto
>>> ==================================================================== 
>>> ==========
>>> --- geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/java/javaURLContextFactory.java (added)
>>> +++ geronimo/sandbox/plugins/global-jndi/src/java/org/apache/ 
>>> geronimo/gjndi/java/javaURLContextFactory.java Wed Aug 16  
>>> 18:32:59 2006
>>> @@ -0,0 +1,27 @@
>>> +/**
>>> + *
>>> + * Copyright 2006 The Apache Software Foundation
>>> + *
>>> + *  Licensed under the Apache License, Version 2.0 (the "License");
>>> + *  you may not use this file except in compliance with the  
>>> License.
>>> + *  You may obtain a copy of the License at
>>> + *
>>> + *     http://www.apache.org/licenses/LICENSE-2.0
>>> + *
>>> + *  Unless required by applicable law or agreed to in writing,  
>>> software
>>> + *  distributed under the License is distributed on an "AS IS"  
>>> BASIS,
>>> + *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express  
>>> or implied.
>>> + *  See the License for the specific language governing  
>>> permissions and
>>> + *  limitations under the License.
>>> + */
>>> +package org.apache.geronimo.gjndi.java;
>>> +
>>> +import org.apache.geronimo.gjndi.GlobalContextBootstrap;
>>> +
>>> +/**
>>> + * URLContextFactory for the java: namespace.
>>> + *
>>> + * @version $Rev: 355877 $ $Date: 2005-12-10 18:48:27 -0800  
>>> (Sat, 10 Dec 2005) $
>>> + */
>>> +public class javaURLContextFactory extends GlobalContextBootstrap {
>>> +}
>>>
>>> Added: geronimo/sandbox/plugins/global-jndi/src/site/site.xml
>>> URL: http://svn.apache.org/viewvc/geronimo/sandbox/plugins/global- 
>>> jndi/src/site/site.xml?rev=432101&view=auto
>>> ==================================================================== 
>>> ==========
>>> --- geronimo/sandbox/plugins/global-jndi/src/site/site.xml (added)
>>> +++ geronimo/sandbox/plugins/global-jndi/src/site/site.xml Wed  
>>> Aug 16 18:32:59 2006
>>> @@ -0,0 +1,62 @@
>>> +<?xml version="1.0"?>
>>> +<!--
>>> +    Copyright 2006 The Apache Software Foundation
>>> +
>>> +    Licensed under the Apache License, Version 2.0 (the "License");
>>> +    you may not use this file except in compliance with the  
>>> License.
>>> +    You may obtain a copy of the License at
>>> +
>>> +       http://www.apache.org/licenses/LICENSE-2.0
>>> +
>>> +    Unless required by applicable law or agreed to in writing,  
>>> software
>>> +    distributed under the License is distributed on an "AS IS"  
>>> BASIS,
>>> +    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express  
>>> or implied.
>>> +    See the License for the specific language governing  
>>> permissions and
>>> +    limitations under the License.
>>> +-->
>>> +
>>> +<!-- $Id: site.xml 429761 2006-08-08 18:31:52Z jdillon $ -->
>>> +
>>> +<project name="${project.name}">
>>> +    <skin>
>>> +        <groupId>org.apache.geronimo.genesis.config</groupId>
>>> +        <artifactId>geronimo-skin</artifactId>
>>> +        <version>1.0.0-SNAPSHOT</version>
>>> +    </skin>
>>> +
>>> +    <publishDate format="dd MMM yyyy"/>
>>> +
>>> +    <bannerLeft>
>>> +        <src>images/topleft_logo_437x64.gif</src>
>>> +    </bannerLeft>
>>> +
>>> +    <!--
>>> +    <bannerRight>
>>> +        <name>${project.name}</name>
>>> +    </bannerRight>
>>> +    -->
>>> +
>>> +    <body>
>>> +        <!--
>>> +        <links>
>>> +            <item name="Geronimo" href="http:// 
>>> geronimo.apache.org/"/>
>>> +            <item name="Apache" href="http://apache.org/"/>
>>> +        </links>
>>> +        -->
>>> +
>>> +        <menu name="Geronimo">
>>> +            <item name="Home" href="http://geronimo.apache.org/"/>
>>> +        </menu>
>>> +
>>> +        <menu ref="parent"/>
>>> +
>>> +        <menu ref="modules"/>
>>> +
>>> +        <menu ref="reports"/>
>>> +
>>> +        ${reports}
>>> +
>>> +    </body>
>>> +</project>
>>> +
>>> +
>>>
>>> Added: geronimo/sandbox/plugins/global-jndi/src/test/org/apache/ 
>>> geronimo/gjndi/AbstractContextTest.java
>>> URL: http://svn.apache.org/viewvc/geronimo/sandbox/plugins/global- 
>>> jndi/src/test/org/apache/geronimo/gjndi/AbstractContextTest.java? 
>>> rev=432101&view=auto
>>> ==================================================================== 
>>> ==========
>>> --- geronimo/sandbox/plugins/global-jndi/src/test/org/apache/ 
>>> geronimo/gjndi/AbstractContextTest.java (added)
>>> +++ geronimo/sandbox/plugins/global-jndi/src/test/org/apache/ 
>>> geronimo/gjndi/AbstractContextTest.java Wed Aug 16 18:32:59 2006
>>> @@ -0,0 +1,176 @@
>>> +/**
>>> + *
>>> + * Copyright 2006 The Apache Software Foundation
>>> + *
>>> + *  Licensed under the Apache License, Version 2.0 (the "License");
>>> + *  you may not use this file except in compliance with the  
>>> License.
>>> + *  You may obtain a copy of the License at
>>> + *
>>> + *     http://www.apache.org/licenses/LICENSE-2.0
>>> + *
>>> + *  Unless required by applicable law or agreed to in writing,  
>>> software
>>> + *  distributed under the License is distributed on an "AS IS"  
>>> BASIS,
>>> + *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express  
>>> or implied.
>>> + *  See the License for the specific language governing  
>>> permissions and
>>> + *  limitations under the License.
>>> + */
>>> +package org.apache.geronimo.gjndi;
>>> +
>>> +import junit.framework.TestCase;
>>> +
>>> +import javax.naming.Context;
>>> +import javax.naming.NamingException;
>>> +import javax.naming.Name;
>>> +import javax.naming.NamingEnumeration;
>>> +import javax.naming.NameClassPair;
>>> +import javax.naming.Binding;
>>> +import java.util.Map;
>>> +import java.util.Iterator;
>>> +import java.util.TreeSet;
>>> +import java.util.HashMap;
>>> +
>>> +import org.apache.xbean.naming.context.ContextUtil;
>>> +
>>> +/**
>>> + * @version $Rev$ $Date$
>>> + */
>>> +public abstract class AbstractContextTest extends TestCase {
>>> +    public static void assertEq(Map expected, Context actual)  
>>> throws NamingException {
>>> +        AbstractContextTest.assertEq(ContextUtil.buildMapTree 
>>> (expected), actual, actual, null);
>>> +    }
>>> +
>>> +    public static void assertEq(Map expected, String  
>>> pathInExpected, Context actual) throws NamingException {
>>> +        ContextUtil.Node node = ContextUtil.buildMapTree(expected);
>>> +        Name parsedName = actual.getNameParser("").parse 
>>> (pathInExpected);
>>> +        for (int i = 0; i < parsedName.size(); i++) {
>>> +            String part = parsedName.get(i);
>>> +            Object value = node.get(part);
>>> +            if (value == null) {
>>> +                throw new NamingException("look for " +  
>>> parsedName.getPrefix(i+1) + " in node tree is null ");
>>> +            }
>>> +            node = (ContextUtil.Node) value;
>>> +        }
>>> +
>>> +        AbstractContextTest.assertEq(node, actual, actual, null);
>>> +    }
>>> +
>>> +    private static void assertEq(ContextUtil.Node node, Context  
>>> rootContext, Context currentContext, String path) throws  
>>> NamingException {
>>> +        for (Iterator iterator = node.entrySet().iterator();  
>>> iterator.hasNext();) {
>>> +            Map.Entry entry = (Map.Entry) iterator.next();
>>> +            String expectedName = (String) entry.getKey();
>>> +            Object expectedValue = entry.getValue();
>>> +
>>> +            String fullName = path == null ? expectedName : path  
>>> + "/" + expectedName;
>>> +
>>> +            // verify we can lookup by string name and parsed  
>>> name using the root context and current context
>>> +            Object value = AbstractContextTest.assertLookup 
>>> (expectedValue, currentContext, expectedName);
>>> +            Object absoluteValue =  
>>> AbstractContextTest.assertLookup(expectedValue, rootContext,  
>>> fullName);
>>> +            assertSame(fullName, value, absoluteValue);
>>> +
>>> +            if (expectedValue instanceof ContextUtil.Node) {
>>> +                ContextUtil.Node expectedNode =  
>>> (ContextUtil.Node) expectedValue;
>>> +
>>> +                // verufy listing of this context returns the  
>>> expected results
>>> +                AbstractContextTest.assertList(expectedNode,  
>>> currentContext, expectedName);
>>> +                AbstractContextTest.assertList(expectedNode,  
>>> rootContext, fullName);
>>> +
>>> +                AbstractContextTest.assertEq(expectedNode,  
>>> rootContext, (Context) value, fullName);
>>> +            }
>>> +        }
>>> +    }
>>> +
>>> +    public static Object assertLookup(Object expectedValue,  
>>> Context context, String name) throws NamingException {
>>> +        Object value = context.lookup(name);
>>> +
>>> +        String contextName = context.getNameInNamespace();
>>> +        if (contextName == null || contextName.length() == 0)  
>>> contextName = "<root>";
>>> +
>>> +        assertNotNull("lookup of " +  name + " on " +  
>>> contextName + " returned null", value);
>>> +
>>> +        if (expectedValue instanceof ContextUtil.Node) {
>>> +            assertTrue("Expected lookup of " +  name + " on " +  
>>> contextName + " to return a Context, but got a " + value.getClass 
>>> ().getName(),
>>> +                    value instanceof Context);
>>> +        } else {
>>> +            assertEquals("lookup of " + name + " on " +  
>>> contextName, expectedValue, value);
>>> +        }
>>> +
>>> +        Name parsedName = context.getNameParser("").parse(name);
>>> +        Object valueFromParsedName = context.lookup(parsedName);
>>> +        assertSame("lookup of " +  name + " on " + contextName +  
>>> " using a parsed name", value, valueFromParsedName);
>>> +
>>> +        return value;
>>> +    }
>>> +
>>> +    public static void assertList(ContextUtil.Node node, Context  
>>> context, String name) throws NamingException {
>>> +        String contextName = context.getNameInNamespace();
>>> +        if (contextName == null || contextName.length() == 0)  
>>> contextName = "<root>";
>>> +
>>> +        AbstractContextTest.assertListResults(node, context.list 
>>> (name), contextName, name, false);
>>> +        AbstractContextTest.assertListResults(node,  
>>> context.listBindings(name), contextName, name, true);
>>> +
>>> +        Name parsedName = context.getNameParser("").parse(name);
>>> +        AbstractContextTest.assertListResults(node, context.list 
>>> (parsedName), contextName, "parsed name " + name, false);
>>> +        AbstractContextTest.assertListResults(node,  
>>> context.listBindings(parsedName), contextName, "parsed name " +  
>>> name, true);
>>> +    }
>>> +
>>> +    public static void assertListResults(ContextUtil.Node node,  
>>> NamingEnumeration enumeration, String contextName, String name,  
>>> boolean wasListBinding) {
>>> +        Map actualValues;
>>> +        if (wasListBinding) {
>>> +            actualValues =  
>>> AbstractContextTest.toListBindingResults(enumeration);
>>> +        } else {
>>> +            actualValues = AbstractContextTest.toListResults 
>>> (enumeration);
>>> +        }
>>> +
>>> +        for (Iterator iterator = node.entrySet().iterator();  
>>> iterator.hasNext();) {
>>> +            Map.Entry entry = (Map.Entry) iterator.next();
>>> +            String expectedName = (String) entry.getKey();
>>> +            Object expectedValue = entry.getValue();
>>> +
>>> +            Object actualValue = actualValues.get(expectedName);
>>> +
>>> +            assertNotNull("list of " + name + " on " +  
>>> contextName + " did not find value for " + name, actualValue);
>>> +            if (wasListBinding) {
>>> +                if (expectedValue instanceof ContextUtil.Node) {
>>> +                    assertTrue("Expected list of " + name + " on  
>>> " + contextName + " result value for " + name + " to return a  
>>> Context, but got a " + actualValue.getClass().getName(),
>>> +                        actualValue instanceof Context);
>>> +                } else {
>>> +                    assertEquals("list of " + name + " on " +  
>>> contextName + " for value for " + name, expectedValue, actualValue);
>>> +                }
>>> +            } else {
>>> +                if (!(expectedValue instanceof ContextUtil.Node)) {
>>> +                    assertEquals("list of " + name + " on " +  
>>> contextName + " for value for " + name, expectedValue.getClass 
>>> ().getName(), actualValue);
>>> +                } else {
>>> +                    // can't really test this since it the value  
>>> is the name of a nested node class
>>> +                }
>>> +            }
>>> +        }
>>> +
>>> +        TreeSet extraNames = new TreeSet(actualValues.keySet());
>>> +        extraNames.removeAll(node.keySet());
>>> +        if (!extraNames.isEmpty()) {
>>> +            fail("list of " + name + " on " + contextName + "  
>>> found extra values: " + extraNames);
>>> +        }
>>> +    }
>>> +
>>> +    private static Map toListResults(NamingEnumeration  
>>> enumeration) {
>>> +        Map result = new HashMap();
>>> +        while (enumeration.hasMoreElements()) {
>>> +            NameClassPair nameClassPair = (NameClassPair)  
>>> enumeration.nextElement();
>>> +            String name = nameClassPair.getName();
>>> +            assertFalse(result.containsKey(name));
>>> +            result.put(name, nameClassPair.getClassName());
>>> +        }
>>> +        return result;
>>> +    }
>>> +
>>> +    private static Map toListBindingResults(NamingEnumeration  
>>> enumeration) {
>>> +        Map result = new HashMap();
>>> +        while (enumeration.hasMoreElements()) {
>>> +            Binding binding = (Binding) enumeration.nextElement();
>>> +            String name = binding.getName();
>>> +            assertFalse(result.containsKey(name));
>>> +            result.put(name, binding.getObject());
>>> +        }
>>> +        return result;
>>> +    }
>>> +}
>>>
>>> Added: geronimo/sandbox/plugins/global-jndi/src/test/org/apache/ 
>>> geronimo/gjndi/JavaCompContextTest.java
>>> URL: http://svn.apache.org/viewvc/geronimo/sandbox/plugins/global- 
>>> jndi/src/test/org/apache/geronimo/gjndi/JavaCompContextTest.java? 
>>> rev=432101&view=auto
>>> ==================================================================== 
>>> ==========
>>> --- geronimo/sandbox/plugins/global-jndi/src/test/org/apache/ 
>>> geronimo/gjndi/JavaCompContextTest.java (added)
>>> +++ geronimo/sandbox/plugins/global-jndi/src/test/org/apache/ 
>>> geronimo/gjndi/JavaCompContextTest.java Wed Aug 16 18:32:59 2006
>>> @@ -0,0 +1,206 @@
>>> +/**
>>> + *
>>> + * Copyright 2006 The Apache Software Foundation
>>> + *
>>> + *  Licensed under the Apache License, Version 2.0 (the "License");
>>> + *  you may not use this file except in compliance with the  
>>> License.
>>> + *  You may obtain a copy of the License at
>>> + *
>>> + *     http://www.apache.org/licenses/LICENSE-2.0
>>> + *
>>> + *  Unless required by applicable law or agreed to in writing,  
>>> software
>>> + *  distributed under the License is distributed on an "AS IS"  
>>> BASIS,
>>> + *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express  
>>> or implied.
>>> + *  See the License for the specific language governing  
>>> permissions and
>>> + *  limitations under the License.
>>> + */
>>> +package org.apache.geronimo.gjndi;
>>> +
>>> +import junit.framework.TestCase;
>>> +
>>> +import javax.naming.NamingException;
>>> +import javax.naming.CompositeName;
>>> +import javax.naming.CompoundName;
>>> +import javax.naming.Context;
>>> +import javax.naming.NamingEnumeration;
>>> +import javax.naming.NameClassPair;
>>> +import javax.naming.Binding;
>>> +import javax.naming.LinkRef;
>>> +import javax.naming.InitialContext;
>>> +import java.util.Map;
>>> +import java.util.HashMap;
>>> +import java.util.Iterator;
>>> +import java.util.NoSuchElementException;
>>> +import java.util.Properties;
>>> +import java.util.Collections;
>>> +
>>> +import org.apache.geronimo.naming.java.RootContext;
>>> +import org.apache.xbean.naming.context.UnmodifiableContext;
>>> +import org.apache.xbean.naming.context.ImmutableContext;
>>> +import org.apache.xbean.naming.global.GlobalContextManager;
>>> +
>>> +/**
>>> + * @version $Rev$ $Date$
>>> + */
>>> +public class JavaCompContextTest extends TestCase {
>>> +    protected UnmodifiableContext readOnlyContext;
>>> +    protected Properties syntax;
>>> +    protected Map envBinding;
>>> +    protected Context initialContext;
>>> +    protected Context compContext;
>>> +    protected Context envContext;
>>> +
>>> +    public void testInitialContext() throws NamingException {
>>> +        assertEquals("Hello", initialContext.lookup("java:comp/ 
>>> env/hello"));
>>> +        assertEquals("Hello", initialContext.lookup(new  
>>> CompositeName("java:comp/env/hello")));
>>> +    }
>>> +
>>> +    public void testLookup() throws NamingException {
>>> +        assertEquals("Hello", envContext.lookup("hello"));
>>> +        assertEquals("Hello", compContext.lookup("env/hello"));
>>> +        try {
>>> +            envContext.lookup("foo");
>>> +            fail();
>>> +        } catch (NamingException e) {
>>> +            // OK
>>> +        }
>>> +        assertEquals("Hello", envContext.lookup(new CompositeName 
>>> ("hello")));
>>> +        assertEquals("Hello", compContext.lookup(new  
>>> CompositeName("env/hello")));
>>> +        assertEquals("Hello", envContext.lookup(new CompoundName 
>>> ("hello", syntax)));
>>> +        assertEquals("Hello", compContext.lookup(new CompoundName 
>>> ("env/hello", syntax)));
>>> +
>>> +        assertEquals(envContext, envContext.lookup(""));
>>> +    }
>>> +
>>> +    public void testSubContext() throws NamingException {
>>> +        assertEquals("long name", initialContext.lookup 
>>> ("java:comp/env/here/there/anywhere"));
>>> +        Context intermediate = (Context)initialContext.lookup 
>>> ("java:comp/env/here/there");
>>> +        assertNotNull(intermediate);
>>> +        assertEquals("long name", intermediate.lookup("anywhere"));
>>> +    }
>>> +
>>> +    public void testSchemeLookup() throws NamingException {
>>> +//        envContext.lookup("dns:apache.org");
>>> +        assertEquals("Hello", envContext.lookup("java:comp/env/ 
>>> hello"));
>>> +        assertEquals("Hello", compContext.lookup("java:comp/env/ 
>>> hello"));
>>> +    }
>>> +
>>> +    public void testLookupLink() throws NamingException {
>>> +        assertEquals("Hello", envContext.lookup("link"));
>>> +    }
>>> +
>>> +    public void testComposeName() throws NamingException {
>>> +        assertEquals("org/research/user/jane",  
>>> envContext.composeName("user/jane", "org/research"));
>>> +        assertEquals("research/user/jane", envContext.composeName 
>>> ("user/jane", "research"));
>>> +        assertEquals(new CompositeName("org/research/user/ 
>>> jane"), envContext.composeName(new CompositeName("user/jane"),  
>>> new CompositeName("org/research")));
>>> +        assertEquals(new CompositeName("research/user/jane"),  
>>> envContext.composeName(new CompositeName("user/jane"), new  
>>> CompositeName("research")));
>>> +    }
>>> +
>>> +    public void testList() throws NamingException {
>>> +        NamingEnumeration ne;
>>> +        Map expected;
>>> +        Map result;
>>> +
>>> +        expected = new HashMap();
>>> +        for (Iterator i = envBinding.entrySet().iterator();  
>>> i.hasNext();) {
>>> +            Map.Entry entry = (Map.Entry) i.next();
>>> +            expected.put(entry.getKey(), entry.getValue 
>>> ().getClass().getName());
>>> +        }
>>> +        ne = envContext.list("");
>>> +        result = new HashMap();
>>> +        while (ne.hasMore()) {
>>> +            NameClassPair pair = (NameClassPair) ne.next();
>>> +            result.put(pair.getName(), pair.getClassName());
>>> +        }
>>> +        assertEquals(expected, result);
>>> +
>>> +        try {
>>> +            ne.next();
>>> +            fail();
>>> +        } catch (NoSuchElementException e) {
>>> +            // ok
>>> +        }
>>> +        try {
>>> +            ne.nextElement();
>>> +            fail();
>>> +        } catch (NoSuchElementException e) {
>>> +            // ok
>>> +        }
>>> +    }
>>> +
>>> +    public void testListBindings() throws NamingException {
>>> +        NamingEnumeration ne;
>>> +        ne = envContext.listBindings("");
>>> +        int count = 0;
>>> +        while (ne.hasMore()) {
>>> +            count ++;
>>> +            Binding pair = (Binding) ne.next();
>>> +            assertTrue(envBinding.containsKey(pair.getName()));
>>> +            if (! (envBinding.get(pair.getName()) instanceof  
>>> Context)) {
>>> +                assertEquals(pair.getObject(), envBinding.get 
>>> (pair.getName()));
>>> +            }
>>> +        }
>>> +        assertEquals(envBinding.size(), count);
>>> +
>>> +        try {
>>> +            ne.next();
>>> +            fail();
>>> +        } catch (NoSuchElementException e) {
>>> +            // ok
>>> +        }
>>> +        try {
>>> +            ne.nextElement();
>>> +            fail();
>>> +        } catch (NoSuchElementException e) {
>>> +            // ok
>>> +        }
>>> +    }
>>> +
>>> +    public void testSpeed() throws NamingException {
>>> +        Context comp = (Context) initialContext.lookup 
>>> ("java:comp");
>>> +
>>> +        long start = System.currentTimeMillis();
>>> +        for (int i=0; i < 1000000; i++) {
>>> +            // initialContext.lookup("java:comp/hello"); // this  
>>> is sloooow due to scheme resolution
>>> +            // envContext.lookup("hello");
>>> +            comp.lookup("env/hello");
>>> +        }
>>> +
>>> +        long end = System.currentTimeMillis();
>>> +        System.out.println("lookup(String) milliseconds: " +  
>>> (end - start));
>>> +    }
>>> +
>>> +    protected void setUp() throws Exception {
>>> +        super.setUp();
>>> +        System.setProperty("java.naming.factory.initial",  
>>> GlobalContextManager.class.getName());
>>> +        System.setProperty("java.naming.factory.url.pkgs",  
>>> "org.apache.geronimo.knaming");
>>> +
>>> +        LinkRef link = new LinkRef("java:comp/env/hello");
>>> +
>>> +        Map bindings = new HashMap();
>>> +        bindings.put("env/hello", "Hello");
>>> +        bindings.put("env/world", "Hello World");
>>> +        bindings.put("env/here/there/anywhere", "long name");
>>> +        bindings.put("env/link", link);
>>> +
>>> +        readOnlyContext = new UnmodifiableContext(bindings);
>>> +
>>> +        envBinding = new HashMap();
>>> +        envBinding.put("hello", "Hello");
>>> +        envBinding.put("world", "Hello World");
>>> +        envBinding.put("here", readOnlyContext.lookup("env/here"));
>>> +        envBinding.put("link", link);
>>> +
>>> +        RootContext.setComponentContext(readOnlyContext);
>>> +
>>> +        Context javaCompContext = new JavaCompContextGBean();
>>> +        Context globalContext = new ImmutableContext 
>>> (Collections.singletonMap(javaCompContext.getNameInNamespace(),  
>>> javaCompContext));
>>> +        GlobalContextManager.setGlobalContext(globalContext);
>>> +
>>> +        initialContext = new InitialContext();
>>> +        compContext = (Context) initialContext.lookup("java:comp");
>>> +        envContext = (Context) initialContext.lookup("java:comp/ 
>>> env");
>>> +
>>> +        syntax = new Properties();
>>> +    }
>>> +}
>>>
>>> Added: geronimo/sandbox/plugins/global-jndi/src/test/org/apache/ 
>>> geronimo/gjndi/KernelContextGBeanTest.java
>>> URL: http://svn.apache.org/viewvc/geronimo/sandbox/plugins/global- 
>>> jndi/src/test/org/apache/geronimo/gjndi/ 
>>> KernelContextGBeanTest.java?rev=432101&view=auto
>>> ==================================================================== 
>>> ==========
>>> --- geronimo/sandbox/plugins/global-jndi/src/test/org/apache/ 
>>> geronimo/gjndi/KernelContextGBeanTest.java (added)
>>> +++ geronimo/sandbox/plugins/global-jndi/src/test/org/apache/ 
>>> geronimo/gjndi/KernelContextGBeanTest.java Wed Aug 16 18:32:59 2006
>>> @@ -0,0 +1,171 @@
>>> +/**
>>> + *
>>> + * Copyright 2006 The Apache Software Foundation
>>> + *
>>> + *  Licensed under the Apache License, Version 2.0 (the "License");
>>> + *  you may not use this file except in compliance with the  
>>> License.
>>> + *  You may obtain a copy of the License at
>>> + *
>>> + *     http://www.apache.org/licenses/LICENSE-2.0
>>> + *
>>> + *  Unless required by applicable law or agreed to in writing,  
>>> software
>>> + *  distributed under the License is distributed on an "AS IS"  
>>> BASIS,
>>> + *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express  
>>> or implied.
>>> + *  See the License for the specific language governing  
>>> permissions and
>>> + *  limitations under the License.
>>> + */
>>> +package org.apache.geronimo.gjndi;
>>> +
>>> +import org.apache.geronimo.gbean.GBeanData;
>>> +import org.apache.geronimo.gbean.GBeanInfo;
>>> +import org.apache.geronimo.gbean.GBeanInfoBuilder;
>>> +import org.apache.geronimo.gbean.AbstractName;
>>> +import org.apache.geronimo.kernel.Kernel;
>>> +import org.apache.geronimo.kernel.KernelFactory;
>>> +import org.apache.geronimo.kernel.config.ConfigurationData;
>>> +import org.apache.geronimo.kernel.config.ConfigurationUtil;
>>> +import  
>>> org.apache.geronimo.kernel.config.EditableConfigurationManager;
>>> +import  
>>> org.apache.geronimo.kernel.config.EditableKernelConfigurationManager 
>>> ;
>>> +import org.apache.geronimo.kernel.repository.Artifact;
>>> +import  
>>> org.apache.geronimo.kernel.repository.DefaultArtifactManager;
>>> +import  
>>> org.apache.geronimo.kernel.repository.DefaultArtifactResolver;
>>> +import org.apache.geronimo.naming.java.RootContext;
>>> +import org.apache.xbean.naming.context.ImmutableContext;
>>> +import org.apache.xbean.naming.global.GlobalContextManager;
>>> +
>>> +import javax.naming.Context;
>>> +import javax.naming.InitialContext;
>>> +import java.util.HashMap;
>>> +import java.util.Hashtable;
>>> +import java.util.Map;
>>> +import java.util.Iterator;
>>> +import java.util.Collections;
>>> +
>>> +/**
>>> + * @version $Rev$ $Date$
>>> + */
>>> +public class KernelContextGBeanTest extends AbstractContextTest {
>>> +    private Kernel kernel;
>>> +    private EditableConfigurationManager configurationManager;
>>> +    private ConfigurationData configurationData;
>>> +    private GBeanInfo immutableContextGBeanInfo;
>>> +    private Hashtable contextEnv;
>>> +
>>> +    public void test() throws Exception {
>>> +        Map globalBindings = new HashMap();
>>> +        globalBindings.put("java:comp/string", "foo");
>>> +        globalBindings.put("java:comp/nested/context/string",  
>>> "bar");
>>> +        globalBindings.put("java:comp/a/b/c/d/e/string", "beer");
>>> +        globalBindings.put("java:comp/a/b/c/d/e/one", new Integer 
>>> (1));
>>> +        globalBindings.put("java:comp/a/b/c/d/e/two", new Integer 
>>> (2));
>>> +        globalBindings.put("java:comp/a/b/c/d/e/three", new  
>>> Integer(3));
>>> +        globalBindings.put("test/env/foo", new Integer(42));
>>> +        globalBindings.put("test/baz", "caz");
>>> +
>>> +        Map javaCompBindings = getNestedBindings(globalBindings,  
>>> "java:comp/");
>>> +        ImmutableContext javaCompContext = new ImmutableContext 
>>> (javaCompBindings);
>>> +        RootContext.setComponentContext(javaCompContext);
>>> +
>>> +        GBeanData javaComp = configurationData.addGBean 
>>> ("JavaComp", JavaCompContextGBean.GBEAN_INFO);
>>> +        AbstractName javaCompName = javaComp.getAbstractName();
>>> +
>>> +        GBeanData test = configurationData.addGBean("Test",  
>>> immutableContextGBeanInfo);
>>> +        AbstractName testName = test.getAbstractName();
>>> +        test.setAttribute("nameInNamespace", "test");
>>> +        Map testBindings = getNestedBindings(globalBindings,  
>>> "test/");
>>> +        test.setAttribute("bindings", testBindings);
>>> +
>>> +        configurationManager.loadConfiguration(configurationData);
>>> +        configurationManager.startConfiguration 
>>> (configurationData.getId());
>>> +
>>> +        InitialContext ctx = new InitialContext(contextEnv);
>>> +        assertEq(globalBindings, ctx);
>>> +
>>> +        //
>>> +        // stop test context
>>> +        //
>>> +        kernel.stopGBean(testName);
>>> +
>>> +        HashMap javaCompOnlyBindings = new HashMap(globalBindings);
>>> +        javaCompOnlyBindings.remove("test/env/foo");
>>> +        javaCompOnlyBindings.remove("test/baz");
>>> +        assertEq(javaCompOnlyBindings, ctx);
>>> +
>>> +        //
>>> +        // stop java context
>>> +        //
>>> +        kernel.stopGBean(javaCompName);
>>> +
>>> +        assertEq(Collections.EMPTY_MAP, ctx);
>>> +
>>> +
>>> +        //
>>> +        // restart java context
>>> +        //
>>> +        kernel.startGBean(javaCompName);
>>> +
>>> +        assertEq(javaCompOnlyBindings, ctx);
>>> +
>>> +        //
>>> +        // restart test context
>>> +        //
>>> +        kernel.startGBean(testName);
>>> +
>>> +        assertEq(globalBindings, ctx);
>>> +    }
>>> +
>>> +    protected Map getNestedBindings(Map globalBindings, String  
>>> nestedPath) {
>>> +        HashMap nestedBindings = new HashMap();
>>> +        for (Iterator iterator = globalBindings.entrySet 
>>> ().iterator(); iterator.hasNext();) {
>>> +            Map.Entry entry = (Map.Entry) iterator.next();
>>> +            String globalName = (String) entry.getKey();
>>> +            Object value = entry.getValue();
>>> +
>>> +            if (globalName.startsWith(nestedPath)) {
>>> +                String nestedName = globalName.substring 
>>> (nestedPath.length());
>>> +                nestedBindings.put(nestedName, value);
>>> +            }
>>> +        }
>>> +        return nestedBindings;
>>> +    }
>>> +
>>> +    protected void setUp() throws Exception {
>>> +        super.setUp();
>>> +
>>> +        kernel = KernelFactory.newInstance().createKernel("test");
>>> +        kernel.boot();
>>> +
>>> +        ConfigurationData bootstrap = new ConfigurationData(new  
>>> Artifact("bootstrap", "bootstrap", "", "car"), kernel.getNaming());
>>> +
>>> +        GBeanData artifactManagerData = bootstrap.addGBean 
>>> ("ArtifactManager", DefaultArtifactManager.GBEAN_INFO);
>>> +
>>> +        GBeanData artifactResolverData = bootstrap.addGBean 
>>> ("ArtifactResolver", DefaultArtifactResolver.GBEAN_INFO);
>>> +        artifactResolverData.setReferencePattern 
>>> ("ArtifactManager", artifactManagerData.getAbstractName());
>>> +
>>> +        GBeanData configurationManagerData = bootstrap.addGBean 
>>> ("ConfigurationManager",  
>>> EditableKernelConfigurationManager.GBEAN_INFO);
>>> +        configurationManagerData.setReferencePattern 
>>> ("ArtifactManager", artifactManagerData.getAbstractName());
>>> +        configurationManagerData.setReferencePattern 
>>> ("ArtifactResolver", artifactResolverData.getAbstractName());
>>> +
>>> +        ConfigurationUtil.loadBootstrapConfiguration(kernel,  
>>> bootstrap, getClass().getClassLoader());
>>> +
>>> +        configurationManager =  
>>> ConfigurationUtil.getEditableConfigurationManager(kernel);
>>> +
>>> +        configurationData = new ConfigurationData(new Artifact 
>>> ("test", "test", "", "car"), kernel.getNaming());
>>> +        configurationData.addGBean("GlobalContext",  
>>> GlobalContextGBean.GBEAN_INFO);
>>> +
>>> +        GBeanInfoBuilder builder = new GBeanInfoBuilder 
>>> (ImmutableContext.class);
>>> +        builder.setConstructor(new String[] {"nameInNamespace",  
>>> "bindings", "cacheReferences"});
>>> +        builder.addAttribute("nameInNamespace", String.class,  
>>> true);
>>> +        builder.addAttribute("bindings", Map.class, true);
>>> +        builder.addAttribute("cacheReferences", boolean.class,  
>>> true);
>>> +        immutableContextGBeanInfo = builder.getBeanInfo();
>>> +
>>> +        contextEnv = new Hashtable();
>>> +        contextEnv.put(Context.INITIAL_CONTEXT_FACTORY,  
>>> GlobalContextManager.class.getName());
>>> +    }
>>> +
>>> +    protected void tearDown() throws Exception {
>>> +        kernel.shutdown();
>>> +        super.tearDown();
>>> +    }
>>> +}
>>>
>>>
>


Mime
View raw message