Class WritableContext

    • Field Detail

      • writeLock

        private final java.util.concurrent.locks.Lock writeLock
      • bindingsRef

        private final java.util.concurrent.atomic.AtomicReference<java.util.Map<java.lang.String,​java.lang.Object>> bindingsRef
      • indexRef

        private final java.util.concurrent.atomic.AtomicReference<java.util.Map<java.lang.String,​java.lang.Object>> indexRef
      • cacheReferences

        private final boolean cacheReferences
      • supportReferenceable

        private final boolean supportReferenceable
      • checkDereferenceDifferent

        private final boolean checkDereferenceDifferent
      • assumeDereferenceBound

        private final boolean assumeDereferenceBound
    • Constructor Detail

      • WritableContext

        public WritableContext()
                        throws javax.naming.NamingException
        Throws:
        javax.naming.NamingException
      • WritableContext

        public WritableContext​(java.lang.String nameInNamespace)
                        throws javax.naming.NamingException
        Throws:
        javax.naming.NamingException
      • WritableContext

        public WritableContext​(java.lang.String nameInNamespace,
                               java.util.Map<java.lang.String,​java.lang.Object> bindings)
                        throws javax.naming.NamingException
        Throws:
        javax.naming.NamingException
      • WritableContext

        public WritableContext​(java.lang.String nameInNamespace,
                               java.util.Map<java.lang.String,​java.lang.Object> bindings,
                               boolean cacheReferences)
                        throws javax.naming.NamingException
        Throws:
        javax.naming.NamingException
      • WritableContext

        public WritableContext​(java.lang.String nameInNamespace,
                               java.util.Map<java.lang.String,​java.lang.Object> bindings,
                               ContextAccess contextAccess)
                        throws javax.naming.NamingException
        Throws:
        javax.naming.NamingException
      • WritableContext

        public WritableContext​(java.lang.String nameInNamespace,
                               java.util.Map<java.lang.String,​java.lang.Object> bindings,
                               ContextAccess contextAccess,
                               boolean cacheReferences)
                        throws javax.naming.NamingException
        Throws:
        javax.naming.NamingException
      • WritableContext

        public WritableContext​(java.lang.String nameInNamespace,
                               java.util.Map<java.lang.String,​java.lang.Object> bindings,
                               ContextAccess contextAccess,
                               boolean cacheReferences,
                               boolean supportReferenceable,
                               boolean checkDereferenceDifferent,
                               boolean assumeDereferenceBound)
                        throws javax.naming.NamingException
        Throws:
        javax.naming.NamingException
    • Method Detail

      • addBinding

        protected boolean addBinding​(java.lang.String name,
                                     java.lang.Object value,
                                     boolean rebind)
                              throws javax.naming.NamingException
        Overrides:
        addBinding in class AbstractFederatedContext
        Throws:
        javax.naming.NamingException
      • addBinding

        protected void addBinding​(java.util.concurrent.atomic.AtomicReference<java.util.Map<java.lang.String,​java.lang.Object>> bindingsRef,
                                  java.lang.String name,
                                  java.lang.String nameInNamespace,
                                  java.lang.Object value,
                                  boolean rebind)
                           throws javax.naming.NamingException
        Throws:
        javax.naming.NamingException
      • addToIndex

        private void addToIndex​(java.lang.String name,
                                java.lang.Object value)
      • removeBinding

        protected boolean removeBinding​(java.lang.String name,
                                        boolean removeNotEmptyContext)
                                 throws javax.naming.NamingException
        Description copied from class: AbstractContext
        Removes the binding from the context. The name will not contain a path and the value will not be a nested context although it may be a foreign context.
        Overrides:
        removeBinding in class AbstractFederatedContext
        Parameters:
        name - name under which the value should be bound
        removeNotEmptyContext - ??? TODO figure this out
        Returns:
        whether removal was successful
        Throws:
        javax.naming.NamingException - if a problem occurs during the bind such as a value already being bound
      • removeBinding

        private boolean removeBinding​(java.util.concurrent.atomic.AtomicReference<java.util.Map<java.lang.String,​java.lang.Object>> bindingsRef,
                                      java.lang.String name,
                                      java.lang.String nameInNamespace,
                                      boolean removeNotEmptyContext)
                               throws javax.naming.NamingException
        Throws:
        javax.naming.NamingException
      • removeFromIndex

        private java.util.Map<java.lang.String,​java.lang.Object> removeFromIndex​(java.lang.String name)
      • createNestedSubcontext

        public javax.naming.Context createNestedSubcontext​(java.lang.String path,
                                                           java.util.Map<java.lang.String,​java.lang.Object> bindings)
                                                    throws javax.naming.NamingException
        Description copied from interface: NestedContextFactory
        Creates a nested subcontext instance. This does not cause the nested context to be bound.
        Parameters:
        path - the path to the new nested context
        bindings - the initial bindings for the context
        Returns:
        the new nested context
        Throws:
        javax.naming.NamingException - on error
      • buildIndex

        private static java.util.Map<java.lang.String,​java.lang.Object> buildIndex​(java.lang.String nameInNamespace,
                                                                                         java.util.Map<java.lang.String,​java.lang.Object> bindings)
      • getDeepBinding

        protected java.lang.Object getDeepBinding​(java.lang.String name)
        Description copied from class: AbstractContext
        Gets the object bound to the name. The name may contain slashes.
        Overrides:
        getDeepBinding in class AbstractFederatedContext
        Parameters:
        name - the name
        Returns:
        the object bound to the name, or null if not found
      • getWrapperBindings

        protected java.util.Map<java.lang.String,​java.lang.Object> getWrapperBindings()
                                                                                     throws javax.naming.NamingException
        Specified by:
        getWrapperBindings in class AbstractFederatedContext
        Throws:
        javax.naming.NamingException