001    package com.hammurapi.extract.jxpath;
002    
003    import com.hammurapi.extract.Extractor;
004    import com.hammurapi.extract.ExtractorFactory;
005    import com.hammurapi.extract.Predicate;
006    
007    public class JXPathExtractorFactory implements ExtractorFactory {
008    
009            @SuppressWarnings("unchecked")
010            @Override
011            public <T, V, C> Extractor<T, V, C> createExtractor(
012                            String language,
013                            String code, 
014                            String[] parameterNames, 
015                            Class<T>[] parameterTypes,
016                            Class<V> valueType, 
017                            Class<C> contextType, 
018                            ClassLoader classLoader) {
019                    
020                    if ("jxpath".equals(language)) {
021                            if (Boolean.class.equals(valueType)) {
022                                    return (Extractor<T, V, C>) new JXPathPredicate<T, C>(code, parameterNames);
023                            }
024                            
025                            return new JXPathExtractor<T, V, C>(code, parameterNames, valueType);
026                    }
027                    return null;
028            }
029                    
030            @SuppressWarnings("unchecked")
031            @Override
032            public <T, C> Predicate<T, C> createPredicate(
033                            String language,
034                            String code, 
035                            String[] parameterNames, 
036                            Class<T>[] parameterTypes,
037                            Class<C> contextType, 
038                            ClassLoader classLoader) {
039                    
040                    if ("jxpath".equals(language)) {
041                            return new JXPathPredicate<T, C>(code, parameterNames);
042                    }
043                    return null;
044            }
045                    
046    }