You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2004/01/14 09:28:33 UTC

cvs commit: incubator-geronimo/modules/core/src/test/org/apache/geronimo/naming/ger GerContextTest.java GerRootContextTest.java

djencks     2004/01/14 00:28:33

  Modified:    modules/core/src/java/org/apache/geronimo/naming/java
                        ReadOnlyContext.java
  Added:       modules/core/src/java/org/apache/geronimo/naming/ger
                        GerContext.java GerContextManager.java
                        GerRootContext.java gerURLContextFactory.java
               modules/core/src/test/org/apache/geronimo/naming/ger
                        GerContextTest.java GerRootContextTest.java
  Log:
  Global in-vm non-read only jndi context with nonstandard bind/unbind methods (They create/delete subcontexts as needed)
  
  Revision  Changes    Path
  1.1                  incubator-geronimo/modules/core/src/java/org/apache/geronimo/naming/ger/GerContext.java
  
  Index: GerContext.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Geronimo", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */
  
  package org.apache.geronimo.naming.ger;
  
  import java.util.HashSet;
  import java.util.Hashtable;
  import java.util.Iterator;
  import java.util.Map;
  import java.util.Set;
  
  import javax.naming.Name;
  import javax.naming.NamingEnumeration;
  import javax.naming.NamingException;
  
  import org.apache.geronimo.naming.java.ReadOnlyContext;
  
  /**
   *
   *
   * @version $Revision: 1.1 $ $Date: 2004/01/14 08:28:33 $
   *
   * */
  public class GerContext extends ReadOnlyContext {
  
      GerContext() {
          super();
      }
  
      GerContext(GerContext context, Hashtable environment) {
          super(context, environment);
      }
  
      protected synchronized Map internalBind(String name, Object value) throws NamingException {
          return super.internalBind(name, value);
      }
  
      protected ReadOnlyContext newContext() {
          return new GerContext();
      }
  
      protected synchronized Set internalUnbind(String name) throws NamingException {
          assert name != null;
          assert !name.equals("");
          Set removeBindings = new HashSet();
          int pos = name.indexOf('/');
          if (pos == -1) {
              if (treeBindings.remove(name) == null) {
                  throw new NamingException("Nothing was bound at " + name);
              }
              bindings.remove(name);
              removeBindings.add(name);
          } else {
              String segment = name.substring(0, pos);
              assert segment != null;
              assert !segment.equals("");
              Object o = treeBindings.get(segment);
              if (o == null) {
                  throw new NamingException("No context was bound at " + name);
              } else if (!(o instanceof GerContext)) {
                  throw new NamingException("Something else bound where a subcontext should be " + o);
              }
              GerContext gerContext = (GerContext)o;
  
              String remainder = name.substring(pos + 1);
              Set subBindings = gerContext.internalUnbind(remainder);
              for (Iterator iterator = subBindings.iterator(); iterator.hasNext();) {
                  String subName = segment + "/" + (String) iterator.next();
                  treeBindings.remove(subName);
                  removeBindings.add(subName);
              }
              if (gerContext.bindings.isEmpty()) {
                  bindings.remove(segment);
                  treeBindings.remove(segment);
                  removeBindings.add(segment);
              }
          }
          return removeBindings;
      }
  
  
      public synchronized Object lookup(String name) throws NamingException {
          return super.lookup(name);
      }
  
      public Object lookup(Name name) throws NamingException {
          return super.lookup(name);
      }
  
      public synchronized Object lookupLink(String name) throws NamingException {
          return super.lookupLink(name);
      }
  
      public synchronized Name composeName(Name name, Name prefix) throws NamingException {
          return super.composeName(name, prefix);
      }
  
      public synchronized String composeName(String name, String prefix) throws NamingException {
          return super.composeName(name, prefix);
      }
  
      public synchronized NamingEnumeration list(String name) throws NamingException {
          return super.list(name);
      }
  
      public synchronized NamingEnumeration listBindings(String name) throws NamingException {
          return super.listBindings(name);
      }
  
      public synchronized Object lookupLink(Name name) throws NamingException {
          return super.lookupLink(name);
      }
  
      public synchronized NamingEnumeration list(Name name) throws NamingException {
          return super.list(name);
      }
  
      public synchronized NamingEnumeration listBindings(Name name) throws NamingException {
          return super.listBindings(name);
      }
  
  }
  
  
  
  1.1                  incubator-geronimo/modules/core/src/java/org/apache/geronimo/naming/ger/GerContextManager.java
  
  Index: GerContextManager.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Geronimo", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */
  
  package org.apache.geronimo.naming.ger;
  
  import javax.naming.NamingException;
  
  /**
   *
   *
   * @version $Revision: 1.1 $ $Date: 2004/01/14 08:28:33 $
   *
   * */
  public class GerContextManager {
  
      private GerContextManager() {}
  
      public static void bind(String name, Object value) throws NamingException {
          GerRootContext.rootContext.internalBind(name, value);
      }
  
      public static void unbind(String name) throws NamingException {
          GerRootContext.rootContext.internalUnbind(name);
      }
  }
  
  
  
  1.1                  incubator-geronimo/modules/core/src/java/org/apache/geronimo/naming/ger/GerRootContext.java
  
  Index: GerRootContext.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Geronimo", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */
  
  package org.apache.geronimo.naming.ger;
  
  import java.util.Hashtable;
  
  import javax.naming.NamingException;
  
  /**
   *
   *
   * @version $Revision: 1.1 $ $Date: 2004/01/14 08:28:33 $
   *
   * */
  public class GerRootContext extends GerContext {
      static GerRootContext rootContext = new GerRootContext();
  
      private GerRootContext() {
          super();
      }
  
      GerRootContext(Hashtable environment) {
          super(rootContext, environment);
      }
  
      public Object lookup(String name) throws NamingException {
          if (name.startsWith("ger:")) {
              name = name.substring(4);
              if (name.length() == 0) {
                  return this;
              }
          }
          return super.lookup(name);
      }
  }
  
  
  
  1.1                  incubator-geronimo/modules/core/src/java/org/apache/geronimo/naming/ger/gerURLContextFactory.java
  
  Index: gerURLContextFactory.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Geronimo", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */
  
  package org.apache.geronimo.naming.ger;
  
  import java.util.Hashtable;
  
  import javax.naming.spi.ObjectFactory;
  import javax.naming.Name;
  import javax.naming.Context;
  import javax.naming.OperationNotSupportedException;
  
  import org.apache.geronimo.naming.jmx.JMXContext;
  
  /**
   *
   *
   * @version $Revision: 1.1 $ $Date: 2004/01/14 08:28:33 $
   *
   * */
  public class gerURLContextFactory implements ObjectFactory {
  
  
      public Object getObjectInstance(Object obj, Name name, Context nameCtx,
                                      Hashtable environment) throws Exception {
          if (obj == null) {
              return new GerRootContext(environment);
          } else {
              throw new OperationNotSupportedException();
          }
      }
  
  }
  
  
  
  1.9       +12 -9     incubator-geronimo/modules/core/src/java/org/apache/geronimo/naming/java/ReadOnlyContext.java
  
  Index: ReadOnlyContext.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/core/src/java/org/apache/geronimo/naming/java/ReadOnlyContext.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ReadOnlyContext.java	12 Jan 2004 06:19:52 -0000	1.8
  +++ ReadOnlyContext.java	14 Jan 2004 08:28:33 -0000	1.9
  @@ -96,12 +96,11 @@
    * @version $Revision$ $Date$
    */
   public class ReadOnlyContext implements Context {
  -    private final Hashtable env;        // environment for this context
  -    private final Map bindings;         // bindings at my level
  -    private final Map treeBindings;     // all bindings under me
  +    protected final Hashtable env;        // environment for this context
  +    protected final Map bindings;         // bindings at my level
  +    protected final Map treeBindings;     // all bindings under me
   
  -
  -    ReadOnlyContext() {
  +    protected ReadOnlyContext() {
           env = new Hashtable();
           bindings = new HashMap();
           treeBindings = new HashMap();
  @@ -117,7 +116,7 @@
           this.treeBindings = Collections.EMPTY_MAP;
       }
   
  -    ReadOnlyContext(ReadOnlyContext clone, Hashtable env) {
  +    protected ReadOnlyContext(ReadOnlyContext clone, Hashtable env) {
           this.bindings = clone.bindings;
           this.treeBindings = clone.treeBindings;
           this.env = new Hashtable(env);
  @@ -135,7 +134,7 @@
        * @return
        * @throws NamingException
        */
  -    Map internalBind(String name, Object value) throws NamingException {
  +    protected Map internalBind(String name, Object value) throws NamingException {
           assert name != null;
           assert !name.equals("");
           Map newBindings = new HashMap();
  @@ -152,7 +151,7 @@
               assert !segment.equals("");
               Object o = treeBindings.get(segment);
               if (o == null) {
  -                o = new ReadOnlyContext();
  +                o = newContext();
                   treeBindings.put(segment, o);
                   bindings.put(segment, o);
                   newBindings.put(segment, o);
  @@ -171,6 +170,10 @@
               }
           }
           return newBindings;
  +    }
  +
  +    protected ReadOnlyContext newContext() {
  +        return new ReadOnlyContext();
       }
   
       public Object addToEnvironment(String propName, Object propVal) throws NamingException {
  
  
  
  1.1                  incubator-geronimo/modules/core/src/test/org/apache/geronimo/naming/ger/GerContextTest.java
  
  Index: GerContextTest.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Geronimo", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */
  
  package org.apache.geronimo.naming.ger;
  
  import javax.naming.NamingException;
  
  import junit.framework.TestCase;
  
  /**
   *
   *
   * @version $Revision: 1.1 $ $Date: 2004/01/14 08:28:33 $
   *
   * */
  public class GerContextTest extends TestCase {
      private GerContext context;
  
      protected void setUp() throws Exception {
          context = new GerContext();
          context.internalBind("one", "one");
          context.internalBind("this/is/a/compound/name", "two");
          context.internalBind("this/is/another/compound/name", "three");
      }
  
      public void testLookup() throws Exception {
          assertEquals(context.lookup("one"), "one");
          assertEquals(context.lookup("this/is/a/compound/name"), "two");
          assertEquals(context.lookup("this/is/another/compound/name"), "three");
      }
  
      public void testUnbind() throws Exception {
          assertEquals(1, context.internalUnbind("one").size());
          try {
              context.lookup("one");
              fail();
          } catch (NamingException e) {
          }
          assertEquals(3, context.internalUnbind("this/is/a/compound/name").size());
          try {
              context.lookup("this/is/a/compound/name");
              fail();
          } catch (NamingException e) {
          }
          context.lookup("this/is");
          assertEquals(5, context.internalUnbind("this/is/another/compound/name").size());
          try {
              context.lookup("this/is");
              fail();
          } catch (NamingException e) {
          }
      }
  }
  
  
  
  1.1                  incubator-geronimo/modules/core/src/test/org/apache/geronimo/naming/ger/GerRootContextTest.java
  
  Index: GerRootContextTest.java
  ===================================================================
  /* ====================================================================
   * The Apache Software License, Version 1.1
   *
   * Copyright (c) 2003 The Apache Software Foundation.  All rights
   * reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   *
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in
   *    the documentation and/or other materials provided with the
   *    distribution.
   *
   * 3. The end-user documentation included with the redistribution,
   *    if any, must include the following acknowledgment:
   *       "This product includes software developed by the
   *        Apache Software Foundation (http://www.apache.org/)."
   *    Alternately, this acknowledgment may appear in the software itself,
   *    if and wherever such third-party acknowledgments normally appear.
   *
   * 4. The names "Apache" and "Apache Software Foundation" and
   *    "Apache Geronimo" must not be used to endorse or promote products
   *    derived from this software without prior written permission. For
   *    written permission, please contact apache@apache.org.
   *
   * 5. Products derived from this software may not be called "Apache",
   *    "Apache Geronimo", nor may "Apache" appear in their name, without
   *    prior written permission of the Apache Software Foundation.
   *
   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   * SUCH DAMAGE.
   * ====================================================================
   *
   * This software consists of voluntary contributions made by many
   * individuals on behalf of the Apache Software Foundation.  For more
   * information on the Apache Software Foundation, please see
   * <http://www.apache.org/>.
   *
   * ====================================================================
   */
  
  package org.apache.geronimo.naming.ger;
  
  import javax.naming.InitialContext;
  
  import junit.framework.TestCase;
  
  /**
   *
   *
   * @version $Revision: 1.1 $ $Date: 2004/01/14 08:28:33 $
   *
   * */
  public class GerRootContextTest extends TestCase {
  
      protected void setUp() throws Exception {
          GerContextManager.bind("one", "one");
          GerContextManager.bind("this/is/a/compound/name", "two");
          GerContextManager.bind("this/is/another/compound/name", "three");
      }
  
      public void testLookup() throws Exception {
          InitialContext context = new InitialContext();
          assertEquals(context.lookup("ger:one"), "one");
          assertEquals(context.lookup("ger:this/is/a/compound/name"), "two");
          assertEquals(context.lookup("ger:this/is/another/compound/name"), "three");
  
      }
  }
  
  
  

Re: cvs commit: incubator-geronimo/modules/core/src/test/org/apache/geronimo/naming/ger GerContextTest.java GerRootContextTest.java

Posted by Jacek Laskowski <ja...@hp.com>.
djencks@apache.org wrote:
> djencks     2004/01/14 00:28:33
> 
>   Modified:    modules/core/src/java/org/apache/geronimo/naming/java
>                         ReadOnlyContext.java
>   Added:       modules/core/src/java/org/apache/geronimo/naming/ger
>                         GerContext.java GerContextManager.java
>                         GerRootContext.java gerURLContextFactory.java
>                modules/core/src/test/org/apache/geronimo/naming/ger
>                         GerContextTest.java GerRootContextTest.java
>   Log:
>   Global in-vm non-read only jndi context with nonstandard bind/unbind methods (They create/delete subcontexts as needed)
>   
>   Revision  Changes    Path
>   1.1                  incubator-geronimo/modules/core/src/java/org/apache/geronimo/naming/ger/GerContext.java
[...]
>   public class GerContext extends ReadOnlyContext {
[...]
>       public synchronized Object lookup(String name) throws NamingException {
>           return super.lookup(name);
>       }
>   
>       public Object lookup(Name name) throws NamingException {
>           return super.lookup(name);
>       }
>   
>       public synchronized Object lookupLink(String name) throws NamingException {
>           return super.lookupLink(name);
>       }
>   
>       public synchronized Name composeName(Name name, Name prefix) throws NamingException {
>           return super.composeName(name, prefix);
>       }
>   
>       public synchronized String composeName(String name, String prefix) throws NamingException {
>           return super.composeName(name, prefix);
>       }
>   
>       public synchronized NamingEnumeration list(String name) throws NamingException {
>           return super.list(name);
>       }
>   
>       public synchronized NamingEnumeration listBindings(String name) throws NamingException {
>           return super.listBindings(name);
>       }
>   
>       public synchronized Object lookupLink(Name name) throws NamingException {
>           return super.lookupLink(name);
>       }
>   
>       public synchronized NamingEnumeration list(Name name) throws NamingException {
>           return super.list(name);
>       }
>   
>       public synchronized NamingEnumeration listBindings(Name name) throws NamingException {
>           return super.listBindings(name);
>       }

I'm a little confused with the change. Why are the methods if they do 
nothing but pass a request along to its non-abstract superclass 
(ReadOnlyContext class)?

Jacek