geronimo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dain Sundstrom <d...@iq80.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:04:20 GMT
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