You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ps...@apache.org on 2003/09/02 06:43:37 UTC

cvs commit: jakarta-commons-sandbox/naming/core/src/test/org/apache/commons/naming BasicContextTest.java LocalStrings.properties LocalStrings_es.properties LocalStrings_fr.properties LocalStrings_ja.properties

psteitz     2003/09/01 21:43:37

  Added:       naming/core/src/test/org/apache/commons/naming
                        BasicContextTest.java LocalStrings.properties
                        LocalStrings_es.properties
                        LocalStrings_fr.properties
                        LocalStrings_ja.properties
  Log:
  added simple test for NamingContext
  
  Revision  Changes    Path
  1.1                  jakarta-commons-sandbox/naming/core/src/test/org/apache/commons/naming/BasicContextTest.java
  
  Index: BasicContextTest.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.commons.naming;
  
  import java.util.HashMap;
  import java.util.Hashtable;
  import java.util.Iterator;
  import java.util.Enumeration;
  import java.util.Map;
  import java.util.Properties;
  import java.util.NoSuchElementException;
  
  import javax.naming.Binding;
  import javax.naming.CompositeName;
  import javax.naming.CompoundName;
  import javax.naming.Context;
  import javax.naming.InitialContext;
  import javax.naming.NameClassPair;
  import javax.naming.NamingEnumeration;
  import javax.naming.NamingException;
  import javax.naming.Name;
  
  import junit.framework.Test;
  import junit.framework.TestCase;
  import junit.framework.TestSuite;
  import junit.textui.TestRunner;
  
  /**
  * Unit tests for basic ops on an {@link NamingContext}.
   * Adapted from o.a.geronimo.naming test of the same name
   *  
   * @version $Revision: 1.1 $ $Date: 2003/09/02 04:43:37 $
   */
  public class BasicContextTest extends TestCase {
      private HashMap envBinding;
      private Context initialContext;
      private Context compContext;
      private Context envContext;
      
      public BasicContextTest(String name) {
          super(name);
      }
  
      public static void main(String[] args) {
          TestRunner.run(suite());
      }
  
      public static Test suite() {
      	TestSuite suite = new TestSuite(BasicContextTest.class);
      	suite.setName("Basic Context Tests");
          return suite;
      }
      
      protected void setUp() throws Exception {
          super.setUp();
          Hashtable env = new Hashtable();
          envBinding = new HashMap();
          env.put(Context.INITIAL_CONTEXT_FACTORY,
              "org.apache.commons.naming.java.javaURLContextFactory");
          env.put(Context.URL_PKG_PREFIXES,"org.apache.commons.naming");
          initialContext = new NamingContext(env,"root");
          //initialContext = new SelectorContext(env,true);
          compContext = initialContext.createSubcontext("java:comp");
          envContext =  compContext.createSubcontext("env");
          envContext.bind("hello", "Hello");
          envContext.bind("world", "World");
          envBinding.put("hello", "Hello");
          envBinding.put("world", "World");
          ContextAccessController.setReadOnly("root");
          ContextAccessController.setSecurityToken("root","x");
      }
      
      protected void tearDown() throws Exception {
          ContextAccessController.setWritable("root","x");
          compContext.destroySubcontext("env");
          initialContext.destroySubcontext("java:comp");
          initialContext = null;
      }
  
      public void testInitialContext() throws NamingException {
          assertEquals("Hello", initialContext.lookup("java:comp/env/hello"));
          assertEquals("World", initialContext.lookup(new CompositeName("java:comp/env/world")));
          //assertEquals(envContext, envContext.lookup("")); <-- this impl returns a new context
      }
  
      public void testLookup() throws NamingException {
          assertEquals("Hello", envContext.lookup("hello"));
          assertEquals("Hello", compContext.lookup("env/hello"));
          try {
              envContext.lookup("foo");
              fail("expecting NamingException");
          } catch (NamingException e) {
              // OK
          }
          assertEquals("Hello", envContext.lookup(new CompositeName("hello")));
          assertEquals("Hello", compContext.lookup(new CompositeName("env/hello")));
      }
      
     /* 
      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("hello"));
      }
  
      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 enum;
          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());
          }
          enum = envContext.list("");
          result = new HashMap();
          while (enum.hasMore()) {
              NameClassPair pair = (NameClassPair) enum.next();
              result.put(pair.getName(), pair.getClassName());
          }
          assertEquals(expected, result);
  
          try {
              enum.next();
              fail();
          } catch (NoSuchElementException e) {
              // ok
          }
          try {
              enum.nextElement();
              fail();
          } catch (NoSuchElementException e) {
              // ok
          }
      }
  
      public void testListBindings() throws NamingException {
          NamingEnumeration enum;
          Map result;
          enum = envContext.listBindings("");
          result = new HashMap();
          while (enum.hasMore()) {
              Binding pair = (Binding) enum.next();
              result.put(pair.getName(), pair.getObject());
          }
          assertEquals(envBinding, result);
  
          try {
              enum.next();
              fail();
          } catch (NoSuchElementException e) {
              // ok
          }
          try {
              enum.nextElement();
              fail();
          } catch (NoSuchElementException e) {
              // ok
          }
      }
    
      public void testSpeed() throws NamingException {
          long startTime = System.currentTimeMillis();
          Context comp = (Context) initialContext.lookup("java:comp");    
          for (int i=0; i < 1000000; i++) {
              //initialContext.lookup("java:comp/env/hello"); 
              // this is sloooow due to scheme resolution
              //envContext.lookup("hello");
              comp.lookup("env/hello");
          }       
          System.out.println("lookup(String): " + (System.currentTimeMillis() - startTime));
      }
      
      public void testAccess() throws NamingException {
          try {
              envContext.bind("goodbye", "Goodbye");
              fail("expecting NamingException"); // Context is read only
          } catch (NamingException ex) {}   
          ContextAccessController.setWritable("root","x");
          envContext.bind("goodbye", "Goodbye"); // Unlocked now
      }
      
  }
  
  
  
  1.1                  jakarta-commons-sandbox/naming/core/src/test/org/apache/commons/naming/LocalStrings.properties
  
  Index: LocalStrings.properties
  ===================================================================
  contextBindings.unknownContext=Unknown context name : {0}
  contextBindings.noContextBoundToThread=No naming context bound to this thread
  contextBindings.noContextBoundToCL=No naming context bound to this class loader
  selectorContext.noJavaUrl=This context must be accessed throught a java: URL
  namingContext.contextExpected=Name is not bound to a Context
  namingContext.nameNotBound=Name {0} is not bound in this Context
  namingContext.readOnly=Context is read only
  namingContext.invalidName=Name is not valid
  namingContext.alreadyBound=Name {0} is already bound in this Context
  namingContext.noAbsoluteName=Can't generate an absolute name for this namespace
  
  
  1.1                  jakarta-commons-sandbox/naming/core/src/test/org/apache/commons/naming/LocalStrings_es.properties
  
  Index: LocalStrings_es.properties
  ===================================================================
  # $Id: LocalStrings_es.properties,v 1.1 2003/09/02 04:43:37 psteitz Exp $
  
  # language es
  
  # package org.apache.naming
  
  
  contextBindings.unknownContext=Contexto {0} desconocido 
  contextBindings.noContextBoundToThread=No hay contexto de nombres asociado a este hilo
  selectorContext.noJavaUrl=Este contexto debe de ser accedido a traves de una URL de tipo java:
  namingContext.contextExpected=El nombre no esta asociado a ningun Contexto
  namingContext.nameNotBound=El nombre {0} no este asociado a este contexto
  namingContext.readOnly=El contexto es de solo lectura
  namingContext.invalidName=Nombre no valido
  namingContext.noAbsoluteName=No se puede generar un nombre absoluto para este espacio de nombres
  namingContext.alreadyBound=El nombre {0} este ya asociado en este Contexto
  
  
  
  1.1                  jakarta-commons-sandbox/naming/core/src/test/org/apache/commons/naming/LocalStrings_fr.properties
  
  Index: LocalStrings_fr.properties
  ===================================================================
  contextBindings.unknownContext=Nom de Contexte inconnu : {0}
  contextBindings.noContextBoundToThread=Aucun Contexte de nommage li� � ce thread
  contextBindings.noContextBoundToCL=Aucun Contexte de nommage li� � ce chargeur de classes
  selectorContext.noJavaUrl=Ce Contexte doit �tre acc�d� par une java: URL
  namingContext.contextExpected=Le Nom n''est pas li� � un Contexte
  namingContext.nameNotBound=Le Nom {0} n''est pas li� � ce Contexte
  namingContext.readOnly=Le Contexte est en lecture seule
  namingContext.invalidName=Le Nom est invalide
  namingContext.alreadyBound=Le Nom {0} est d�j� li� � ce Contexte
  namingContext.noAbsoluteName=Impossible de g�n�rer un nom absolu pour cet espace de nommage (namespace)
  
  
  1.1                  jakarta-commons-sandbox/naming/core/src/test/org/apache/commons/naming/LocalStrings_ja.properties
  
  Index: LocalStrings_ja.properties
  ===================================================================
  contextBindings.unknownContext=\u672a\u77e5\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u540d\u3067\u3059: {0}
  contextBindings.noContextBoundToThread=\u540d\u524d\u4ed8\u3051\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306f\u3053\u306e\u30b9\u30ec\u30c3\u30c9\u306b\u306f\u30d0\u30a4\u30f3\u30c9\u3055\u308c\u3066\u3044\u307e\u305b\u3093
  contextBindings.noContextBoundToCL=\u540d\u524d\u4ed8\u3051\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306f\u3053\u306e\u30af\u30e9\u30b9\u30ed\u30fc\u30c0\u306b\u306f\u30d0\u30a4\u30f3\u30c9\u3055\u308c\u3066\u3044\u307e\u305b\u3093
  selectorContext.noJavaUrl=\u3053\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306b\u306fjava: URL\u3092\u7528\u3044\u3066\u30a2\u30af\u30bb\u30b9\u3055\u308c\u306d\u3070\u3044\u3051\u307e\u305b\u3093
  namingContext.contextExpected=\u540d\u524d\u304c\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306b\u30d0\u30a4\u30f3\u30c9\u3055\u308c\u3066\u3044\u307e\u305b\u3093
  namingContext.nameNotBound=\u540d\u524d {0} \u306f\u3053\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306b\u30d0\u30a4\u30f3\u30c9\u3055\u308c\u3066\u3044\u307e\u305b\u3093
  namingContext.readOnly=\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306f\u30ea\u30fc\u30c9\u30aa\u30f3\u30ea\u30fc\u3067\u3059
  namingContext.invalidName=\u540d\u524d\u306f\u7121\u52b9\u3067\u3059
  namingContext.alreadyBound=\u540d\u524d {0} \u306f\u3059\u3067\u306b\u3053\u306e\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u306b\u30d0\u30a4\u30f3\u30c9\u3055\u308c\u3066\u3044\u307e\u3059
  namingContext.noAbsoluteName=\u3053\u306e\u540d\u524d\u7a7a\u9593\u306b\u7d76\u5bfe\u540d\u3092\u751f\u6210\u3067\u304d\u307e\u305b\u3093