Example usage for javax.naming Name size

List of usage examples for javax.naming Name size

Introduction

In this page you can find the example usage for javax.naming Name size.

Prototype

public int size();

Source Link

Document

Returns the number of components in this name.

Usage

From source file:com.dattack.naming.AbstractContext.java

@Override
public void unbind(final Name name) throws NamingException {

    ensureContextNotClosed();//  w  w w  .  ja v  a 2 s  .c om

    if (name.isEmpty()) {
        throw new InvalidNameException("Cannot unbind to empty name");
    }

    if (name.size() == 1) {
        if (objectTable.containsKey(name)) {
            objectTable.remove(name);
        }
        return;
    }

    final Context parentContext = getParentContext(name);

    parentContext.unbind(name.getSuffix(name.size() - 1));
}

From source file:com.dattack.naming.AbstractContext.java

@Override
public Object lookup(final Name name) throws NamingException {

    ensureContextNotClosed();//from   w w w .j a  va 2 s  . co  m

    /*
     * Extract from Context Javadoc: If name is empty, returns a new instance of this context (which represents the
     * same naming context as this context, but its environment may be modified independently and it may be accessed
     * concurrently).
     */
    if (name.isEmpty()) {
        try {
            return this.clone();
        } catch (final CloneNotSupportedException e) {
            // this shouldn't happen, since we are Cloneable
            throw (NamingException) new OperationNotSupportedException(e.getMessage()).initCause(e);
        }
    }

    if (name.size() > 1) {
        if (subContexts.containsKey(name.getPrefix(1))) {
            return subContexts.get(name.getPrefix(1)).lookup(name.getSuffix(1));
        }
        throw new NamingException(
                String.format("Invalid subcontext '%s' in context '%s'", name.getPrefix(1).toString(),
                        StringUtils.isBlank(getNameInNamespace()) ? "/" : getNameInNamespace()));
    }

    Object result = null; // not found
    if (objectTable.containsKey(name)) {
        result = objectTable.get(name);
    } else if (subContexts.containsKey(name)) {
        result = subContexts.get(name);
    } else if (env.containsKey(name.toString())) {
        result = env.get(name.toString());
    }

    return result;
}

From source file:jdao.JDAO.java

public static Context unbind(Context ctx, String nameStr) throws NamingException {
    log("unbinding " + nameStr);

    Name name = ctx.getNameParser("").parse(nameStr);

    //no name, nothing to do
    if (name.size() == 0)
        return null;

    Context subCtx = ctx;//from   w  w w.  j  a va 2 s  . c o m

    for (int i = 0; i < name.size() - 1; i++) {
        try {
            subCtx = (Context) subCtx.lookup(name.get(i));
        } catch (NameNotFoundException e) {
            log("Subcontext " + name.get(i) + " undefined", e);
            return null;
        }
    }

    subCtx.unbind(name.get(name.size() - 1));
    log("unbound object " + nameStr);
    return subCtx;
}

From source file:jdao.JDAO.java

public static Context bind(Context ctx, String nameStr, Object obj) throws NamingException {
    log("binding " + nameStr);

    Name name = ctx.getNameParser("").parse(nameStr);

    //no name, nothing to do
    if (name.size() == 0)
        return null;

    Context subCtx = ctx;/*from   www . j av  a2s . co m*/

    //last component of the name will be the name to bind
    for (int i = 0; i < name.size() - 1; i++) {
        try {
            subCtx = (Context) subCtx.lookup(name.get(i));
            log("Subcontext " + name.get(i) + " already exists");
        } catch (NameNotFoundException e) {
            subCtx = subCtx.createSubcontext(name.get(i));
            log("Subcontext " + name.get(i) + " created");
        }
    }

    subCtx.rebind(name.get(name.size() - 1), obj);
    log("Bound object to " + name.get(name.size() - 1));
    return subCtx;
}

From source file:org.apache.naming.NamingContext.java

/**
 * Unbinds the named object. Removes the terminal atomic name in name 
 * from the target context--that named by all but the terminal atomic 
 * part of name./*from  w ww. j av  a2 s . c  om*/
 * <p>
 * This method is idempotent. It succeeds even if the terminal atomic 
 * name is not bound in the target context, but throws 
 * NameNotFoundException if any of the intermediate contexts do not exist. 
 * 
 * @param name the name to bind; may not be empty
 * @exception NameNotFoundException if an intermediate context does not 
 * exist
 * @exception NamingException if a naming exception is encountered
 */
