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 }