Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  
  package org.richfaces.javascript;
  
  import java.util.List;
  import java.util.Map;
 
 import  javax.faces.FacesException;
 import  javax.faces.application.Resource;
 import  javax.faces.application.ResourceDependency;
 import  javax.faces.application.ResourceHandler;
 import  javax.faces.context.FacesContext;
 
 import  org.richfaces.resource.ResourceKey;
 
 import  com.google.common.base.Function;
 import  com.google.common.collect.ComputationException;
 import  com.google.common.collect.Lists;
 import  com.google.common.collect.MapMaker;

Author(s):
asmirnov
 
 public class ClientScriptServiceImpl implements ClientScriptService {
     private static final String TEXT_JAVASCRIPT = "text/javascript";
     private static final String ORG_RICHFACES_CSV = "org.richfaces.csv";
     private static final LibraryFunction NO_SCRIPT = new LibraryFunction() {
         public Iterable<ResourceKey> getResources() {
             return Collections.emptySet();
         }
 
         public String getName() {
             return null;
         }
     };
     private static final Function<Class<?>, ? extends LibraryFunctionRESOURCE_SCRIPT_FUNCTION = new Function<Class<?>, LibraryFunction>() {
         public LibraryFunction apply(Class<?> arg0) {
             return getScriptResource(FacesContext.getCurrentInstance(), arg0);
         }
     };
     private static final Function<Class<?>, ? extends LibraryFunctionANNOTATION_SCRIPT_FUNCTION = new Function<Class<?>, LibraryFunction>() {
         public LibraryFunction apply(Class<?> arg0) {
             return getScriptFromAnnotation(arg0);
         }
     };
     private final ConcurrentMap<Class<?>, LibraryFunctionresourcesMapping;
     private final ConcurrentMap<Class<?>, LibraryFunctionannotationsMapping;
     private final Map<Class<?>, LibraryFunctiondefaultMapping;
 
     public ClientScriptServiceImpl(Map<Class<?>, LibraryFunctiondefaultMapping) {
         this. = defaultMapping;
          = new MapMaker().initialCapacity(10).makeComputingMap();
          = new MapMaker().initialCapacity(10).makeComputingMap();
     }
 
     /*
      * (non-Javadoc)
      *
      * @see org.richfaces.validator.ClientScriptService#getScript(java.lang.Class)
      */
     public LibraryFunction getScript(FacesContext facesContextClass<?> javaClassthrows ScriptNotFoundException {
         if (null == facesContext || null == javaClass) {
             throw new NullPointerException();
         }
         LibraryFunction function = ;// RF-10719, temporary disable. getFromComputationMap(resourcesMapping, javaClass);
         if ( == function) {
             if (.containsKey(javaClass)) {
                 function = .get(javaClass);
             } else {
                 function = getFromComputationMap(javaClass);
             }
         }
         if ( == function) {
             throw new ScriptNotFoundException("No client-side script for class " + javaClass.getName());
         }
         return function;
     }
 
     private LibraryFunction getFromComputationMap(ConcurrentMap<Class<?>, LibraryFunctionmapClass<?> clazz) {
         try {
             return map.get(clazz);
         } catch (ComputationException e) {
             Throwable cause = e.getCause();
             throw new FacesException(cause);
         }
     }
 
     private static LibraryFunction getScriptFromAnnotation(Class<?> javaClass) {
         if (javaClass.isAnnotationPresent(ClientSideScript.class)) {
             ClientSideScript clientSideScript = javaClass.getAnnotation(ClientSideScript.class);
             List<ResourceKey> resources = Lists.newArrayList();
             for (ResourceDependency dependency : clientSideScript.resources()) {
                 resources.add(ResourceKey.create(dependency.name(), dependency.library()));
             }
            return new LibraryFunctionImplementation(clientSideScript.function(), resources);
        } else {
            return ;
        }
    }
    private static LibraryFunction getScriptResource(FacesContext facesContextClass<?> javaClass) {
        ResourceHandler resourceHandler = facesContext.getApplication().getResourceHandler();
        String resourceName = javaClass.getSimpleName() + ".js";
        Resource facesResource = resourceHandler.createResource(resourceName);
        if (null != facesResource) {
            final String functionName = Strings.firstToLowerCase(javaClass.getSimpleName());
            return new LibraryFunctionImplementation(functionNameresourceName);
        } else {
            return ;
        }
    }
New to GrepCode? Check out our FAQ X