public void unbind(Name name) throws NamingException {
    checkWritable();

    while ((!name.isEmpty()) && (name.get(0).length() == 0))
        name = name.getSuffix(1);
    if (name.isEmpty())
        throw new NamingException(sm.getString("namingContext.invalidName"));

    NamingEntry entry = (NamingEntry) bindings.get(name.get(0));

    if (entry == null) {
        throw new NameNotFoundException(sm.getString("namingContext.nameNotBound", name.get(0)));
    }

    if (name.size() > 1) {
        if (entry.type == NamingEntry.CONTEXT) {
            ((Context) entry.value).unbind(name.getSuffix(1));
        } else {
            throw new NamingException(sm.getString("namingContext.contextExpected"));
        }
    } else {
        bindings.remove(name.get(0));
    }

}

From source file:org.apache.naming.NamingContext.java

/**
 * Destroys the named context and removes it from the namespace. Any 
 * attributes associated with the name are also removed. Intermediate 
 * contexts are not destroyed./* w  w  w  .j ava  2 s. com*/
 * <p>
 * This method is idempotent. It succeeds even if the terminal atomic 
 * name is not bound in the target context, but throws 
 * NameNotFoundException if any of the intermediate contexts do not exist. 
 * 
 * In a federated naming system, a context from one naming system may be 
 * bound to a name in another. One can subsequently look up and perform 
 * operations on the foreign context using a composite name. However, an 
 * attempt destroy the context using this composite name will fail with 
 * NotContextException, because the foreign context is not a "subcontext" 
 * of the context in which it is bound. Instead, use unbind() to remove 
 * the binding of the foreign context. Destroying the foreign context 
 * requires that the destroySubcontext() be performed on a context from 
 * the foreign context's "native" naming system.
 * 
 * @param name the name of the context to be destroyed; may not be empty
 * @exception NameNotFoundException if an intermediate context does not 
 * exist
 * @exception NotContextException if the name is bound but does not name 
 * a context, or does not name a context of the appropriate type
 */
public void destroySubcontext(Name name) throws NamingException {

    checkWritable();

    while ((!name.isEmpty()) && (name.get(0).length() == 0))
        name = name.getSuffix(1);
    if (name.isEmpty())
        throw new NamingException(sm.getString("namingContext.invalidName"));

    NamingEntry entry = (NamingEntry) bindings.get(name.get(0));

    if (entry == null) {
        throw new NameNotFoundException(sm.getString("namingContext.nameNotBound", name.get(0)));
    }

    if (name.size() > 1) {
        if (entry.type == NamingEntry.CONTEXT) {
            ((Context) entry.value).unbind(name.getSuffix(1));
        } else {
            throw new NamingException(sm.getString("namingContext.contextExpected"));
        }
    } else {
        if (entry.type == NamingEntry.CONTEXT) {
            ((Context) entry.value).close();
            bindings.remove(name.get(0));
        } else {
            throw new NotContextException(sm.getString("namingContext.contextExpected"));
        }
    }

}

From source file:org.apache.naming.NamingContext.java

/**
 * Retrieves the parser associated with the named context. In a 
 * federation of namespaces, different naming systems will parse names 
 * differently. This method allows an application to get a parser for 
 * parsing names into their atomic components using the naming convention 
 * of a particular naming system. Within any single naming system, 
 * NameParser objects returned by this method must be equal (using the 
 * equals() test).//  w w w  .  ja v  a  2s  .c om
 * 
 * @param name the name of the context from which to get the parser
 * @return a name parser that can parse compound names into their atomic 
 * components
 * @exception NamingException if a naming exception is encountered
 */
public NameParser getNameParser(Name name) throws NamingException {

    while ((!name.isEmpty()) && (name.get(0).length() == 0))
        name = name.getSuffix(1);
    if (name.isEmpty())
        return nameParser;

    if (name.size() > 1) {
        Object obj = bindings.get(name.get(0));
        if (obj instanceof Context) {
            return ((Context) obj).getNameParser(name.getSuffix(1));
        } else {
            throw new NotContextException(sm.getString("namingContext.contextExpected"));
        }
    }

    return nameParser;

}

From source file:org.apache.naming.NamingContext.java

/**
 * Retrieves the named object./* ww w.  j a  v a 2  s  .  co  m*/
 * 
 * @param name the name of the object to look up
 * @param resolveLinks If true, the links will be resolved
 * @return the object bound to name
 * @exception NamingException if a naming exception is encountered
 */
