Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
   * this work for additional information regarding copyright ownership.
   * The ASF licenses this file to You 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.el.lang;
 
 import static org.jboss.web.ELMessages.MESSAGES;
 
 import java.util.Map;
 
 

Author(s):
Jacob Hookom [jacob@hookom.net]
Version:
$Id: FunctionMapperImpl.java 1882 2011-12-06 15:27:15Z remy.maucherat@jboss.com $
 
 public class FunctionMapperImpl extends FunctionMapper implements
         Externalizable {
 
     private static final long serialVersionUID = 1L;
 
     protected Map<StringFunctionfunctions = null;
 
     /*
      * (non-Javadoc)
      *
      * @see javax.el.FunctionMapper#resolveFunction(java.lang.String,
      *      java.lang.String)
      */
     @Override
     public Method resolveFunction(String prefixString localName) {
         if (this. != null) {
             Function f = this..get(prefix + ":" + localName);
             return f.getMethod();
         }
         return null;
     }
 
     public void addFunction(String prefixString localNameMethod m) {
         if (this. == null) {
             this. = new HashMap<StringFunction>();
         }
         Function f = new Function(prefixlocalNamem);
         synchronized (this) {
             this..put(prefix+":"+localNamef);
         }
     }
 
     /*
      * (non-Javadoc)
      *
      * @see java.io.Externalizable#writeExternal(java.io.ObjectOutput)
      */
     @Override
     public void writeExternal(ObjectOutput outthrows IOException {
         out.writeObject(this.);
     }
 
     /*
      * (non-Javadoc)
      *
      * @see java.io.Externalizable#readExternal(java.io.ObjectInput)
      */
     @SuppressWarnings("unchecked")
     @Override
     public void readExternal(ObjectInput inthrows IOException,
             ClassNotFoundException {
         this. = (Map<StringFunction>) in.readObject();
     }
 
     public static class Function implements Externalizable {
 
         protected transient Method m;
         protected String owner;
         protected String name;
         protected String[] types;
         protected String prefix;
        protected String localName;

        
        public Function(String prefixString localNameMethod m) {
            if (localName == null) {
                throw .invalidNullLocalName();
            }
            if (m == null) {
                throw .invalidNullMethod();
            }
            this. = prefix;
            this. = localName;
            this. = m;
        }
        public Function() {
            // for serialization
        }
        /*
         * (non-Javadoc)
         *
         * @see java.io.Externalizable#writeExternal(java.io.ObjectOutput)
         */
        @Override
        public void writeExternal(ObjectOutput outthrows IOException {
            out.writeUTF((this. != null) ? this. : "");
            out.writeUTF(this.);
            // make sure m isn't null
            getMethod();
            out.writeUTF((this. != null) ?
                     this. :
                     this..getDeclaringClass().getName());
            out.writeUTF((this. != null) ?
                     this. :
                     this..getName());
            out.writeObject((this. != null) ?
                     this. :
                     ReflectionUtil.toTypeNameArray(this..getParameterTypes()));
        }
        /*
         * (non-Javadoc)
         *
         * @see java.io.Externalizable#readExternal(java.io.ObjectInput)
         */
        @Override
        public void readExternal(ObjectInput inthrows IOException,
                ClassNotFoundException {
            this. = in.readUTF();
            if ("".equals(this.)) this. = null;
            this. = in.readUTF();
            this. = in.readUTF();
            this. = in.readUTF();
            this. = (String[]) in.readObject();
        }
        public Method getMethod() {
            if (this. == null) {
                try {
                    Class<?> t = ReflectionUtil.forName(this.);
                    Class<?>[] p = ReflectionUtil.toTypeArray(this.);
                    this. = t.getMethod(this.p);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return this.;
        }
        /* (non-Javadoc)
         * @see java.lang.Object#equals(java.lang.Object)
         */
        @Override
        public boolean equals(Object obj) {
            if (obj instanceof Function) {
                return this.hashCode() == obj.hashCode();
            }
            return false;
        }
        /* (non-Javadoc)
         * @see java.lang.Object#hashCode()
         */
        @Override
        public int hashCode() {
            return (this. + this.).hashCode();
        }
    }
New to GrepCode? Check out our FAQ X