Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source.
   * Copyright 2012 Red Hat, Inc., and individual contributors
   * as indicated by the @author tags.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
  *     http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 package org.apache.naming.resources;
 
 import static org.jboss.web.NamingMessages.MESSAGES;
 
 import java.io.File;
 import java.util.Map;
 
Alias based implementation.

Author(s):
Remy Maucherat
Mark Thomas
 
 public class AliasDirContext extends BaseDirContext {
 
     protected Map<StringDirContextaliases = new ConcurrentHashMap<StringDirContext>();
     
     public AliasDirContext() {
         super();
     }
 
     public AliasDirContext(Hashtable env) {
         super(env);
     }

    
Add an alias.
 
     public void addAlias(String pathBaseDirContext dirContext) {
         if (!path.startsWith("/")) {
             throw .invalidAliasPath(path);
         }
         .put(pathdirContext);
     }

    
    
Remove an alias.
 
     public void removeAlias(String path) {
         if (!path.startsWith("/")) {
             throw .invalidAliasPath(path);
         }
         .remove(path);
     }
    
    
    
Get the current alias configuration in String form. If no aliases are configured, an empty string will be returned.
 
     public String getAliases() {
         StringBuilder result = new StringBuilder();
         Iterator<Entry<String,DirContext>> iter =
             .entrySet().iterator();
         boolean first = true;
         while (iter.hasNext()) {
             if (first) {
                 first = false;
             } else {
                 result.append(',');
             }
             Entry<String,DirContextentry = iter.next();
             result.append(entry.getKey());
             result.append('=');
             if (entry.getValue() instanceof BaseDirContext) {
                 result.append(((BaseDirContextentry.getValue()).getDocBase());
            }
        }
        return result.toString();
    }

    
    
Set the current alias configuration from a String. The String should be of the form "/aliasPath1=docBase1,/aliasPath2=docBase2" where aliasPathN must include a leading '/' and docBaseN must be an absolute path to either a .war file or a directory. Any call to this method will replace the current set of aliases.
    public void setAliases(String theAliases) {
        // Overwrite whatever is currently set
        .clear();
        
        if (theAliases == null || theAliases.length() == 0)
            return;
        
        String[] kvps = theAliases.split(",");
        for (String kvp : kvps) {
            String[] kv = kvp.split("=");
            if (kv.length != 2 || kv[0].length() == 0 || kv[1].length() == 0)
                throw .invalidAliasMapping(kvp);
            File aliasLoc = new File(kv[1]);
            if (!aliasLoc.exists()) {
                throw .aliasNotFound(kv[1]);
            }
            BaseDirContext context;
            if (kv[1].endsWith(".war") && !(aliasLoc.isDirectory())) {
                context = new WARDirContext();
            } else if (aliasLoc.isDirectory()) {
                context = new FileDirContext();
            } else {
                throw .aliasNotFolder(kv[1]);
            }
            context.setDocBase(kv[1]);
            addAlias(kv[0], context);
        }
    }
    
    private AliasResult findAlias(String name) {
        AliasResult result = new AliasResult();
        
        String searchName = name;
        
        result.dirContext = .get(searchName);
        while (result.dirContext == null) {
            int slash = searchName.lastIndexOf('/');
            if (slash < 0)
                break;
            searchName = searchName.substring(0, slash);
            result.dirContext = .get(searchName);
        }
        
        if (result.dirContext != null)
            result.aliasName = name.substring(searchName.length());
        
        return result;
    }
    private static class AliasResult {
        DirContext dirContext;
        String aliasName;
    }
    public void release() {
        this..clear();
        super.release();
    }
    public Object lookup(String namethrows NamingException {
        AliasResult result = findAlias(name);
        if (result.dirContext != null) {
            return result.dirContext.lookup(result.aliasName);
        }
        throw new NameNotFoundException(.resourceNotFound(name));
    }
    public Object lookup(Name namethrows NamingException {
        return lookup(name.toString());
    }
    public void unbind(String namethrows NamingException {
        throw new OperationNotSupportedException();
    }
    public void rename(String oldNameString newNamethrows NamingException {
        throw new OperationNotSupportedException();
    }
    public NamingEnumeration list(String namethrows NamingException {
        AliasResult result = findAlias(name);
        if (result.dirContext != null) {
            return result.dirContext.list(result.aliasName);
        }
        throw new NameNotFoundException(.resourceNotFound(name));
    }
    public NamingEnumeration list(Name namethrows NamingException {
        return list(name.toString());
    }
    public NamingEnumeration listBindings(String namethrows NamingException {
        AliasResult result = findAlias(name);
        if (result.dirContext != null) {
            return result.dirContext.listBindings(result.aliasName);
        }
        throw new NameNotFoundException(.resourceNotFound(name));
    }
    public NamingEnumeration listBindings(Name namethrows NamingException {
        return listBindings(name.toString());
    }
    public void destroySubcontext(String namethrows NamingException {
        throw new OperationNotSupportedException();
    }
    public Object lookupLink(String namethrows NamingException {
        // Note : Links are not supported
        return lookup(name);
    }
    public String getNameInNamespace() throws NamingException {
        return ;
    }
    public Attributes getAttributes(String nameString[] attrIdsthrows NamingException {
        AliasResult result = findAlias(name);
        if (result.dirContext != null) {
            return result.dirContext.getAttributes(result.aliasNameattrIds);
        }
        throw new NameNotFoundException(.resourceNotFound(name));
    }
    public Attributes getAttributes(Name nameString[] attrIdsthrows NamingException {
        return getAttributes(name.toString(), attrIds);
    }
    public void modifyAttributes(String nameint mod_opAttributes attrsthrows NamingException {
        throw new OperationNotSupportedException();
    }
    public void modifyAttributes(String nameModificationItem[] modsthrows NamingException {
        throw new OperationNotSupportedException();
    }
    public void bind(String nameObject objAttributes attrsthrows NamingException {
        throw new OperationNotSupportedException();
    }
    public void rebind(String nameObject objAttributes attrsthrows NamingException {
        throw new OperationNotSupportedException();
    }
    public DirContext createSubcontext(String nameAttributes attrsthrows NamingException {
        throw new OperationNotSupportedException();
    }
    public DirContext getSchema(String namethrows NamingException {
        throw new OperationNotSupportedException();
    }
    public DirContext getSchemaClassDefinition(String namethrows NamingException {
        throw new OperationNotSupportedException();
    }
    public NamingEnumeration search(String nameAttributes matchingAttributesString[] attributesToReturn)
            throws NamingException {
        throw new OperationNotSupportedException();
    }
    public NamingEnumeration search(String nameAttributes matchingAttributesthrows NamingException {
        throw new OperationNotSupportedException();
    }
    public NamingEnumeration search(String nameString filterSearchControls consthrows NamingException {
        throw new OperationNotSupportedException();
    }
    public NamingEnumeration search(String nameString filterExprObject[] filterArgsSearchControls cons)
            throws NamingException {
        throw new OperationNotSupportedException();
    }
New to GrepCode? Check out our FAQ X