protected Object lookup(Name name, boolean resolveLinks) throws NamingException {

    // Removing empty parts
    while ((!name.isEmpty()) && (name.get(0).length() == 0))
        name = name.getSuffix(1);
    if (name.isEmpty()) {
        // If name is empty, a newly allocated naming context is returned
        return new NamingContext(env, this.name, bindings);
    }

    NamingEntry entry = (NamingEntry) bindings.get(name.get(0));

    if (entry == null) {
        throw new NameNotFoundException(sm.getString("namingContext.nameNotBound", name.get(0)));
    }

    if (name.size() > 1) {
        // If the size of the name is greater that 1, then we go through a
        // number of subcontexts.
        if (entry.type != NamingEntry.CONTEXT) {
            throw new NamingException(sm.getString("namingContext.contextExpected"));
        }
        return ((Context) entry.value).lookup(name.getSuffix(1));
    } else {
        if ((resolveLinks) && (entry.type == NamingEntry.LINK_REF)) {
            String link = ((LinkRef) entry.value).getLinkName();
            if (link.startsWith(".")) {
                // Link relative to this context
                return lookup(link.substring(1));
            } else {
                return (new InitialContext(env)).lookup(link);
            }
        } else if (entry.type == NamingEntry.REFERENCE) {
            try {
                Object obj = NamingManager.getObjectInstance(entry.value, name, this, env);
                if (obj != null) {
                    entry.value = obj;
                    entry.type = NamingEntry.ENTRY;
                }
                return obj;
            } catch (NamingException e) {
                throw e;
            } catch (Exception e) {
                log.warn(sm.getString("namingContext.failResolvingReference"), e);
                throw new NamingException(e.getMessage());
            }
        } else {
            return entry.value;
        }
    }

}

From source file:org.apache.naming.NamingContext.java

/**
 * Binds a name to an object. All intermediate contexts and the target 
 * context (that named by all but terminal atomic component of the name) 
 * must already exist.//from w  w w  . java2 s .c o m
 * 
 * @param name the name to bind; may not be empty
 * @param object the object to bind; possibly null
 * @param rebind if true, then perform a rebind (ie, overwrite)
 * @exception NameAlreadyBoundException if name is already bound
 * @exception InvalidAttributesException if object did not supply all 
 * mandatory attributes
 * @exception NamingException if a naming exception is encountered
 */
protected void bind(Name name, Object obj, boolean rebind) throws NamingException {

    checkWritable();

    while ((!name.isEmpty()) && (name.get(0).length() == 0))
        name = name.getSuffix(1);
    if (name.isEmpty())
        throw new NamingException(sm.getString("namingContext.invalidName"));

    NamingEntry entry = (NamingEntry) bindings.get(name.get(0));

    if (name.size() > 1) {
        if (entry == null) {
            throw new NameNotFoundException(sm.getString("namingContext.nameNotBound", name.get(0)));
        }
        if (entry.type == NamingEntry.CONTEXT) {
            if (rebind) {
                ((Context) entry.value).rebind(name.getSuffix(1), obj);
            } else {
                ((Context) entry.value).bind(name.getSuffix(1), obj);
            }
        } else {
            throw new NamingException(sm.getString("namingContext.contextExpected"));
        }
    } else {
        if ((!rebind) && (entry != null)) {
            throw new NamingException(sm.getString("namingContext.alreadyBound", name.get(0)));
        } else {
            // Getting the type of the object and wrapping it within a new
            // NamingEntry
            Object toBind = NamingManager.getStateToBind(obj, name, this, env);
            if (toBind instanceof Context) {
                entry = new NamingEntry(name.get(0), toBind, NamingEntry.CONTEXT);
            } else if (toBind instanceof LinkRef) {
                entry = new NamingEntry(name.get(0), toBind, NamingEntry.LINK_REF);
            } else if (toBind instanceof Reference) {
                entry = new NamingEntry(name.get(0), toBind, NamingEntry.REFERENCE);
            } else if (toBind instanceof Referenceable) {
                toBind = ((Referenceable) toBind).getReference();
                entry = new NamingEntry(name.get(0), toBind, NamingEntry.REFERENCE);
            } else {
                entry = new NamingEntry(name.get(0), toBind, NamingEntry.ENTRY);
            }
            bindings.put(name.get(0), entry);
        }
    }

}

From source file:org.compass.core.jndi.NamingHelper.java

/**
 * Bind val to name in ctx, and make sure that all intermediate contexts
 * exist./*from   www  . j  ava 2s . c o  m*/
 * 
 * @param ctx
 *            the root context
 * @param name
 *            the name as a string
 * @param val
 *            the object to be bound
 * @throws javax.naming.NamingException
 */
public static void bind(Context ctx, String name, Object val) throws NamingException {
    try {
        ctx.rebind(name, val);
    } catch (Exception e) {
        Name n = ctx.getNameParser("").parse(name);
        while (n.size() > 1) {
            String ctxName = n.get(0);

            Context subctx = null;
            try {
                subctx = (Context) ctx.lookup(ctxName);
            } catch (NameNotFoundException nfe) {
                // don't do nothing
            }

            if (subctx != null) {
                ctx = subctx;
            } else {
                ctx = ctx.createSubcontext(ctxName);
            }
            n = n.getSuffix(1);
        }
        ctx.rebind(n, val);
    }
}