1 /*
   2  * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 package com.sun.corba.se.impl.naming.cosnaming;
  27 
  28 // Import general CORBA classes
  29 import org.omg.CORBA.Object;
  30 
  31 // Import org.omg.CosNaming classes
  32 import org.omg.CosNaming.BindingType;
  33 import org.omg.CosNaming.BindingTypeHolder;
  34 import org.omg.CosNaming.BindingListHolder;
  35 import org.omg.CosNaming.BindingIteratorHolder;
  36 import org.omg.CosNaming.NameComponent;
  37 import org.omg.CosNaming.NamingContext;
  38 import org.omg.PortableServer.POA;
  39 
  40 /**
  41  * This interface defines a set of methods that must be implemented by the
  42  * "data store" associated with a NamingContext implementation.
  43  * It allows for different implementations of naming contexts that
  44  * support the same API but differ in storage mechanism.
  45  */
  46 public interface NamingContextDataStore {
  47     /**
  48      * Method which implements binding a name to an object as
  49      * the specified binding type.
  50      * @param n a NameComponent which is the name under which the object
  51      * will be bound.
  52      * @param obj the object reference to be bound.
  53      * @param bt Type of binding (as object or as context).
  54      * @exception org.omg.CORBA.SystemException One of a fixed set of CORBA system exceptions.
  55      */
  56     void Bind(NameComponent n, org.omg.CORBA.Object obj, BindingType bt)
  57         throws org.omg.CORBA.SystemException;
  58 
  59     /**
  60      * Method which implements resolving the specified name,
  61      * returning the type of the binding and the bound object reference.
  62      * If the id and kind of the NameComponent are both empty, the initial
  63      * naming context (i.e., the local root) must be returned.
  64      * @param n a NameComponent which is the name to be resolved.
  65      * @param bth the BindingType as an out parameter.
  66      * @return the object reference bound under the supplied name.
  67      * @exception org.omg.CORBA.SystemException One of a fixed set of CORBA system exceptions.
  68      */
  69     org.omg.CORBA.Object Resolve(NameComponent n,BindingTypeHolder bth)
  70         throws org.omg.CORBA.SystemException;
  71 
  72     /**
  73      * Method which implements unbinding a name.
  74      * @return the object reference bound to the name, or null if not found.
  75      * @exception org.omg.CORBA.SystemException One of a fixed set of CORBA system exceptions.
  76      */
  77     org.omg.CORBA.Object Unbind(NameComponent n)
  78         throws org.omg.CORBA.SystemException;
  79 
  80     /**
  81      * Method which implements listing the contents of this
  82      * NamingContext and return a binding list and a binding iterator.
  83      * @param how_many The number of requested bindings in the BindingList.
  84      * @param bl The BindingList as an out parameter.
  85      * @param bi The BindingIterator as an out parameter.
  86      * @exception org.omg.CORBA.SystemException One of a fixed set of CORBA system exceptions.
  87      */
  88     void List(int how_many, BindingListHolder bl, BindingIteratorHolder bi)
  89         throws org.omg.CORBA.SystemException;
  90 
  91     /**
  92      * Method which implements creating a new NamingContext.
  93      * @return an object reference for a new NamingContext object implemented
  94      * by this Name Server.
  95      * @exception org.omg.CORBA.SystemException One of a fixed set of CORBA system exceptions.
  96      */
  97     NamingContext NewContext()
  98         throws org.omg.CORBA.SystemException;
  99 
 100     /**
 101      * Method which implements destroying this NamingContext.
 102      * @exception org.omg.CORBA.SystemException One of a fixed set of CORBA system exceptions.
 103      */
 104     void Destroy()
 105         throws org.omg.CORBA.SystemException;
 106 
 107     /**
 108      * Method which returns whether this NamingContext is empty
 109      * or not.
 110      * @return true if this NamingContext contains no bindings.
 111      */
 112     boolean IsEmpty();
 113 
 114     POA getNSPOA( );
 115 }