Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/utils/MetadataReferenceFactory.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/utils/MetadataReferenceFactory.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/utils/MetadataReferenceFactory.java	(revision 57158)
@@ -1,24 +1,23 @@
 package eu.dnetlib.utils;
 
+
 public class MetadataReferenceFactory {
 
-	public MetadataReference getMetadata(final String format, final String layout, final String interpretation) {
+	public static MetadataReference getMetadata(final String format, final String layout, final String interpretation) {
 		return new MetadataReference(format, layout, interpretation);
 	}
 
-	public MetadataReference decodeMetadata(final String encoded) {
-		return decodeMetadata(encoded, "@");
+	public static MetadataReference decodeMetadata(final String encoded) {
+		String[] split = encoded.split("-");
+		if (split.length == 3) return getMetadata(split[0], split[1], split[2]);
+
+		throw new IllegalStateException("malformed metadata reference: " + encoded);
 	}
 
-	public MetadataReference decodeMetadata(final String encoded, final String separator) {
-		String[] split = encoded.split(separator);
+	public static MetadataReference decode(final String encoded, String mdref_separator_value) {
+		String[] split = encoded.split(mdref_separator_value);
 		if (split.length == 3) return getMetadata(split[0], split[1], split[2]);
 
 		throw new IllegalStateException("malformed metadata reference: " + encoded);
 	}
-
-	public static MetadataReference decode(final String encoded, final String separator) {
-		return new MetadataReferenceFactory().decodeMetadata(encoded, separator);
-	}
-
 }
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/IndexQueryFactory.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/IndexQueryFactory.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/IndexQueryFactory.java	(revision 57158)
@@ -3,16 +3,19 @@
 import java.util.List;
 import java.util.Map;
 
+import org.springframework.beans.factory.annotation.Autowired;
+
 import com.google.common.collect.BiMap;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
-import eu.dnetlib.clients.index.client.AbstractIndexClient;
+
+import eu.dnetlib.clients.index.client.IndexClient;
 import eu.dnetlib.clients.index.client.IndexClientException;
 import eu.dnetlib.clients.index.query.Pruner.Result;
 import eu.dnetlib.cql.CqlTranslator;
 import eu.dnetlib.cql.lucene.TranslatedQuery;
+import eu.dnetlib.rmi.provision.IndexServiceException;
 import eu.dnetlib.utils.MetadataReference;
-import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * A factory for creating IndexQuery objects.
@@ -29,35 +32,30 @@
 	 */
 	private Pruner cqlPruner;
 
-	/**
-	 * The default query params.
-	 */
+	/** The default query params. */
 	private Map<String, List<String>> defaultQueryParams;
 
-	/**
-	 * The browse aliases.
-	 */
+	/** CqlTranslator. */
 	@Autowired
-	private BrowseAliases browseAliases;
+	private CqlTranslator translator;
 
-	/**
-	 * The query translator.
-	 */
+	/** The browse aliases. */
 	@Autowired
-	private CqlTranslator cqlTranslator;
+	private BrowseAliases browseAliases;
 
-	/**
-	 * The weights.
-	 */
+	/** The weights. */
 	@Autowired
 	private Weights weights;
 
 	/**
 	 * New instance.
-	 *
-	 * @param cql           the cql
-	 * @param res           the res
-	 * @param queryLanguage the query language
+	 * 
+	 * @param cql
+	 *            the cql
+	 * @param res
+	 *            the res
+	 * @param queryLanguage
+	 *            the query language
 	 * @return the index query
 	 */
 	protected abstract IndexQuery newInstance(final TranslatedQuery cql, final Result res, final QueryLanguage queryLanguage);
@@ -64,22 +62,27 @@
 
 	/**
 	 * Sets the query options.
-	 *
-	 * @param indexQuery the index query
+	 * 
+	 * @param indexQuery
+	 *            the index query
 	 * @return the index query
 	 */
-	protected abstract IndexQuery setQueryOptions(final IndexQuery indexQuery, final AbstractIndexClient client);
+	protected abstract IndexQuery setQueryOptions(final IndexQuery indexQuery, final IndexClient client);
 
 	/**
 	 * Gets the index query.
-	 *
-	 * @param lang  the lang
-	 * @param query the query
-	 * @param mdRef the md ref
+	 * 
+	 * @param lang
+	 *            the lang
+	 * @param query
+	 *            the query
+	 * @param mdRef
+	 *            the md ref
 	 * @return the index query
-	 * @throws IndexClientException the index service exception
+	 * @throws IndexServiceException
+	 *             the index service exception
 	 */
-	public IndexQuery getIndexQuery(final QueryLanguage lang, final String query, final AbstractIndexClient client, final MetadataReference mdRef)
+	public IndexQuery getIndexQuery(final QueryLanguage lang, final String query, final IndexClient client, final MetadataReference mdRef)
 			throws IndexClientException {
 
 		String myquery = query;
@@ -90,7 +93,7 @@
 			final Result cqlRes = getCqlPruner().prune(getCqlPruner().parse(myquery));
 			final Result res = getPruner().prune(cqlRes.getNode());
 
-			final TranslatedQuery tQuery = cqlTranslator.getTranslatedQuery(res.getNode(), client.getCqlValueTransformerMap(mdRef),
+			final TranslatedQuery tQuery = translator.getTranslatedQuery(res.getNode(), client.getCqlValueTransformerMap(mdRef),
 					overrideCqlParams(cqlRes.getOptionMap()), browseAliases.get(mdRef), weights.get(mdRef));
 
 			return setQueryOptions(newInstance(tQuery, res, lang), client);
@@ -101,9 +104,11 @@
 
 	/**
 	 * Method overrides the default values in the defaultQueryParams with the given override map.
-	 *
-	 * @param override the map containing the override values.
+	 * 
+	 * @param override
+	 *            the map containing the override values.
 	 * @return the overridden parameter map
+	 * 
 	 */
 	private Map<String, List<String>> overrideCqlParams(final Map<String, List<String>> override) {
 		Map<String, List<String>> cqlParams = Maps.newHashMap();
@@ -118,9 +123,11 @@
 
 	/**
 	 * Gets the list of aliases available for browse
-	 *
-	 * @param fields  list of input fields
-	 * @param aliases key= non-browasbale-field-name, value=browsable-field-name
+	 * 
+	 * @param fields
+	 *            list of input fields
+	 * @param aliases
+	 *            key= non-browasbale-field-name, value=browsable-field-name
 	 * @return the list of browasable field names
 	 */
 	public List<String> getBrowsableFields(final List<String> fields, final BiMap<String, String> aliases) {
@@ -137,7 +144,7 @@
 
 	/**
 	 * Gets the pruner.
-	 *
+	 * 
 	 * @return the pruner
 	 */
 	public Pruner getPruner() {
@@ -146,8 +153,9 @@
 
 	/**
 	 * Sets the pruner.
-	 *
-	 * @param pruner the new pruner
+	 * 
+	 * @param pruner
+	 *            the new pruner
 	 */
 	public void setPruner(final Pruner pruner) {
 		this.pruner = pruner;
@@ -155,7 +163,7 @@
 
 	/**
 	 * Gets the cql pruner.
-	 *
+	 * 
 	 * @return the cql pruner
 	 */
 	public Pruner getCqlPruner() {
@@ -164,8 +172,9 @@
 
 	/**
 	 * Sets the cql pruner.
-	 *
-	 * @param cqlPruner the new cql pruner
+	 * 
+	 * @param cqlPruner
+	 *            the new cql pruner
 	 */
 	public void setCqlPruner(final Pruner cqlPruner) {
 		this.cqlPruner = cqlPruner;
@@ -173,7 +182,7 @@
 
 	/**
 	 * Gets the default query params.
-	 *
+	 * 
 	 * @return the default query params
 	 */
 	public Map<String, List<String>> getDefaultQueryParams() {
@@ -182,19 +191,12 @@
 
 	/**
 	 * Sets the default query params.
-	 *
-	 * @param defaultQueryParams the default query params
+	 * 
+	 * @param defaultQueryParams
+	 *            the default query params
 	 */
 	public void setDefaultQueryParams(final Map<String, List<String>> defaultQueryParams) {
 		this.defaultQueryParams = defaultQueryParams;
 	}
 
-	public CqlTranslator getCqlTranslator() {
-		return cqlTranslator;
-	}
-
-	public void setCqlTranslator(final CqlTranslator cqlTranslator) {
-		this.cqlTranslator = cqlTranslator;
-	}
-
 }
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/client/response/BrowseEntry.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/client/response/BrowseEntry.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/client/response/BrowseEntry.java	(revision 57158)
@@ -3,15 +3,13 @@
 import java.util.List;
 
 public class BrowseEntry {
-
 	private String field;
 	private String label;
 	private List<BrowseValueEntry> values;
-
-	public BrowseEntry() {
-	}
-
-	public BrowseEntry(final String field, final String label, final List<BrowseValueEntry> values) {
+	
+	public BrowseEntry() {}
+	
+	public BrowseEntry(final String field, final String label,final  List<BrowseValueEntry> values) {
 		this.field = field;
 		this.label = label;
 		this.values = values;
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/AnySeq.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/AnySeq.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/AnySeq.java	(revision 57158)
@@ -5,15 +5,17 @@
 
 /**
  * Interface for a sequence of Any objects.
+ * 
  * <p>
- * <p>
  * AnySeq does <b>not</b> allow <code>null</code> values!
  * </p>
+ * 
  */
 public interface AnySeq extends List<Any>, Any {
 
 	/**
-	 * @param element The string object to add
+	 * @param element
+	 *            The string object to add
 	 * @return true if successfully added, false else
 	 */
 	boolean add(String element);
@@ -21,91 +23,105 @@
 	/**
 	 * Long, Integer, Short and Byte values will be converted to Value object of type LONG, all others to Value object
 	 * of type DOUBLE.
-	 *
-	 * @param number The number object to add
+	 * 
+	 * @param number
+	 *            The number object to add
 	 * @return true if successfully added, false else
 	 */
 	boolean add(Number number);
 
 	/**
-	 * @param index   The index where to add the any object
-	 * @param element The any object to add
+	 * @param index
+	 *            The index where to add the any object
+	 * @param element
+	 *            The any object to add
 	 */
 	@Override
 	void add(int index, Any element);
 
 	/**
-	 * @param index The index of the object to return
+	 * @param index
+	 *            The index of the object to return
 	 * @return The AnyMap matching to the index, an InvalidValueTypeException is thrown if the value is not of type
-	 * AnyMap
+	 *         AnyMap
 	 */
 	AnyMap getMap(int index);
 
 	/**
-	 * @param index The index of the object to return
+	 * @param index
+	 *            The index of the object to return
 	 * @return The AnySeq matching to this index, an InvalidValueTypeException is thrown if the value is not of type
 	 */
 	AnySeq getSeq(int index);
 
 	/**
-	 * @param index The index of the object to return
+	 * @param index
+	 *            The index of the object to return
 	 * @return The value matching to this index, an InvalidValueTypeException is thrown if the value is no value type.
 	 */
 	Value getValue(int index);
 
 	/**
-	 * @param index The index of the object to return
+	 * @param index
+	 *            The index of the object to return
 	 * @return The string value matching to this index, an InvalidValueTypeException is thrown if the value is not of
-	 * type string
+	 *         type string
 	 */
 	String getStringValue(int index);
 
 	/**
-	 * @param index The index of the object to return
+	 * @param index
+	 *            The index of the object to return
 	 * @return The double value matching to this index, an InvalidValueTypeException is thrown if the value is not of
-	 * type double
+	 *         type double
 	 */
 	Double getDoubleValue(int index);
 
 	/**
-	 * @param index The index of the object to return
+	 * @param index
+	 *            The index of the object to return
 	 * @return The long value matching to this index, an InvalidValueTypeException is thrown if the value is not of type
-	 * long
+	 *         long
 	 */
 	Long getLongValue(int index);
 
 	/**
-	 * @param index The index of the object to return
+	 * @param index
+	 *            The index of the object to return
 	 * @return The boolean value matching to this index, an InvalidValueTypeException is thrown if the value is not of
-	 * type boolean
+	 *         type boolean
 	 */
 	Boolean getBooleanValue(int index);
 
 	/**
-	 * @param index The index of the object to return
+	 * @param index
+	 *            The index of the object to return
 	 * @return The date value matching to this index, an InvalidValueTypeException is thrown if the value is not of type
-	 * date
+	 *         date
 	 */
 	Date getDateValue(int index);
 
 	/**
-	 * @param index The index of the object to return
+	 * @param index
+	 *            The index of the object to return
 	 * @return The date time value matching to this index, an InvalidValueTypeException is thrown if the value is not of
-	 * type date time
+	 *         type date time
 	 */
 	Date getDateTimeValue(int index);
 
 	/**
 	 * returns all values as a List of Strings.
-	 *
-	 * @throws InvalidValueTypeException if not all contained values are strings.
+	 * 
+	 * @throws InvalidValueTypeException
+	 *             if not all contained values are strings.
 	 */
 	List<String> asStrings();
 
 	/**
 	 * returns all values as a List of Long.
-	 *
-	 * @throws InvalidValueTypeException if not all contained values are Longs.
+	 * 
+	 * @throws InvalidValueTypeException
+	 *             if not all contained values are Longs.
 	 */
 	List<Long> asLongs();
 
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/Pruner.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/Pruner.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/Pruner.java	(revision 57158)
@@ -1,11 +1,9 @@
 package eu.dnetlib.clients.index.query;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
@@ -16,23 +14,25 @@
 
 /**
  * Use this class to cleanup a CQL tree and obtain all the options
- *
+ * 
  * @author marko & claudio
+ * 
  */
 public class Pruner {
+	private static final Log log = LogFactory.getLog(Pruner.class); // NOPMD by marko on 11/24/08 5:02 PM
 
 	/**
 	 * All options have to be in this namespace.
 	 */
 	public static final String DNET_URI = "NAMESPACE";
-	private static final Log log = LogFactory.getLog(Pruner.class); // NOPMD by marko on 11/24/08 5:02 PM
+
 	private String optionUri = DNET_URI;
 
 	/**
 	 * Helper method, parse a given CQL string.
-	 *
+	 * 
 	 * @param cqlQuery
-	 * @return
+	 * @return the parsed CQLNode
 	 * @throws CQLParseException
 	 * @throws IOException
 	 */
@@ -40,12 +40,58 @@
 		return new CQLParser().parse(cqlQuery);
 	}
 
+	public class Result {
+		private CQLNode node;
+		private List<String> options;
+
+		public Result(final CQLNode node, final List<String> options) {
+			super();
+			this.node = node;
+			this.options = options;
+		}
+
+		public Result(final CQLNode node, final Iterable<String> concat) {
+			this.node = node;
+			this.options = Lists.newArrayList(concat);
+		}
+
+		public CQLNode getNode() {
+			return node;
+		}
+
+		public void setNode(final CQLNode node) {
+			this.node = node;
+		}
+
+		public List<String> getOptions() {
+			return options;
+		}
+
+		public void setOptions(final List<String> options) {
+			this.options = options;
+		}
+
+		public Map<String, List<String>> getOptionMap() {
+			Map<String, List<String>> res = new HashMap<String, List<String>>();
+			for (String opt : options) {
+				String[] k = opt.split("=");
+				List<String> l = res.get(k[0]);
+				if(l == null)
+					l = new ArrayList<String>();
+				l.add(k[1]);
+				res.put(k[0], l);
+			}
+			return res;
+		}
+	}
+
 	/**
 	 * Remove all options from a given CQL AST and return all the options.
-	 * <p>
+	 * 
 	 * The CQL tree is modified.
-	 *
-	 * @param root cql tree
+	 * 
+	 * @param root
+	 *            cql tree
 	 * @return pair containing a new root node and a list of options
 	 */
 	public Result prune(final CQLNode root) {
@@ -54,10 +100,10 @@
 
 	/**
 	 * Actual recursive implementation, dispatches the implementation to the appropriate overloaded method.
-	 *
+	 * 
 	 * @param prefixes
 	 * @param root
-	 * @return
+	 * @return the pruned result
 	 */
 	public Result prune(final Map<String, String> prefixes, final CQLNode root) {
 
@@ -68,19 +114,19 @@
 			return prune(prefixes, (CQLPrefixNode) root);
 
 		if (root instanceof CQLSortNode)
-			return prune(prefixes, (CQLSortNode) root);
-
+			return prune(prefixes, (CQLSortNode) root);		
+		
 		return new Result(root, new ArrayList<String>());
 	}
-
+	
 	/**
 	 * If the current node is a cql "sort" node, just return the inner subtree.
-	 *
+	 * 
 	 * @param prefixes
 	 * @param node
-	 * @return
+	 * @return the pruned result
 	 */
-	public Result prune(final Map<String, String> prefixes, final CQLSortNode node) {
+	public Result prune(final Map<String, String> prefixes, final CQLSortNode node) {	
 		Result res = prune(prefixes, node.subtree);
 		node.subtree = res.getNode();
 		res.setNode(node);
@@ -90,38 +136,38 @@
 	/**
 	 * If the current node is a cql "prefix" node, add his namespace declaration to the current list of namespaces and
 	 * return the pruned inner subtree.
-	 * <p>
+	 * 
 	 * If the prefix node contains only one single option element, we have to return null. (TODO: perhaps there is a
 	 * better solution).
-	 *
+	 * 
 	 * @param prefixes
 	 * @param node
-	 * @return
+	 * @return the pruned result
 	 */
 	public Result prune(final Map<String, String> prefixes, final CQLPrefixNode node) {
 		final HashMap<String, String> subPrefixes = Maps.newHashMap(prefixes);
 		subPrefixes.put(node.prefix.name, node.prefix.identifier);
-
+		
 		if (isOption(subPrefixes, node.subtree))
 			return new Result(null, Lists.newArrayList(getOption(node.subtree)));
 
 		boolean pruneThisPrefix = node.prefix.identifier.equals(optionUri);
-		if (pruneThisPrefix)
-			return prune(subPrefixes, node.subtree);
-
+		if(pruneThisPrefix)
+			return prune(subPrefixes, node.subtree);	
+		
 		Result res = prune(subPrefixes, node.subtree);
 		node.subtree = res.getNode();
 		res.setNode(node);
 		return res;
-
+		
 	}
 
 	/**
 	 * boolean prunes are handled in the prune(prefix, node, left, right).
-	 *
+	 * 
 	 * @param prefixes
 	 * @param node
-	 * @return
+	 * @return the pruned result
 	 */
 	public Result prune(final Map<String, String> prefixes, final CQLBooleanNode node) {
 		return prune(prefixes, node, node.left, node.right);
@@ -130,23 +176,21 @@
 	/**
 	 * Detects if a left or right side of a boolean node is a option term, and returns the other side (recursively
 	 * pruned). It also returns the accumulated options along the way.
-	 *
+	 * 
 	 * @param prefixes
 	 * @param bool
 	 * @param left
 	 * @param right
-	 * @return
+	 * @return the pruned result
 	 */
 	public Result prune(final Map<String, String> prefixes, final CQLBooleanNode bool, final CQLNode left, final CQLNode right) {
 
 		if (isOption(prefixes, left) && isOption(prefixes, right)) {
-			List<Result> r = Lists.newArrayList(trimOption(prefixes, left, right), trimOption(prefixes, right, left));
-
-			return new Result(null, r
-					.stream()
-					.filter(it -> it != null)
-					.map(res -> res.getOptions())
-					.flatMap(strings -> strings.stream())
+			return new Result(null, Stream.of(trimOption(prefixes, left, right), trimOption(prefixes, right, left))
+					.filter(Objects::nonNull)
+					.map(i -> i.getOptions())
+					.map(i -> i.stream())
+					.flatMap(i -> i)
 					.collect(Collectors.toList()));
 		}
 
@@ -171,13 +215,13 @@
 
 	/**
 	 * Trims an option from a boolean node if one if it's sides is an option term.
-	 * <p>
+	 * 
 	 * Intended to be used once for each sides and then swap.
-	 *
+	 * 
 	 * @param prefixes
 	 * @param a
 	 * @param b
-	 * @return
+	 * @return the pruned result
 	 */
 	public Result trimOption(final Map<String, String> prefixes, final CQLNode a, final CQLNode b) {
 		log.debug("trim option?" + prefixes + " a " + a.toCQL());
@@ -191,20 +235,20 @@
 
 	/**
 	 * prune(prefixes, bool, left, right) uses this helper method to do the dirty job:
-	 * <p>
+	 * 
 	 * we have to detect if a term node is a term option node. by checking the namespace uri associated with the term
 	 * prefix according the the current namespace prefix scope (held in prefixes, which is passed down recursively by
 	 * copy).
-	 *
+	 * 
 	 * @param prefixes
 	 * @param ns
 	 * @param o
 	 * @param subtree
-	 * @return
+	 * @return the pruned result
 	 */
 	public Result trimOption(final Map<String, String> prefixes, final String ns, final String o, final CQLNode subtree) {
 		log.debug("trimming " + prefixes + " ns " + ns + " o " + o);
-
+		
 		final String namespaceUri = prefixes.get(ns);
 
 		if (!optionUri.equals(namespaceUri)) {
@@ -217,9 +261,9 @@
 
 	/**
 	 * Drop a boolean node (and, or etc) if one of the sides has been dropped.
-	 *
+	 * 
 	 * @param bool
-	 * @return
+	 * @return the pruned result
 	 */
 	private CQLNode clean(final CQLBooleanNode bool) {
 		if (bool.left == null)
@@ -229,12 +273,12 @@
 		return bool;
 	}
 
+	////////////////// helpers
+
 	public String getOption(final CQLNode node) {
 		return indexFromOption(node) + "=" + termFromOption(node);
 	}
 
-	////////////////// helpers
-
 	private String indexFromOption(final CQLNode node) {
 		return ((CQLTermNode) node).getIndex().replaceAll("[a-z]*\\.(.+)", "$1");
 	}
@@ -272,50 +316,4 @@
 	public void setOptionUri(String optionUri) {
 		this.optionUri = optionUri;
 	}
-
-	public class Result {
-
-		private CQLNode node;
-		private List<String> options;
-
-		public Result(final CQLNode node, final List<String> options) {
-			super();
-			this.node = node;
-			this.options = options;
-		}
-
-		public Result(final CQLNode node, final Iterable<String> concat) {
-			this.node = node;
-			this.options = Lists.newArrayList(concat);
-		}
-
-		public CQLNode getNode() {
-			return node;
-		}
-
-		public void setNode(final CQLNode node) {
-			this.node = node;
-		}
-
-		public List<String> getOptions() {
-			return options;
-		}
-
-		public void setOptions(final List<String> options) {
-			this.options = options;
-		}
-
-		public Map<String, List<String>> getOptionMap() {
-			Map<String, List<String>> res = new HashMap<String, List<String>>();
-			for (String opt : options) {
-				String[] k = opt.split("=");
-				List<String> l = res.get(k[0]);
-				if (l == null)
-					l = new ArrayList<String>();
-				l.add(k[1]);
-				res.put(k[0], l);
-			}
-			return res;
-		}
-	}
-}
\ No newline at end of file
+}
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/IndexQuery.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/IndexQuery.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/IndexQuery.java	(revision 57158)
@@ -1,52 +1,12 @@
 package eu.dnetlib.clients.index.query;
 
-import java.util.List;
-
-// TODO: Auto-generated Javadoc
-
 /**
  * The Class IndexQuery.
  */
 public interface IndexQuery {
 
-	/**
-	 * Sets the ds id filters.
-	 *
-	 * @param dsIds the ds ids
-	 * @return the index query
-	 */
-	public IndexQuery setDSIdFilters(final List<String> dsIds);
+	IndexQuery setQueryOffset(int offset);
 
-	/**
-	 * Sets the start.
-	 *
-	 * @param start the start
-	 * @return the index query
-	 */
-	public IndexQuery setQueryOffset(int offset);
+	IndexQuery setQueryLimit(int limit);
 
-	/**
-	 * Sets the rows.
-	 *
-	 * @param rows the rows
-	 * @return the index query
-	 */
-	public IndexQuery setQueryLimit(int limit);
-
-	/**
-	 * Sets the facet limit.
-	 *
-	 * @param limit the limit
-	 * @return the index query
-	 */
-	public IndexQuery setQueryFacetLimit(int limit);
-
-	/**
-	 * Sets the facet offset.
-	 *
-	 * @param offset the offset
-	 * @return the index query
-	 */
-	public IndexQuery setQueryFacetOffset(int offset);
-
 }
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/DataFactory.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/DataFactory.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/DataFactory.java	(revision 57158)
@@ -4,14 +4,13 @@
 
 import eu.dnetlib.clients.index.model.Any.ValueType;
 
+
 /**
  * Interface for creation of data objects.
  */
 public interface DataFactory {
 
-	/**
-	 * default instance.
-	 */
+	/** default instance. */
 	DataFactory DEFAULT = DataFactoryCreator.newInstance();
 
 	/**
@@ -25,63 +24,75 @@
 	AnySeq createAnySeq();
 
 	/**
-	 * @param value the String to create the Value from.
+	 * @param value
+	 *            the String to create the Value from.
 	 * @return The created Value object.
 	 */
 	Value createStringValue(String value);
 
 	/**
-	 * @param value the Boolean to create the Value from.
+	 * @param value
+	 *            the Boolean to create the Value from.
 	 * @return The created Value object.
 	 */
 	Value createBooleanValue(Boolean value);
 
 	/**
-	 * @param value the Long to create the Value from.
+	 * @param value
+	 *            the Long to create the Value from.
 	 * @return The created Value object.
 	 */
 	Value createLongValue(Long value);
 
 	/**
-	 * @param value the int to create the Value from.
+	 * @param value
+	 *            the int to create the Value from.
 	 * @return The created Value object.
 	 */
 	Value createLongValue(int value);
 
 	/**
-	 * @param value the Double to create the Value from.
+	 * @param value
+	 *            the Double to create the Value from.
 	 * @return The created Value object.
 	 */
 	Value createDoubleValue(Double value);
 
 	/**
-	 * @param value the float to create the Value from.
+	 * @param value
+	 *            the float to create the Value from.
 	 * @return The created Value object.
 	 */
 	Value createDoubleValue(float value);
 
 	/**
-	 * @param value the Date to create the Value from.
+	 * @param value
+	 *            the Date to create the Value from.
 	 * @return The created Value object.
 	 */
 	Value createDateValue(Date value);
 
 	/**
-	 * @param value the DateTime to create the Value from.
+	 * @param value
+	 *            the DateTime to create the Value from.
 	 * @return The created Value object.
 	 */
 	Value createDateTimeValue(Date value);
 
 	/**
-	 * @param value The value
-	 * @param type  The type
+	 * @param value
+	 *            The value
+	 * @param type
+	 *            The type
 	 * @return The Value object with correct type, InvalidvalueTypeException else.
 	 */
 	Value parseFromString(String value, String type);
 
 	/**
-	 * @param value     The value
-	 * @param valueType The value's type
+	 * @param value
+	 *            The value
+	 * @param valueType
+	 *            The value's type
 	 * @return The Value object with correct type, InvalidvalueTypeException else.
 	 */
 	Value parseFromString(final String value, final ValueType valueType);
@@ -88,14 +99,16 @@
 
 	/**
 	 * Tries to convert the String to a Date or Timestamp Value, if not possible return a String Value.
-	 *
-	 * @param value The value to check for Date/Timestamp
+	 * 
+	 * @param value
+	 *            The value to check for Date/Timestamp
 	 * @return The Value object with guessed type, InvalidvalueTypeException if value is null.
 	 */
 	Value tryDateTimestampParsingFromString(String value);
 
 	/**
-	 * @param object The object
+	 * @param object
+	 *            The object
 	 * @return The value matching the class of given object, InvalidValueTypeException otherwise.
 	 * @deprecated Use {@link #autoConvertValue(Object)} instead
 	 */
@@ -104,16 +117,20 @@
 
 	/**
 	 * auto converts the given object into the object's corresponding Value.
-	 *
-	 * @param object The object, must be one of the simple types
+	 * 
+	 * @param object
+	 *            The object, must be one of the simple types
 	 * @return The value matching the class of given object, InvalidValueTypeException otherwise.
+	 * 
 	 */
 	Value autoConvertValue(final Object object);
 
 	/**
 	 * Clone Any object.
-	 *
-	 * @param source the source
+	 * 
+	 * @param source
+	 *            the source
+	 * 
 	 * @return the attribute
 	 */
 	Any cloneAny(final Any source);
@@ -120,8 +137,10 @@
 
 	/**
 	 * Clone AnyMap object.
-	 *
-	 * @param source the source
+	 * 
+	 * @param source
+	 *            the source
+	 * 
 	 * @return the attribute
 	 */
 	AnyMap cloneAnyMap(final AnyMap source);
@@ -128,8 +147,10 @@
 
 	/**
 	 * Clone AnySeq object.
-	 *
-	 * @param source the source
+	 * 
+	 * @param source
+	 *            the source
+	 * 
 	 * @return the attribute
 	 */
 	AnySeq cloneAnySeq(final AnySeq source);
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/AnySeqImpl.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/AnySeqImpl.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/AnySeqImpl.java	(revision 57158)
@@ -1,23 +1,28 @@
 package eu.dnetlib.clients.index.model.impl;
 
-import java.util.*;
-import java.util.stream.Collectors;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
 
-import eu.dnetlib.clients.index.model.*;
+import eu.dnetlib.clients.index.model.Any;
+import eu.dnetlib.clients.index.model.AnyMap;
+import eu.dnetlib.clients.index.model.AnySeq;
+import eu.dnetlib.clients.index.model.InvalidValueTypeException;
+import eu.dnetlib.clients.index.model.Value;
 
+
 /**
  * Sequence of Any objects.
  */
 public final class AnySeqImpl extends AbstractAny implements AnySeq {
 
-	/**
-	 * version.
-	 */
+	/** version. */
 	private static final long serialVersionUID = 1L;
 
-	/**
-	 * holds the Any objects of this AnySeq.
-	 */
+	/** holds the Any objects of this AnySeq. */
 	private final List<Any> _anyList;
 
 	/**
@@ -28,9 +33,7 @@
 		_anyList = new ArrayList<Any>();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean add(final Any value) {
 		if (value == null) {
@@ -39,17 +42,13 @@
 		return _anyList.add(value);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean add(final String e) {
 		return add(new ValueImpl(ValueType.STRING, e));
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean add(final Number n) {
 		if (n instanceof Double) {
@@ -63,9 +62,7 @@
 		}
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public void add(final int index, final Any element) {
 		if (element == null) {
@@ -74,57 +71,43 @@
 		_anyList.add(index, element);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean addAll(final Collection<? extends Any> c) {
 		return _anyList.addAll(c);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean addAll(final int index, final Collection<? extends Any> c) {
 		return _anyList.addAll(index, c);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public void clear() {
 		_anyList.clear();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean contains(final Object o) {
 		return _anyList.contains(o);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean containsAll(final Collection<?> c) {
 		return _anyList.containsAll(c);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Any get(final int index) {
 		return _anyList.get(index);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Any set(final int index, final Any element) {
 		if (element == null) {
@@ -133,121 +116,91 @@
 		return _anyList.set(index, element);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public int indexOf(final Object o) {
 		return _anyList.indexOf(o);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean isEmpty() {
 		return _anyList.isEmpty();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Iterator<Any> iterator() {
 		return _anyList.iterator();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public int lastIndexOf(final Object o) {
 		return _anyList.lastIndexOf(o);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public ListIterator<Any> listIterator() {
 		return _anyList.listIterator();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public ListIterator<Any> listIterator(final int index) {
 		return _anyList.listIterator(index);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Any remove(final int index) {
 		return _anyList.remove(index);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean remove(final Object o) {
 		return _anyList.remove(o);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean removeAll(final Collection<?> c) {
 		return _anyList.removeAll(c);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean retainAll(final Collection<?> c) {
 		return _anyList.retainAll(c);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public int size() {
 		return _anyList.size();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public List<Any> subList(final int fromIndex, final int toIndex) {
 		return _anyList.subList(fromIndex, toIndex);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Object[] toArray() {
 		return _anyList.toArray();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public <T> T[] toArray(final T[] a) {
 		return _anyList.toArray(a);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public AnyMap getMap(final int index) {
 		final Any anyValue = get(index);
@@ -261,9 +214,7 @@
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public AnySeq getSeq(final int index) {
 		final Any anyValue = get(index);
@@ -277,9 +228,7 @@
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Value getValue(final int index) {
 		final Any anyValue = get(index);
@@ -293,9 +242,7 @@
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public String getStringValue(final int index) {
 		final Any anyValue = get(index);
@@ -309,9 +256,7 @@
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Double getDoubleValue(final int index) {
 		final Any anyValue = get(index);
@@ -325,9 +270,7 @@
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Long getLongValue(final int index) {
 		final Any anyValue = get(index);
@@ -341,9 +284,7 @@
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Boolean getBooleanValue(final int index) {
 		final Any anyValue = get(index);
@@ -357,9 +298,7 @@
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Date getDateValue(final int index) {
 		final Any anyValue = get(index);
@@ -373,9 +312,7 @@
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Date getDateTimeValue(final int index) {
 		final Any anyValue = get(index);
@@ -389,9 +326,7 @@
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public int hashCode() {
 		final int prime = 31;
@@ -400,9 +335,7 @@
 		return result;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean equals(final Object obj) {
 		if (this == obj) {
@@ -433,30 +366,27 @@
 		return _anyList.toString();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
 	@Override
 	public AnySeq asSeq() {
 		return this;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
 	@Override
 	public List<String> asStrings() {
-		final List<String> values = new ArrayList<>(_anyList.size());
-		values.addAll(_anyList.stream().map(any -> any.asValue().asString()).collect(Collectors.toList()));
+		final List<String> values = new ArrayList<String>(_anyList.size());
+		for (final Any any : _anyList) {
+			values.add(any.asValue().asString());
+		}
 		return values;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
 	@Override
 	public List<Long> asLongs() {
-		return _anyList.stream().map(any -> any.asValue().asLong()).collect(Collectors.toList());
+		final List<Long> values = new ArrayList<Long>(_anyList.size());
+		for (final Any any : _anyList) {
+			values.add(any.asValue().asLong());
+		}
+		return values;
 	}
 
 }
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/AnyMapImpl.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/AnyMapImpl.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/AnyMapImpl.java	(revision 57158)
@@ -1,35 +1,37 @@
 package eu.dnetlib.clients.index.model.impl;
 
-import java.util.*;
+import java.util.Collection;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
 
-import eu.dnetlib.clients.index.model.*;
+import eu.dnetlib.clients.index.model.Any;
+import eu.dnetlib.clients.index.model.AnyMap;
+import eu.dnetlib.clients.index.model.AnySeq;
+import eu.dnetlib.clients.index.model.InvalidValueTypeException;
+import eu.dnetlib.clients.index.model.Value;
 
+
 /**
  * Class implementing AnyMap.
  */
 public final class AnyMapImpl extends AbstractAny implements AnyMap {
 
-	/**
-	 * version.
-	 */
+	/** version. */
 	private static final long serialVersionUID = 1L;
 
-	/**
-	 * internal representation of the AnyMap.
-	 */
+	/** internal representation of the AnyMap. */
 	private final Map<String, Any> _anyMap;
 
-	/**
-	 * Constructs a new AnyMapImpl.
-	 */
+	/** Constructs a new AnyMapImpl. */
 	AnyMapImpl() {
 		super(ValueType.MAP);
 		_anyMap = new LinkedHashMap<String, Any>();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public void add(final String key, final Any value) {
 		final Any any = _anyMap.get(key);
@@ -47,33 +49,25 @@
 		anySeq.add(value);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public void clear() {
 		_anyMap.clear();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean isEmpty() {
 		return _anyMap.isEmpty();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Set<String> keySet() {
 		return _anyMap.keySet();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Any put(final String key, final String value) {
 		try {
@@ -83,9 +77,7 @@
 		}
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Any put(final String key, final Number value) {
 		if (value == null) {
@@ -106,17 +98,13 @@
 		}
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Any put(final String key, final Boolean value) {
 		return put(key, new ValueImpl(ValueType.BOOLEAN, value));
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Any put(final String key, final Any value) {
 		if (value == null) {
@@ -125,33 +113,25 @@
 		return _anyMap.put(key, value);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public int size() {
 		return _anyMap.size();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Collection<Any> values() {
 		return _anyMap.values();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Iterator<Any> iterator() {
 		return _anyMap.values().iterator();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public AnyMap getMap(final String key) {
 		final Any anyValue = get(key);
@@ -165,9 +145,7 @@
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public AnySeq getSeq(final String key) {
 		final Any anyValue = get(key);
@@ -181,9 +159,7 @@
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Value getValue(final String key) {
 		final Any anyValue = get(key);
@@ -197,9 +173,7 @@
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public String getStringValue(final String key) {
 		final Any anyValue = get(key);
@@ -213,9 +187,7 @@
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Double getDoubleValue(final String key) {
 		final Any anyValue = get(key);
@@ -229,9 +201,7 @@
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Long getLongValue(final String key) {
 		final Any anyValue = get(key);
@@ -245,9 +215,7 @@
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Boolean getBooleanValue(final String key) {
 		final Any anyValue = get(key);
@@ -261,9 +229,7 @@
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Date getDateValue(final String key) {
 		final Any anyValue = get(key);
@@ -277,9 +243,7 @@
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Date getDateTimeValue(final String key) {
 		final Any anyValue = get(key);
@@ -293,9 +257,7 @@
 		return null;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public int hashCode() {
 		final int prime = 31;
@@ -304,9 +266,7 @@
 		return result;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean equals(final Object obj) {
 		if (this == obj) {
@@ -337,65 +297,47 @@
 		return _anyMap.toString();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean containsKey(final Object key) {
 		return _anyMap.containsKey(key);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean containsValue(final Object value) {
 		return _anyMap.containsValue(value);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Any get(final Object key) {
 		return _anyMap.get(key);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public void putAll(final Map<? extends String, ? extends Any> map) {
 		_anyMap.putAll(map);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Any remove(final Object key) {
 		return _anyMap.remove(key);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
-	public Set<Map.Entry<String, Any>> entrySet() {
+	public Set<java.util.Map.Entry<String, Any>> entrySet() {
 		return _anyMap.entrySet();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
 	@Override
 	public AnyMap asMap() {
 		return this;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
 	@Override
 	public AnyMap getMap(final String key, final boolean create) {
 		AnyMap val = getMap(key);
@@ -407,9 +349,6 @@
 
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
 	@Override
 	public AnySeq getSeq(final String key, final boolean create) {
 		AnySeq val = getSeq(key);
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/ImmutableAnyMapImpl.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/ImmutableAnyMapImpl.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/ImmutableAnyMapImpl.java	(revision 57158)
@@ -1,26 +1,31 @@
 package eu.dnetlib.clients.index.model.impl;
 
-import java.util.*;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
 
-import eu.dnetlib.clients.index.model.*;
+import eu.dnetlib.clients.index.model.Any;
+import eu.dnetlib.clients.index.model.Any.ValueType;
+import eu.dnetlib.clients.index.model.AnyMap;
+import eu.dnetlib.clients.index.model.AnySeq;
+import eu.dnetlib.clients.index.model.DataFactory;
+import eu.dnetlib.clients.index.model.Value;
 
+
 /**
  * immutable decorator for an AnyMap.
  */
 public class ImmutableAnyMapImpl implements AnyMap {
 
-	/**
-	 * The underlying anymap.
-	 */
+	/** The underlying anymap. */
 	private final AnyMap _anyMap;
 
-	/**
-	 * The underlying map, as immutable.
-	 */
+	/** The underlying map, as immutable. */
 	private final Map<String, Any> _immutable;
 
-	/**
-	 */
 	public ImmutableAnyMapImpl(AnyMap map) {
 		_anyMap = map;
 		_immutable = Collections.unmodifiableMap(map);
@@ -46,58 +51,31 @@
 		return _anyMap.asValue();
 	}
 
-	/**
-	 * @see Map#clear()
-	 */
 	@Override
 	public void clear() {
 		_immutable.clear();
 	}
 
-	/**
-	 * @param key
-	 * @return
-	 * @see Map#containsKey(Object)
-	 */
 	@Override
 	public boolean containsKey(Object key) {
 		return _immutable.containsKey(key);
 	}
 
-	/**
-	 * @param value
-	 * @return
-	 * @see Map#containsValue(Object)
-	 */
 	@Override
 	public boolean containsValue(Object value) {
 		return _immutable.containsValue(value);
 	}
 
-	/**
-	 * @return
-	 * @see Map#entrySet()
-	 */
 	@Override
-	public Set<Map.Entry<String, Any>> entrySet() {
+	public Set<java.util.Map.Entry<String, Any>> entrySet() {
 		return _immutable.entrySet();
 	}
 
-	/**
-	 * @param o
-	 * @return
-	 * @see Map#equals(Object)
-	 */
 	@Override
 	public boolean equals(Object o) {
 		return _immutable.equals(o);
 	}
 
-	/**
-	 * @param key
-	 * @return
-	 * @see Map#get(Object)
-	 */
 	@Override
 	public Any get(Object key) {
 		return _immutable.get(key);
@@ -168,10 +146,6 @@
 		return _anyMap.getValueType();
 	}
 
-	/**
-	 * @return
-	 * @see Map#hashCode()
-	 */
 	@Override
 	public int hashCode() {
 		return _immutable.hashCode();
@@ -242,12 +216,6 @@
 		return _immutable.keySet();
 	}
 
-	/**
-	 * @param key
-	 * @param value
-	 * @return
-	 * @see Map#put(Object, Object)
-	 */
 	@Override
 	public Any put(String key, Any value) {
 		throw new UnsupportedOperationException();
@@ -273,11 +241,6 @@
 		throw new UnsupportedOperationException();
 	}
 
-	/**
-	 * @param key
-	 * @return
-	 * @see Map#remove(Object)
-	 */
 	@Override
 	public Any remove(Object key) {
 		throw new UnsupportedOperationException();
@@ -288,10 +251,6 @@
 		return _immutable.size();
 	}
 
-	/**
-	 * @return
-	 * @see Map#values()
-	 */
 	@Override
 	public Collection<Any> values() {
 		return _immutable.values();
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/DefaultDataFactoryImpl.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/DefaultDataFactoryImpl.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/DefaultDataFactoryImpl.java	(revision 57158)
@@ -1,27 +1,33 @@
 package eu.dnetlib.clients.index.model.impl;
 
+import static java.lang.String.format;
+
 import java.util.Date;
 import java.util.Iterator;
 import java.util.Map.Entry;
 
-import eu.dnetlib.clients.index.model.*;
+import org.apache.commons.lang3.NotImplementedException;
+
+import eu.dnetlib.clients.index.model.Any;
 import eu.dnetlib.clients.index.model.Any.ValueType;
+import eu.dnetlib.clients.index.model.AnyMap;
+import eu.dnetlib.clients.index.model.AnySeq;
+import eu.dnetlib.clients.index.model.DataFactory;
+import eu.dnetlib.clients.index.model.InvalidValueTypeException;
+import eu.dnetlib.clients.index.model.Value;
+import eu.dnetlib.clients.index.model.ValueFormatHelper;
 
-import static java.lang.String.format;
 
 /**
  * Implementation of DataFactory.
+ * 
  */
 public class DefaultDataFactoryImpl implements DataFactory {
 
-	/**
-	 * instance for sharing.
-	 */
+	/** instance for sharing. */
 	public static final DefaultDataFactoryImpl INSTANCE = new DefaultDataFactoryImpl();
 
-	/**
-	 * immutable empyty map.
-	 */
+	/** immutable empyty map. */
 	public static final AnyMap IMMUTABLE_EMPTY_MAP = new ImmutableAnyMapImpl(INSTANCE.createAnyMap());
 
 	/**
@@ -40,87 +46,65 @@
 		return new AnySeqImpl();
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Value createStringValue(final String value) {
 		return new ValueImpl(ValueType.STRING, value);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Value createBooleanValue(final Boolean value) {
 		return new ValueImpl(ValueType.BOOLEAN, value);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Value createLongValue(final Long value) {
 		return new ValueImpl(ValueType.LONG, value);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Value createLongValue(final int value) {
 		return new ValueImpl(ValueType.LONG, (long) value);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Value createDoubleValue(final Double value) {
 		return new ValueImpl(ValueType.DOUBLE, value);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Value createDoubleValue(final float value) {
 		return new ValueImpl(ValueType.DOUBLE, Double.valueOf(value));
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Value createDateValue(final Date value) {
 		return new ValueImpl(ValueType.DATE, new Date(value.getTime()));
 	}
 
-	/**
-	 * create DATE value with original string.
-	 */
+	/** create DATE value with original string. */
 	private Value createDateValue(final Date value, final String originalString) {
 		return new ValueImpl(ValueType.DATE, new DateValue(new Date(value.getTime()), originalString));
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Value createDateTimeValue(final Date value) {
 		return new ValueImpl(ValueType.DATETIME, new Date(value.getTime()));
 	}
 
-	/**
-	 * create DATETIME value with original string.
-	 */
+	/** create DATETIME value with original string. */
 	private Value createDateTimeValue(final Date value, final String originalString) {
 		return new ValueImpl(ValueType.DATETIME, new DateValue(new Date(value.getTime()), originalString));
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Value parseFromString(final String value, final String type) {
 		ValueType valueType = null;
@@ -136,9 +120,7 @@
 		return parseFromString(value, valueType);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Value parseFromString(final String value, final ValueType valueType) {
 		try {
@@ -156,7 +138,7 @@
 			case STRING:
 				return createStringValue(value);
 			default:
-				throw new InvalidValueTypeException(String.format("not implemented conversion for value %s into %s", value, valueType));
+				throw new NotImplementedException("conversion for type: " + valueType);
 			}
 		} catch (final Exception e) {
 			throw new InvalidValueTypeException(format("cannot convert value %s into %s", value, valueType), e);
@@ -163,9 +145,7 @@
 		}
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Value tryDateTimestampParsingFromString(final String value) {
 		final Date timestamp = ValueFormatHelper.INSTANCE.tryParseDateTime(value);
@@ -181,7 +161,7 @@
 
 	/**
 	 * {@inheritDoc}
-	 *
+	 * 
 	 * @deprecated Use {@link #autoConvertValue(Object)} instead
 	 */
 	@Deprecated
@@ -190,9 +170,7 @@
 		return autoConvertValue(object);
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Value autoConvertValue(final Object object) {
 		if (object instanceof Value) {
@@ -220,9 +198,7 @@
 		}
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Any cloneAny(final Any source) {
 		if (source == null) {
@@ -238,9 +214,7 @@
 		}
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public AnyMap cloneAnyMap(final AnyMap source) {
 		if (source == null) {
@@ -253,9 +227,7 @@
 		return destination;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public AnySeq cloneAnySeq(final AnySeq source) {
 		if (source == null) {
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/DateValue.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/DateValue.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/DateValue.java	(revision 57158)
@@ -10,31 +10,21 @@
  */
 public final class DateValue implements Serializable {
 
-	/**
-	 * serializable.
-	 */
+	/** serializable. */
 	private static final long serialVersionUID = 1L;
 
-	/**
-	 * the actual date or timestamp value.
-	 */
+	/** the actual date or timestamp value. */
 	private final Date _date;
 
-	/**
-	 * the original string, if the date/timestamp value is parsed from a string and not created immediately in Java.
-	 */
+	/** the original string, if the date/timestamp value is parsed from a string and not created immediately in Java. */
 	private final String _originalString;
 
-	/**
-	 * create immediately from a java date.
-	 */
+	/** create immediately from a java date. */
 	DateValue(final Date date) {
 		this(date, null);
 	}
 
-	/**
-	 * create a pair of a date and the string it was parsed from.
-	 */
+	/** create a pair of a date and the string it was parsed from. */
 	public DateValue(final Date date, final String originalString) {
 		super();
 		_date = date;
@@ -41,30 +31,22 @@
 		_originalString = originalString;
 	}
 
-	/**
-	 * @return the date.
-	 */
+	/** @return the date. */
 	public Date getDate() {
 		return _date;
 	}
 
-	/**
-	 * @return {@link Date#getTime()} of the contained date.
-	 */
+	/** @return {@link Date#getTime()} of the contained date. */
 	public long getTime() {
 		return _date.getTime();
 	}
 
-	/**
-	 * @return the original string, if the date was parsed.
-	 */
+	/** @return the original string, if the date was parsed. */
 	public String getOriginalString() {
 		return _originalString;
 	}
 
-	/**
-	 * @return true if an original string is stored.
-	 */
+	/** @return true if an original string is stored. */
 	public boolean hasOriginalString() {
 		return _originalString != null;
 	}
@@ -71,7 +53,7 @@
 
 	/**
 	 * @return true if the other object is a {@link DateValue}, too, and contains an equals date object. The original
-	 * string is not relevant for the comparison.
+	 *         string is not relevant for the comparison.
 	 */
 	@Override
 	public boolean equals(final Object obj) {
@@ -81,17 +63,13 @@
 		return false;
 	}
 
-	/**
-	 * @return hashCode of the contained date object.
-	 */
+	/** @return hashCode of the contained date object. */
 	@Override
 	public int hashCode() {
 		return _date.hashCode();
 	}
 
-	/**
-	 * @return toString of contained date object.
-	 */
+	/** @return toString of contained date object. */
 	@Override
 	public String toString() {
 		return _date.toString();
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/AbstractAny.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/AbstractAny.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/AbstractAny.java	(revision 57158)
@@ -1,19 +1,23 @@
 package eu.dnetlib.clients.index.model.impl;
 
+import static java.lang.String.format;
+
 import java.io.Serializable;
 
-import eu.dnetlib.clients.index.model.*;
+import eu.dnetlib.clients.index.model.Any;
+import eu.dnetlib.clients.index.model.Any.ValueType;
+import eu.dnetlib.clients.index.model.AnyMap;
+import eu.dnetlib.clients.index.model.AnySeq;
+import eu.dnetlib.clients.index.model.DataFactory;
+import eu.dnetlib.clients.index.model.InvalidValueTypeException;
+import eu.dnetlib.clients.index.model.Value;
 
-import static java.lang.String.format;
-
 /**
  * Basic abstract implementation class for Any.
  */
 public abstract class AbstractAny implements Any, Serializable {
 
-	/**
-	 * because it is serializable.
-	 */
+	/** because it is serializable. */
 	private static final long serialVersionUID = 1L;
 
 	/**
@@ -23,40 +27,33 @@
 
 	/**
 	 * Constructs a new AbstractAny.
-	 *
-	 * @param valueType the type of the AnbstractAny.
+	 * 
+	 * @param valueType
+	 *            the type of the AnbstractAny.
 	 */
 	protected AbstractAny(final ValueType valueType) {
 		_valueType = valueType;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public ValueType getValueType() {
 		return _valueType;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean isMap() {
 		return _valueType == ValueType.MAP;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean isSeq() {
 		return _valueType == ValueType.SEQ;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean isValue() {
 		// return _valueType == ValueType.STRING || _valueType == ValueType.DOUBLE || _valueType == ValueType.BOOLEAN
@@ -64,89 +61,64 @@
 		return _valueType != ValueType.MAP && _valueType != ValueType.SEQ;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean isString() {
 		return _valueType == ValueType.STRING;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean isDouble() {
 		return _valueType == ValueType.DOUBLE;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean isBoolean() {
 		return _valueType == ValueType.BOOLEAN;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean isLong() {
 		return _valueType == ValueType.LONG;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean isDate() {
 		return _valueType == ValueType.DATE;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean isDateTime() {
 		return _valueType == ValueType.DATETIME;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean isNumber() {
 		return _valueType == ValueType.LONG || _valueType == ValueType.DOUBLE;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public DataFactory getFactory() {
 		return DefaultDataFactoryImpl.INSTANCE;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
 	@Override
 	public Value asValue() {
 		throw new InvalidValueTypeException(format("cannot return a %s as a Value", _valueType));
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
 	@Override
 	public AnyMap asMap() {
 		throw new InvalidValueTypeException(format("cannot return a %s as a %s", _valueType, ValueType.MAP));
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
 	@Override
 	public AnySeq asSeq() {
 		throw new InvalidValueTypeException(format("cannot return a %s as a %s", _valueType, ValueType.SEQ));
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/client/IndexClient.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/client/IndexClient.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/client/IndexClient.java	(revision 57158)
@@ -1,12 +1,18 @@
 package eu.dnetlib.clients.index.client;
 
+import java.io.Closeable;
 import java.util.List;
+import java.util.Map;
 
 import eu.dnetlib.clients.index.client.response.BrowseEntry;
 import eu.dnetlib.clients.index.client.response.LookupResponse;
+import eu.dnetlib.clients.index.query.IndexQueryFactory;
+import eu.dnetlib.cql.CqlValueTransformerMap;
+import eu.dnetlib.utils.MetadataReference;
 
-public interface IndexClient {
 
+public interface IndexClient extends Closeable {
+
 	LookupResponse lookup(String query, List<String> filterQuery, int from, int to) throws IndexClientException;
 
 	List<BrowseEntry> browse(String query, List<String> browseFields, int max) throws IndexClientException;
@@ -15,6 +21,10 @@
 
 	long delete(String query) throws IndexClientException;
 
-	void stop() throws IndexClientException;
+	CqlValueTransformerMap getCqlValueTransformerMap(final MetadataReference mdRef) throws IndexClientException;
 
+	Map<String, String> getServiceProperties();
+
+	IndexQueryFactory getIndexQueryFactory();
+
 }
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/client/response/BrowseValueEntry.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/client/response/BrowseValueEntry.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/client/response/BrowseValueEntry.java	(revision 57158)
@@ -4,31 +4,30 @@
 
 @XmlRootElement
 public class BrowseValueEntry implements Comparable<BrowseValueEntry> {
-
+	
 	private String value;
-
+	
 	private int size;
-
-	public BrowseValueEntry() {
-	}
-
+	
+	public BrowseValueEntry() {}
+	
 	public BrowseValueEntry(final String value, final int size) {
 		this.value = value;
 		this.size = size;
 	}
-
+	
 	public String getValue() {
 		return value;
 	}
-
+	
 	public void setValue(final String value) {
 		this.value = value;
 	}
-
+	
 	public int getSize() {
 		return size;
 	}
-
+	
 	public void setSize(final int size) {
 		this.size = size;
 	}
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/pom.xml
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/pom.xml	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/pom.xml	(revision 57158)
@@ -88,7 +88,8 @@
 		<dependency>
 			<groupId>org.apache.httpcomponents</groupId>
 			<artifactId>httpclient</artifactId>
-			<version>${httpcomponents.httpclient.version}</version>
+			<!-- version>${httpcomponents.httpclient.version}</version-->
+			<version>4.5.6</version>
 		</dependency>
 
 		<!-- cxf -->
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/ValueImpl.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/ValueImpl.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/impl/ValueImpl.java	(revision 57158)
@@ -5,16 +5,20 @@
 import java.util.Iterator;
 
 import com.google.common.collect.Iterators;
-import eu.dnetlib.clients.index.model.*;
 
+import eu.dnetlib.clients.index.model.Any;
+import eu.dnetlib.clients.index.model.AnySeq;
+import eu.dnetlib.clients.index.model.InvalidValueTypeException;
+import eu.dnetlib.clients.index.model.Value;
+import eu.dnetlib.clients.index.model.ValueFormatHelper;
+
+
 /**
  * Any holding a value.
  */
 public final class ValueImpl extends AbstractAny implements Value {
 
-	/**
-	 * version.
-	 */
+	/** version. */
 	private static final long serialVersionUID = 1L;
 
 	/**
@@ -24,9 +28,11 @@
 
 	/**
 	 * create new empty ValueImpl instance.
-	 *
-	 * @param valueType the type of the Value
-	 * @param value     the value of the Value
+	 * 
+	 * @param valueType
+	 *            the type of the Value
+	 * @param value
+	 *            the value of the Value
 	 */
 	ValueImpl(final ValueType valueType, final Object value) {
 		super(valueType);
@@ -40,8 +46,9 @@
 
 	/**
 	 * create new empty ValueImpl instance as a copy of a given Value.
-	 *
-	 * @param object the vlaue to be copied
+	 * 
+	 * @param object
+	 *            the vlaue to be copied
 	 */
 	ValueImpl(final Value object) {
 		super(object.getValueType());
@@ -105,9 +112,7 @@
 		} else throw new InvalidValueTypeException("Value of type '" + _valueType + "' cannot be converted to long.");
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Boolean asBoolean() {
 		if (_valueType == ValueType.BOOLEAN) return (Boolean) _value;
@@ -120,9 +125,7 @@
 		} else throw new InvalidValueTypeException("Value of type '" + _valueType + "' cannot be converted to boolean.");
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Date asDate() {
 		if ((_valueType == ValueType.DATE) || (_valueType == ValueType.DATETIME)) return new Date(((DateValue) _value).getTime());
@@ -135,9 +138,7 @@
 		} else throw new InvalidValueTypeException("Value of type '" + _valueType + "' cannot be converted to Date.");
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Date asDateTime() {
 		if ((_valueType == ValueType.DATE) || (_valueType == ValueType.DATETIME)) return new Date(((DateValue) _value).getTime());
@@ -150,9 +151,7 @@
 		} else throw new InvalidValueTypeException("Value of type '" + _valueType + "' cannot be converted to DateTime.");
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public String asString() {
 		if (_value == null) return null;
@@ -169,9 +168,7 @@
 		}
 	}
 
-	/**
-	 * get original string from {@link DateValue}, if exists, else format the contained date as date or timestamp.
-	 */
+	/** get original string from {@link DateValue}, if exists, else format the contained date as date or timestamp. */
 	private String getDateString(final DateValue pair) {
 		if (pair.hasOriginalString()) return pair.getOriginalString();
 		if (_valueType == ValueType.DATE) return ValueFormatHelper.INSTANCE.formatDate(pair.getDate());
@@ -178,9 +175,7 @@
 		return ValueFormatHelper.INSTANCE.formatDateTime(pair.getDate());
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Object getObject() {
 		if ((_valueType == ValueType.DATE) || (_valueType == ValueType.DATETIME)) return ((DateValue) _value).getDate();
@@ -189,8 +184,8 @@
 
 	/**
 	 * {@inheritDoc}
-	 *
-	 * @see Object#toString()
+	 * 
+	 * @see java.lang.Object#toString()
 	 */
 	@Override
 	public String toString() {
@@ -210,9 +205,7 @@
 		return result;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean equals(final Object obj) {
 		if (this == obj) return true;
@@ -228,25 +221,19 @@
 		return true;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public Iterator<Any> iterator() {
 		return Iterators.unmodifiableIterator(this.iterator());
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public boolean isEmpty() {
 		return false;
 	}
 
-	/**
-	 * {@inheritDoc}
-	 */
+	/** {@inheritDoc} */
 	@Override
 	public int size() {
 		return 1;
@@ -254,6 +241,8 @@
 
 	/**
 	 * {@inheritDoc}
+	 * 
+	 * @see org.eclipse.smila.datamodel.Any#asValue()
 	 */
 	@Override
 	public Value asValue() {
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/InvalidValueTypeException.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/InvalidValueTypeException.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/InvalidValueTypeException.java	(revision 57158)
@@ -2,23 +2,21 @@
 
 /**
  * A runtime exception that will be thrown if the value types of the Any objects do not match the expected types.
+ * 
  */
 public class InvalidValueTypeException extends RuntimeException {
 
-	/**
-	 * exceptions can be serialized.
-	 */
+	/** exceptions can be serialized. */
 	private static final long serialVersionUID = 1L;
 
-	/**
-	 * unsupported value type that caused this exception.
-	 */
+	/** unsupported value type that caused this exception. */
 	private final Class<?> _unsupportedType;
 
 	/**
 	 * Creates an InvalidValueTypeException with the given message.
-	 *
-	 * @param message The message for the user.
+	 * 
+	 * @param message
+	 *            The message for the user.
 	 */
 	public InvalidValueTypeException(final String message) {
 		this(message, (Class<?>) null);
@@ -26,9 +24,11 @@
 
 	/**
 	 * Instantiates a new invalid value type exception.
-	 *
-	 * @param message         the message
-	 * @param unsupportedType the unsupported type
+	 * 
+	 * @param message
+	 *            the message
+	 * @param unsupportedType
+	 *            the unsupported type
 	 */
 	public InvalidValueTypeException(final String message, final Class<?> unsupportedType) {
 		super(message);
@@ -37,8 +37,9 @@
 
 	/**
 	 * Instantiates a new invalid value type exception.
-	 *
-	 * @param unsupportedType the unsupported type
+	 * 
+	 * @param unsupportedType
+	 *            the unsupported type
 	 */
 	public InvalidValueTypeException(final Class<?> unsupportedType) {
 		this("type not supported: " + unsupportedType, unsupportedType);
@@ -55,7 +56,7 @@
 
 	/**
 	 * Gets the unsupported type. might be null.
-	 *
+	 * 
 	 * @return the unsupported type
 	 */
 	public Class<?> getUnsupportedType() {
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/AnyMap.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/AnyMap.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/AnyMap.java	(revision 57158)
@@ -5,10 +5,11 @@
 
 /**
  * Interface for a map with Any objects.
+ * 
  * <p>
- * <p>
  * AnyMap does <b>not</b> allow <code>null</code> values!
  * </p>
+ * 
  */
 public interface AnyMap extends Any, Map<String, Any> {
 
@@ -16,15 +17,19 @@
 	 * Adds the given value to the mapped entry of the given key. If there's no mapping yet, the new value is added as
 	 * Seq with one value. If the key is currently mapped to a Value/Map, the Value/Map is converted to a Seq containing
 	 * the Value/Map and the Seq is added. If the key is currently mapped to a Seq, new value is added to that Seq.
-	 *
-	 * @param key   The key
-	 * @param value the Any to add
+	 * 
+	 * @param key
+	 *            The key
+	 * @param value
+	 *            the Any to add
 	 */
 	void add(String key, Any value);
 
 	/**
-	 * @param key   The key
-	 * @param value String value, must not be null.
+	 * @param key
+	 *            The key
+	 * @param value
+	 *            String value, must not be null.
 	 * @return the previous value or null
 	 */
 	Any put(String key, String value);
@@ -32,23 +37,29 @@
 	/**
 	 * Long, Integer, Short and Byte values will be converted to Value object of type LONG, all others to Value object
 	 * of type DOUBLE.
-	 *
-	 * @param key   The key
-	 * @param value Number value, will be converted, must not be null.
+	 * 
+	 * @param key
+	 *            The key
+	 * @param value
+	 *            Number value, will be converted, must not be null.
 	 * @return the previous value or null
 	 */
 	Any put(String key, Number value);
 
 	/**
-	 * @param key   The key
-	 * @param value Boolean value, must not be null.
+	 * @param key
+	 *            The key
+	 * @param value
+	 *            Boolean value, must not be null.
 	 * @return the previous value or null
 	 */
 	Any put(String key, Boolean value);
 
 	/**
-	 * @param key   The key
-	 * @param value Any value, must not be null.
+	 * @param key
+	 *            The key
+	 * @param value
+	 *            Any value, must not be null.
 	 * @return the previous value or null
 	 */
 	@Override
@@ -55,81 +66,94 @@
 	Any put(String key, Any value);
 
 	/**
-	 * @param key The key
+	 * @param key
+	 *            The key
 	 * @return The AnyMap matching the key, an InvalidValueTypeException is thrown if the value is not of type AnyMap,
-	 * or null
+	 *         or null
 	 */
 	AnyMap getMap(String key);
 
 	/**
 	 * Gets the map and optionally creates one under the given key if not present.
-	 *
-	 * @param key    The key
-	 * @param create if true and the key is not yet used, create a new map. else just return null.
+	 * 
+	 * @param key
+	 *            The key
+	 * @param create
+	 *            if true and the key is not yet used, create a new map. else just return null.
 	 * @return The AnyMap matching the key, an InvalidValueTypeException is thrown if the value is not of type AnyMap
 	 */
 	AnyMap getMap(String key, boolean create);
 
 	/**
-	 * @param key The key
+	 * @param key
+	 *            The key
 	 * @return The AnySeq matching to this key, an InvalidValueTypeException is thrown if the value is not of type, or
-	 * null
+	 *         null
 	 */
 	AnySeq getSeq(String key);
 
 	/**
 	 * Gets the seq and optionally creates one under the given key if not present.
-	 *
-	 * @param key    The key
-	 * @param create the create
+	 * 
+	 * @param key
+	 *            The key
+	 * @param create
+	 *            the create
 	 * @return The AnySeq matching the key, an InvalidValueTypeException is thrown if the value is not of type AnyMap
 	 */
 	AnySeq getSeq(String key, boolean create);
 
 	/**
-	 * @param key the key
+	 * @param key
+	 *            the key
 	 * @return The string representation of the attribute value
 	 */
 	String getStringValue(String key);
 
 	/**
-	 * @param key the key
+	 * @param key
+	 *            the key
 	 * @return The value matching to this key, an InvalidValueTypeException is thrown if the value is no value type
 	 */
 	Value getValue(String key);
 
 	/**
-	 * @param key The key
+	 * @param key
+	 *            The key
 	 * @return The double value matching to this key, an InvalidValueTypeException is thrown if the value is not of type
-	 * double
+	 *         double
 	 */
 	Double getDoubleValue(String key);
 
 	/**
-	 * @param key The key
+	 * @param key
+	 *            The key
 	 * @return The long value matching to this key, an InvalidValueTypeException is thrown if the value is not of type
-	 * long
+	 *         long
 	 */
 	Long getLongValue(String key);
 
 	/**
-	 * @param key The key
+	 * @param key
+	 *            The key
 	 * @return The boolean value matching to this key, an InvalidValueTypeException is thrown if the value is not of
-	 * type boolean
+	 *         type boolean
 	 */
 	Boolean getBooleanValue(String key);
 
 	/**
-	 * @param key The key
+	 * @param key
+	 *            The key
 	 * @return The date value matching to this key, an InvalidValueTypeException is thrown if the value is not of type
-	 * date
+	 *         date
 	 */
 	Date getDateValue(String key);
 
 	/**
-	 * @param key The key
+	 * @param key
+	 *            The key
 	 * @return The date time value matching to this key, an InvalidValueTypeException is thrown if the value is not of
-	 * type date time
+	 *         type date time
 	 */
 	Date getDateTimeValue(String key);
 }
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/ValueFormatHelper.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/ValueFormatHelper.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/ValueFormatHelper.java	(revision 57158)
@@ -13,80 +13,49 @@
  * synchronization.
  */
 public class ValueFormatHelper {
-
-	/**
-	 * shared global helper instance.
-	 */
+	/** shared global helper instance. */
 	public static final ValueFormatHelper INSTANCE = new ValueFormatHelper();
 
-	/**
-	 * The max. length of strings to be parsed as date.
-	 */
+	/** The max. length of strings to be parsed as date. */
 	private static final int DATE_LENGTH = 10;
 
-	/**
-	 * The length of strings to be parsed as date time for (default) pattern 1.
-	 */
+	/** The length of strings to be parsed as date time for (default) pattern 1. */
 	private static final int DATE_TIME_LENGTH_PATTERN_DEFAULT = 28;
 
-	/**
-	 * The length of strings to be parsed as date time for pattern 2 and 3.
-	 */
+	/** The length of strings to be parsed as date time for pattern 2 and 3. */
 	private static final int DATE_TIME_LENGTH_PATTERN_2_AND_3 = 24;
 
-	/**
-	 * The length of strings to be parsed as date time for pattern 4.
-	 */
+	/** The length of strings to be parsed as date time for pattern 4. */
 	private static final int DATE_TIME_LENGTH_PATTERN_4 = 20;
 
-	/**
-	 * formatter to create and parse standard string representations of Date values: "yyyy-MM-dd".
-	 */
+	/** formatter to create and parse standard string representations of Date values: "yyyy-MM-dd". */
 	private final DateFormat _formatDate = new SimpleDateFormat("yyyy-MM-dd");
 
-	/**
-	 * valid Datetime value pattern with milliseconds and time zone (default for printing).
-	 */
+	/** valid Datetime value pattern with milliseconds and time zone (default for printing). */
 	private final DateFormat _formatDateTimePatternDefault = getDefaultDateTimeFormat();
 
-	/**
-	 * valid Datetime value pattern with time zone.
-	 */
+	/** valid Datetime value pattern with time zone. */
 	private final DateFormat _formatDateTimePattern2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
 
-	/**
-	 * valid Datetime value pattern with milliseconds and time zone 'Z' (UTC).
-	 */
+	/** valid Datetime value pattern with milliseconds and time zone 'Z' (UTC). */
 	private final DateFormat _formatDateTimePattern3 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
 
-	/**
-	 * valid Datetime value pattern without milliseconds and time zone 'Z' (UTC).
-	 */
+	/** valid Datetime value pattern without milliseconds and time zone 'Z' (UTC). */
 	private final DateFormat _formatDateTimePattern4 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
 
-	/**
-	 * pattern for checking if the string might be a date.
-	 */
+	/** pattern for checking if the string might be a date. */
 	private final Pattern _formatPatternDateDefault = Pattern.compile("\\d{4}-\\d{2}-\\d{2}");
 
-	/**
-	 * pattern for checking if the string might be a date time for default pattern.
-	 */
+	/** pattern for checking if the string might be a date time for default pattern. */
 	private final Pattern _formatPatternTimeDefault = Pattern.compile("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}[+-]{1}\\d{4}");
 
-	/**
-	 * pattern for checking if the string might be a date time for pattern 2.
-	 */
+	/** pattern for checking if the string might be a date time for pattern 2. */
 	private final Pattern _formatPatternTime2 = Pattern.compile("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}[+-]{1}\\d{4}");
 
-	/**
-	 * pattern for checking if the string might be a date time for pattern 3.
-	 */
+	/** pattern for checking if the string might be a date time for pattern 3. */
 	private final Pattern _formatPatternTime3 = Pattern.compile("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z");
 
-	/**
-	 * pattern for checking if the string might be a date time for pattern 4.
-	 */
+	/** pattern for checking if the string might be a date time for pattern 4. */
 	private final Pattern _formatPatternTime4 = Pattern.compile("\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z");
 
 	/**
@@ -113,8 +82,9 @@
 
 	/**
 	 * format value as Date string.
-	 *
-	 * @param value a date value
+	 * 
+	 * @param value
+	 *            a date value
 	 * @return formatted date.
 	 */
 	public String formatDate(final Date value) {
@@ -125,8 +95,9 @@
 
 	/**
 	 * format value as DateTime string.
-	 *
-	 * @param value a datetime value
+	 * 
+	 * @param value
+	 *            a datetime value
 	 * @return formatted datetime string
 	 */
 	public String formatDateTime(final Date value) {
@@ -137,10 +108,12 @@
 
 	/**
 	 * parse a date string.
-	 *
-	 * @param dateString a date string
+	 * 
+	 * @param dateString
+	 *            a date string
 	 * @return parsed Date
-	 * @throws ParseException string has wrong format
+	 * @throws ParseException
+	 *             string has wrong format
 	 */
 	public Date parseDate(final String dateString) throws ParseException {
 		if (dateString.length() == DATE_LENGTH && _formatPatternDateDefault.matcher(dateString).matches()) {
@@ -154,8 +127,9 @@
 
 	/**
 	 * parse a date string.
-	 *
-	 * @param dateString a date string
+	 * 
+	 * @param dateString
+	 *            a date string
 	 * @return parsed Date if correct format, else null.
 	 */
 	public Date tryParseDate(final String dateString) {
@@ -173,10 +147,12 @@
 
 	/**
 	 * parse datetime string.
-	 *
-	 * @param dateTimeString a datetime string
+	 * 
+	 * @param dateTimeString
+	 *            a datetime string
 	 * @return parsed Date
-	 * @throws ParseException string has wrong format
+	 * @throws ParseException
+	 *             string has wrong format
 	 */
 	public Date parseDateTime(final String dateTimeString) throws ParseException {
 		final Date result;
@@ -206,8 +182,9 @@
 
 	/**
 	 * parse datetime string.
-	 *
-	 * @param dateTimeString a datetime string
+	 * 
+	 * @param dateTimeString
+	 *            a datetime string
 	 * @return parsed Date if correct format, else null;
 	 */
 	public Date tryParseDateTime(final String dateTimeString) {
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/Any.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/Any.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/Any.java	(revision 57158)
@@ -8,12 +8,23 @@
 public interface Any extends Iterable<Any> {
 
 	/**
+	 * Enumeration with the possible value types.
+	 * 
+	 */
+	public enum ValueType {
+
+		/**
+		 * The list with the possible value types. MAP map, SEQ sequence, STRING string value, DOUBLE double value,
+		 * BOOLEAN Boolean value, LONG long value, DATE date (without time), DATETIME date with time
+		 */
+		MAP, SEQ, STRING, DOUBLE, BOOLEAN, LONG, DATE, DATETIME
+	};
+
+	/**
 	 * @return value type
 	 */
 	ValueType getValueType();
 
-	;
-
 	/**
 	 * @return true if value is of type map
 	 */
@@ -71,7 +82,7 @@
 
 	/**
 	 * @return iterator over elements. For {@link Value}, this return an iterator about the value itself. For
-	 * {@link AnyMap} it returns an iterator on the values.
+	 *         {@link AnyMap} it returns an iterator on the values.
 	 */
 	@Override
 	Iterator<Any> iterator();
@@ -101,16 +112,4 @@
 	 */
 	AnySeq asSeq();
 
-	/**
-	 * Enumeration with the possible value types.
-	 */
-	public enum ValueType {
-
-		/**
-		 * The list with the possible value types. MAP map, SEQ sequence, STRING string value, DOUBLE double value,
-		 * BOOLEAN Boolean value, LONG long value, DATE date (without time), DATETIME date with time
-		 */
-		MAP, SEQ, STRING, DOUBLE, BOOLEAN, LONG, DATE, DATETIME
-	}
-
 }
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/Value.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/Value.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/Value.java	(revision 57158)
@@ -14,31 +14,31 @@
 
 	/**
 	 * @return The double representation, an InvalidValueTypeException is thrown if the value is not a number. If value
-	 * is a string then this is tried to be converted to a Double.
+	 *         is a string then this is tried to be converted to a Double.
 	 */
 	Double asDouble();
 
 	/**
 	 * @return The long representation, an InvalidValueTypeException is thrown if the value is not a number. If value is
-	 * a string then this is tried to be converted to a Long.
+	 *         a string then this is tried to be converted to a Long.
 	 */
 	Long asLong();
 
 	/**
 	 * @return The boolean representation, an InvalidValueTypeException is thrown if the value is not of type boolean.
-	 * If value is a string then this is tried to be converted to a boolean.
+	 *         If value is a string then this is tried to be converted to a boolean.
 	 */
 	Boolean asBoolean();
 
 	/**
 	 * @return The date representation, an InvalidValueTypeException is thrown if the value is not of type date or
-	 * datetime. If value is a string then this is tried to be converted to a date.
+	 *         datetime. If value is a string then this is tried to be converted to a date.
 	 */
 	Date asDate();
 
 	/**
 	 * @return The date time representation, an InvalidValueTypeException is thrown if the value is not of type
-	 * datetime. If value is a string then this is tried to be converted to a datetime.
+	 *         datetime. If value is a string then this is tried to be converted to a datetime.
 	 */
 	Date asDateTime();
 
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/util/AnyUtil.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/util/AnyUtil.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/util/AnyUtil.java	(revision 57158)
@@ -1,14 +1,28 @@
 package eu.dnetlib.clients.index.model.util;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Properties;
+import java.util.Set;
 
-import eu.dnetlib.clients.index.model.*;
+import eu.dnetlib.clients.index.model.Any;
+import eu.dnetlib.clients.index.model.AnyMap;
+import eu.dnetlib.clients.index.model.AnySeq;
+import eu.dnetlib.clients.index.model.DataFactory;
+import eu.dnetlib.clients.index.model.Value;
 import eu.dnetlib.clients.index.model.impl.DefaultDataFactoryImpl;
 
+
 /**
  * utility class for handling / conversion of Any objects.
- * <p>
+ *
  * Hint: The Any-to-JSON conversion for Date(Time)s is not symmetric. If the Any object contains Date(Time) values, they will be serialized
  * to String values in simple timestamp format. But when parsing JSON to an Any object, Date(Time) strings will not be recognized anymore,
  * but just read as String values.
@@ -15,9 +29,7 @@
  */
 public class AnyUtil {
 
-	/**
-	 * Immutable empty AnyMap instance.
-	 */
+	/** Immutable empty AnyMap instance. */
 	public static final AnyMap EMPTY_MAP = DefaultDataFactoryImpl.IMMUTABLE_EMPTY_MAP;
 
 	/**
@@ -30,13 +42,14 @@
 	/**
 	 * Converts an Any object into a native java object.
 	 *
-	 * @param any the Any object
+	 * @param any
+	 *            the Any object
 	 * @return a Pojo
 	 */
 	public static Object anyToNative(final Any any) {
 		if (any.isMap()) {
 			final LinkedHashMap<String, Object> map = new LinkedHashMap<String, Object>();
-			for (final Iterator<String> kIt = ((AnyMap) any).keySet().iterator(); kIt.hasNext(); ) {
+			for (final Iterator<String> kIt = ((AnyMap) any).keySet().iterator(); kIt.hasNext();) {
 				final String key = kIt.next();
 				map.put(key, anyToNative(((AnyMap) any).get(key)));
 			}
@@ -43,7 +56,7 @@
 			return map;
 		} else if (any.isSeq()) {
 			final ArrayList<Object> list = new ArrayList<Object>();
-			for (final Iterator<Any> aIt = any.iterator(); aIt.hasNext(); ) {
+			for (final Iterator<Any> aIt = any.iterator(); aIt.hasNext();) {
 				final Any a = aIt.next();
 				list.add(anyToNative(a));
 			}
@@ -60,13 +73,15 @@
 	/**
 	 * Converts an object to an Any (recursively). The leaf object(s) must be convertable by {@link DataFactory#autoConvertValue(Object)}.
 	 *
-	 * @param object The object to be converted. Supported (and tested in this order) are
-	 *               <ul>
-	 *               <li>{@code Map<String, Object>}
-	 *               <li>{@code Collections<Object>}
-	 *               <li>{@code Object[]}
-	 *               <li>Any other object that can be {@link DataFactory#autoConvertValue(Object)}</li>
-	 *               </ul>
+	 * @param object
+	 *            The object to be converted. Supported (and tested in this order) are
+	 *            <ul>
+	 *            <li>{@code Map<String, Object>}
+	 *            <li>{@code Collections<Object>}
+	 *            <li>{@code Object[]}
+	 *            <li>Any other object that can be {@link DataFactory#autoConvertValue(Object)}</li>
+	 *            </ul>
+	 *
 	 * @return The converted Any
 	 */
 	@SuppressWarnings("unchecked")
@@ -89,7 +104,8 @@
 	/**
 	 * Converts a collection to an AnySeq object.
 	 *
-	 * @param objects The list of objects to convert.
+	 * @param objects
+	 *            The list of objects to convert.
 	 * @return An AnySeq containing the objects as Any objects.
 	 */
 	private static AnySeq collectionToAny(final Collection<Object> objects) {
@@ -106,7 +122,8 @@
 	/**
 	 * Converts a scalar object to a Value object.
 	 *
-	 * @param obj The object to convert.
+	 * @param obj
+	 *            The object to convert.
 	 * @return A Value representing the object.
 	 */
 	private static Any scalarObjectToAny(final Object obj) {
@@ -116,7 +133,8 @@
 	/**
 	 * Converts a map to an AnyMap object.
 	 *
-	 * @param map The map (String to Object) to convert.
+	 * @param map
+	 *            The map (String to Object) to convert.
 	 * @return An AnyMap representing the map with all Objects converted to Any.
 	 */
 	private static AnyMap mapToAny(final Map<String, Object> map) {
@@ -134,8 +152,10 @@
 	 * get value for given path(list of keys) from AnyMap object. This methods throws no exception, if the path not exists an empty Any is
 	 * the result.
 	 *
-	 * @param any  the Any object.
-	 * @param path path to the entry.
+	 * @param any
+	 *            the Any object.
+	 * @param path
+	 *            path to the entry.
 	 * @return value associated to the path.
 	 */
 	public static Any saveGet(final Any any, final String[] path) {
@@ -159,7 +179,8 @@
 	/**
 	 * convert an exception to an any object.
 	 *
-	 * @param e exception to convert
+	 * @param e
+	 *            exception to convert
 	 * @return any representation of exception
 	 */
 	public static AnyMap exceptionToAny(final Throwable e) {
@@ -169,8 +190,10 @@
 	/**
 	 * convert an exception to an any object. stop in stacktrace printing when hitting known lines again.
 	 *
-	 * @param e            exception to convert
-	 * @param visitedLines lines that have been added to stacktraces before.
+	 * @param e
+	 *            exception to convert
+	 * @param visitedLines
+	 *            lines that have been added to stacktraces before.
 	 * @return any representation of exception
 	 */
 	private static AnyMap exceptionToAny(final Throwable e, final Collection<String> visitedLines) {
@@ -200,76 +223,58 @@
 	 */
 	public static Double asDouble(final Any any) {
 		return any == null ? null : any.asValue().asDouble();
-	}
+	};
 
-	;
-
 	/**
 	 * null save version.
 	 */
 	public static Boolean asBoolean(final Any any) {
 		return any == null ? null : any.asValue().asBoolean();
-	}
+	};
 
-	;
-
 	/**
 	 * null save version.
 	 */
 	public static Date asDateTime(final Any any) {
 		return any == null ? null : any.asValue().asDateTime();
-	}
+	};
 
-	;
-
 	/**
 	 * null save version.
 	 */
 	public static Date asDate(final Any any) {
 		return any == null ? null : any.asValue().asDate();
-	}
+	};
 
-	;
-
 	/**
 	 * null save version.
 	 */
 	public static Long asLong(final Any any) {
 		return any == null ? null : any.asValue().asLong();
-	}
+	};
 
-	;
-
 	/**
 	 * null save version.
 	 */
 	public static String asString(final Any any) {
 		return any == null ? null : any.asValue().asString();
-	}
+	};
 
-	;
-
 	/**
 	 * null save version.
 	 */
 	public static AnyMap asMap(final Any any) {
 		return any == null ? null : any.asMap();
-	}
+	};
 
-	;
-
 	/**
 	 * null save version.
 	 */
 	public static AnySeq asSeq(final Any any) {
 		return any == null ? null : any.asSeq();
-	}
+	};
 
-	;
-
-	/**
-	 * convert AnyMap to java.util.Properties.
-	 */
+	/** convert AnyMap to java.util.Properties. */
 	public static Properties anyToProperties(final AnyMap anyMap) {
 		Properties props = new Properties();
 		final Set<String> keySet = anyMap.keySet();
@@ -279,9 +284,7 @@
 		return props;
 	}
 
-	/**
-	 * convert java.util.Properties to AnyMap.
-	 */
+	/** convert java.util.Properties to AnyMap. */
 	public static AnyMap propertiesToAny(final Properties props) {
 		final AnyMap any = DataFactory.DEFAULT.createAnyMap();
 		final Set<String> propNames = props.stringPropertyNames();
@@ -293,7 +296,7 @@
 
 	/**
 	 * returns the 1st map in the give SEQ that contains a value with the given name value, or null if not found.
-	 * <p>
+	 *
 	 * This is often useful for configs that are contained in a seq such as search filters.
 	 *
 	 * @since 1.1
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/document/Status.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/document/Status.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/document/Status.java	(revision 57158)
@@ -5,16 +5,10 @@
  */
 public enum Status {
 
-	/**
-	 * The marked.
-	 */
+	/** The marked. */
 	MARKED,
-	/**
-	 * The error.
-	 */
+	/** The error. */
 	ERROR,
-	/**
-	 * The ok.
-	 */
+	/** The ok. */
 	OK
 }
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/document/IndexDocument.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/document/IndexDocument.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/document/IndexDocument.java	(revision 57158)
@@ -10,27 +10,32 @@
 	/**
 	 * Adds a field with the given name, value and boost. If a field with the name already exists, then the given value is appended to the
 	 * value of that field, with the new boost. If the value is a collection, then each of its values will be added to the field.
-	 * <p>
+	 * 
 	 * The class type of value and the name parameter should match schema.xml. schema.xml can be found in conf directory under the solr home
 	 * by default.
-	 *
-	 * @param name  Name of the field, should match one of the field names defined under "fields" tag in schema.xml.
-	 * @param value Value of the field, should be of same class type as defined by "type" attribute of the corresponding field in schema.xml.
+	 * 
+	 * @param name
+	 *            Name of the field, should match one of the field names defined under "fields" tag in schema.xml.
+	 * @param value
+	 *            Value of the field, should be of same class type as defined by "type" attribute of the corresponding field in schema.xml.
 	 */
 	public void addField(String name, Object value);
 
 	/**
 	 * Set a field with implied null value for boost.
-	 *
-	 * @param name  name of the field to set
-	 * @param value value of the field
+	 * 
+	 * @param name
+	 *            name of the field to set
+	 * @param value
+	 *            value of the field
 	 */
 	public void setField(String name, Object value);
 
 	/**
 	 * Get the first value for a field.
-	 *
-	 * @param name name of the field to fetch
+	 * 
+	 * @param name
+	 *            name of the field to fetch
 	 * @return first value of the field or null if not present
 	 */
 	public Object getFieldValue(String name);
@@ -37,8 +42,9 @@
 
 	/**
 	 * Gets the field.
-	 *
-	 * @param field the field
+	 * 
+	 * @param field
+	 *            the field
 	 * @return the field
 	 */
 	public IndexField getField(String field);
@@ -45,8 +51,9 @@
 
 	/**
 	 * Remove a field from the document.
-	 *
-	 * @param name The field name whose field is to be removed from the document
+	 * 
+	 * @param name
+	 *            The field name whose field is to be removed from the document
 	 * @return the previous field with <tt>name</tt>, or <tt>null</tt> if there was no field for <tt>key</tt>.
 	 */
 	public IndexField removeField(String name);
@@ -53,8 +60,9 @@
 
 	/**
 	 * Get all the values for a field.
-	 *
-	 * @param name name of the field to fetch
+	 * 
+	 * @param name
+	 *            name of the field to fetch
 	 * @return value of the field or null if not set
 	 */
 	public Collection<Object> getFieldValues(String name);
@@ -61,7 +69,7 @@
 
 	/**
 	 * Get all field names.
-	 *
+	 * 
 	 * @return Set of all field names.
 	 */
 	public Collection<String> getFieldNames();
@@ -68,7 +76,7 @@
 
 	/**
 	 * return a copy of index Document.
-	 *
+	 * 
 	 * @return the index document
 	 */
 	public IndexDocument deepCopy();
@@ -75,7 +83,7 @@
 
 	/**
 	 * Gets the status.
-	 *
+	 * 
 	 * @return the status
 	 */
 	public Status getStatus();
@@ -82,8 +90,9 @@
 
 	/**
 	 * The set status.
-	 *
-	 * @param status the status
+	 * 
+	 * @param status
+	 *            the status
 	 * @return the index document
 	 */
 	public IndexDocument setStatus(Status status);
@@ -90,7 +99,7 @@
 
 	/**
 	 * If there was an error building the document, it is described here.
-	 *
+	 * 
 	 * @return the error
 	 */
 	public Throwable getError();
@@ -97,8 +106,9 @@
 
 	/**
 	 * Sets the error.
-	 *
-	 * @param error the error
+	 * 
+	 * @param error
+	 *            the error
 	 * @return the index document
 	 */
 	public IndexDocument setError(final Throwable error);
@@ -105,7 +115,7 @@
 
 	/**
 	 * Sets the ok status to the index document.
-	 *
+	 * 
 	 * @return the index document
 	 */
 	public IndexDocument setOK();
@@ -112,7 +122,7 @@
 
 	/**
 	 * Sets the status marked to the index document.
-	 *
+	 * 
 	 * @return the index document
 	 */
 	public IndexDocument setMarked();
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/document/AbstractIndexDocument.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/document/AbstractIndexDocument.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/document/AbstractIndexDocument.java	(revision 57158)
@@ -1,29 +1,36 @@
 package eu.dnetlib.clients.index.model.document;
 
-import java.util.*;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
 
 import eu.dnetlib.clients.index.model.Any.ValueType;
 import eu.dnetlib.clients.index.utils.IndexFieldUtility;
 
+
 /**
  * The Class AbstractDocument Represent the field information needed to construct and index Document.
  */
 public abstract class AbstractIndexDocument implements Map<String, IndexField>, Iterable<IndexField>, IndexDocument {
 
+	/** The _fields. */
+	protected final Map<String, IndexField> fields;
+
 	private static final String DATE_SUFFIX = "\\+\\d{2}:\\d{2}";
+
 	/**
-	 * The _fields.
+	 * Actual document status.
 	 */
-	protected final Map<String, IndexField> fields;
+	private Status status;
+
 	/**
 	 * index schema.
 	 */
 	protected final Map<String, ValueType> schema;
+
 	/**
-	 * Actual document status.
-	 */
-	private Status status;
-	/**
 	 * If there was an error building the document, it is described here.
 	 */
 	private Throwable error;
@@ -33,13 +40,15 @@
 	 */
 	public AbstractIndexDocument(final Map<String, ValueType> schema, final String dsId) {
 		this.schema = schema;
-		fields = new LinkedHashMap<>();
+		fields = new LinkedHashMap<String, IndexField>();
+		// addField(IndexFieldUtility.DS_ID, dsId);
 	}
 
 	/**
 	 * Instantiates a new abstract document.
 	 *
-	 * @param fields the fields
+	 * @param fields
+	 *            the fields
 	 */
 	public AbstractIndexDocument(final Map<String, ValueType> schema, final String dsId, final Map<String, IndexField> fields) {
 		this.schema = schema;
@@ -59,10 +68,15 @@
 
 	/**
 	 * {@inheritDoc}
+	 *
+	 * @see eu.dnetlib.index.model.document.IndexDocument#addField(java.lang.String, java.lang.Object)
 	 */
 	@Override
 	public void addField(final String name, final Object value) {
 		Object hack_value = hackField(name, value);
+		if (hack_value==null) {
+			return;
+		}
 		IndexField field = fields.get(name);
 		if ((field == null) || (field.getValue() == null)) {
 			setField(name, hack_value);
@@ -73,6 +87,8 @@
 
 	/**
 	 * {@inheritDoc}
+	 *
+	 * @see eu.dnetlib.index.model.document.IndexDocument#getFieldValue(java.lang.String)
 	 */
 	@Override
 	public Object getFieldValue(final String name) {
@@ -86,6 +102,8 @@
 
 	/**
 	 * {@inheritDoc}
+	 *
+	 * @see eu.dnetlib.index.model.document.IndexDocument#getField(java.lang.String)
 	 */
 	@Override
 	public IndexField getField(final String field) {
@@ -94,6 +112,8 @@
 
 	/**
 	 * {@inheritDoc}
+	 *
+	 * @see eu.dnetlib.index.model.document.IndexDocument#getFieldValues(java.lang.String)
 	 */
 	@Override
 	public Collection<Object> getFieldValues(final String name) {
@@ -104,6 +124,8 @@
 
 	/**
 	 * {@inheritDoc}
+	 *
+	 * @see eu.dnetlib.index.model.document.IndexDocument#getFieldNames()
 	 */
 	@Override
 	public Collection<String> getFieldNames() {
@@ -112,6 +134,8 @@
 
 	/**
 	 * {@inheritDoc}
+	 *
+	 * @see eu.dnetlib.index.model.document.IndexDocument#setField(java.lang.String, java.lang.Object)
 	 */
 	@Override
 	public void setField(final String name, final Object value) {
@@ -123,6 +147,8 @@
 
 	/**
 	 * {@inheritDoc}
+	 *
+	 * @see eu.dnetlib.index.model.document.IndexDocument#removeField(java.lang.String)
 	 */
 	@Override
 	public IndexField removeField(final String name) {
@@ -132,7 +158,7 @@
 	/**
 	 * {@inheritDoc}
 	 *
-	 * @see Iterable#iterator()
+	 * @see java.lang.Iterable#iterator()
 	 */
 	@Override
 	public Iterator<IndexField> iterator() {
@@ -142,7 +168,7 @@
 	/**
 	 * {@inheritDoc}
 	 *
-	 * @see Object#toString()
+	 * @see java.lang.Object#toString()
 	 */
 	@Override
 	public String toString() {
@@ -156,7 +182,7 @@
 	/**
 	 * {@inheritDoc}
 	 *
-	 * @see Map#containsKey(Object)
+	 * @see java.util.Map#containsKey(java.lang.Object)
 	 */
 	@Override
 	public boolean containsKey(final Object key) {
@@ -166,7 +192,7 @@
 	/**
 	 * {@inheritDoc}
 	 *
-	 * @see Map#containsValue(Object)
+	 * @see java.util.Map#containsValue(java.lang.Object)
 	 */
 	@Override
 	public boolean containsValue(final Object value) {
@@ -176,7 +202,7 @@
 	/**
 	 * {@inheritDoc}
 	 *
-	 * @see Map#entrySet()
+	 * @see java.util.Map#entrySet()
 	 */
 	@Override
 	public Set<Entry<String, IndexField>> entrySet() {
@@ -186,7 +212,7 @@
 	/**
 	 * {@inheritDoc}
 	 *
-	 * @see Map#get(Object)
+	 * @see java.util.Map#get(java.lang.Object)
 	 */
 	@Override
 	public IndexField get(final Object key) {
@@ -196,7 +222,7 @@
 	/**
 	 * {@inheritDoc}
 	 *
-	 * @see Map#isEmpty()
+	 * @see java.util.Map#isEmpty()
 	 */
 	@Override
 	public boolean isEmpty() {
@@ -206,7 +232,7 @@
 	/**
 	 * {@inheritDoc}
 	 *
-	 * @see Map#keySet()
+	 * @see java.util.Map#keySet()
 	 */
 	@Override
 	public Set<String> keySet() {
@@ -216,7 +242,7 @@
 	/**
 	 * {@inheritDoc}
 	 *
-	 * @see Map#put(Object, Object)
+	 * @see java.util.Map#put(java.lang.Object, java.lang.Object)
 	 */
 	@Override
 	public IndexField put(final String key, final IndexField value) {
@@ -226,7 +252,7 @@
 	/**
 	 * {@inheritDoc}
 	 *
-	 * @see Map#putAll(Map)
+	 * @see java.util.Map#putAll(java.util.Map)
 	 */
 	@Override
 	public void putAll(final Map<? extends String, ? extends IndexField> t) {
@@ -236,7 +262,7 @@
 	/**
 	 * {@inheritDoc}
 	 *
-	 * @see Map#remove(Object)
+	 * @see java.util.Map#remove(java.lang.Object)
 	 */
 	@Override
 	public IndexField remove(final Object key) {
@@ -246,7 +272,7 @@
 	/**
 	 * {@inheritDoc}
 	 *
-	 * @see Map#size()
+	 * @see java.util.Map#size()
 	 */
 	@Override
 	public int size() {
@@ -256,7 +282,7 @@
 	/**
 	 * {@inheritDoc}
 	 *
-	 * @see Map#values()
+	 * @see java.util.Map#values()
 	 */
 	@Override
 	public Collection<IndexField> values() {
@@ -265,6 +291,8 @@
 
 	/**
 	 * {@inheritDoc}
+	 *
+	 * @see eu.dnetlib.index.model.document.IndexDocument#getStatus()
 	 */
 	@Override
 	public Status getStatus() {
@@ -274,7 +302,8 @@
 	/**
 	 * Sets the status.
 	 *
-	 * @param status the status to set
+	 * @param status
+	 *            the status to set
 	 * @return the index document
 	 */
 	@Override
@@ -285,6 +314,8 @@
 
 	/**
 	 * {@inheritDoc}
+	 *
+	 * @see eu.dnetlib.index.model.document.IndexDocument#deepCopy()
 	 */
 	@Override
 	public IndexDocument deepCopy() {
@@ -294,6 +325,8 @@
 
 	/**
 	 * {@inheritDoc}
+	 *
+	 * @see eu.dnetlib.index.model.document.IndexDocument#getError()
 	 */
 	@Override
 	public Throwable getError() {
@@ -303,6 +336,8 @@
 
 	/**
 	 * {@inheritDoc}
+	 *
+	 * @see eu.dnetlib.index.model.document.IndexDocument#setOK()
 	 */
 	@Override
 	public IndexDocument setOK() {
@@ -312,6 +347,8 @@
 
 	/**
 	 * {@inheritDoc}
+	 *
+	 * @see eu.dnetlib.index.model.document.IndexDocument#setMarked()
 	 */
 	@Override
 	public IndexDocument setMarked() {
@@ -321,6 +358,8 @@
 
 	/**
 	 * {@inheritDoc}
+	 *
+	 * @see eu.dnetlib.index.model.document.IndexDocument#setError(java.lang.Throwable)
 	 */
 	@Override
 	public IndexDocument setError(final Throwable error) {
@@ -339,10 +378,11 @@
 		if (schema == null) return value;
 
 		final ValueType type = schema.get(name);
-		if(type == null){
-			throw new NullPointerException("cannot find index field "+name+" in schema");
+
+		if (type==null) {
+			return null;
 		}
-
+		
 		// TODO: hack this is hardcoded for the date type
 		switch (type) {
 		case DATETIME:
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/document/IndexField.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/document/IndexField.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/model/document/IndexField.java	(revision 57158)
@@ -9,30 +9,42 @@
  */
 public class IndexField implements Iterable<Object> {
 
-	/**
-	 * The name.
-	 */
+	/** The name. */
 	private String name;
 
-	/**
-	 * The value.
-	 */
+	/** The value. */
 	private Object value = null;
 
-	/**
-	 * Instantiates a new index field.
-	 *
-	 * @param n the n
-	 */
 	public IndexField(final String n) {
 		this.name = n;
 	}
 
 	/**
+	 * Set the value for a field. Arrays will be converted to a collection. If a collection is given, then that collection will be used as
+	 * the backing collection for the values.
+	 * 
+	 * @param v
+	 *            the v
+	 */
+	public void setValue(final Object v) {
+
+		if (v instanceof Object[]) {
+			Object[] arr = (Object[]) v;
+			Collection<Object> c = new ArrayList<Object>(arr.length);
+			for (Object o : arr) {
+				c.add(o);
+			}
+			value = c;
+		} else {
+			value = v;
+		}
+	}
+
+	/**
 	 * Add values to a field. If the added value is a collection, each value will be added individually.
-	 *
-	 * @param v the v
-	 * @param b the b
+	 * 
+	 * @param v
+	 *            the v
 	 */
 	@SuppressWarnings("unchecked")
 	public void addValue(final Object v) {
@@ -74,7 +86,7 @@
 
 	/**
 	 * Gets the first value.
-	 *
+	 * 
 	 * @return the first value
 	 */
 	@SuppressWarnings("unchecked")
@@ -90,7 +102,7 @@
 
 	/**
 	 * Gets the value.
-	 *
+	 * 
 	 * @return the value for this field. If the field has multiple values, this will be a collection.
 	 */
 	public Object getValue() {
@@ -98,29 +110,8 @@
 	}
 
 	/**
-	 * Set the value for a field. Arrays will be converted to a collection. If a collection is given, then that collection will be used as
-	 * the backing collection for the values.
-	 *
-	 * @param v the v
-	 * @param b the b
-	 */
-	public void setValue(final Object v) {
-
-		if (v instanceof Object[]) {
-			Object[] arr = (Object[]) v;
-			Collection<Object> c = new ArrayList<Object>(arr.length);
-			for (Object o : arr) {
-				c.add(o);
-			}
-			value = c;
-		} else {
-			value = v;
-		}
-	}
-
-	/**
 	 * Gets the values.
-	 *
+	 * 
 	 * @return the values for this field. This will return a collection even if the field is not multi-valued
 	 */
 	@SuppressWarnings("unchecked")
@@ -136,7 +127,7 @@
 
 	/**
 	 * Gets the value count.
-	 *
+	 * 
 	 * @return the number of values for this field
 	 */
 	@SuppressWarnings("rawtypes")
@@ -150,7 +141,7 @@
 
 	/**
 	 * Gets the name.
-	 *
+	 * 
 	 * @return the name
 	 */
 	public String getName() {
@@ -159,8 +150,9 @@
 
 	/**
 	 * Sets the name.
-	 *
-	 * @param name the new name
+	 * 
+	 * @param name
+	 *            the new name
 	 */
 	public void setName(final String name) {
 		this.name = name;
@@ -168,8 +160,8 @@
 
 	/**
 	 * {@inheritDoc}
-	 *
-	 * @see Iterable#iterator()
+	 * 
+	 * @see java.lang.Iterable#iterator()
 	 */
 	@Override
 	@SuppressWarnings({ "unchecked", "rawtypes" })
@@ -199,8 +191,8 @@
 
 	/**
 	 * {@inheritDoc}
-	 *
-	 * @see Object#toString()
+	 * 
+	 * @see java.lang.Object#toString()
 	 */
 	@Override
 	public String toString() {
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/utils/IndexFieldUtility.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/utils/IndexFieldUtility.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/utils/IndexFieldUtility.java	(revision 57158)
@@ -2,8 +2,9 @@
 
 /**
  * IndexMap keeps track of IndexDataStructure-to-physical index mappings and vice-versa.
- *
+ * 
  * @author claudio
+ * 
  */
 public class IndexFieldUtility {
 
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/utils/ServiceTools.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/utils/ServiceTools.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/utils/ServiceTools.java	(revision 57158)
@@ -42,7 +42,7 @@
 	public MetadataReference getMetadataRef(final String dsId) throws IndexServiceException {
 
 		final String xquery = "for $x in //RESOURCE_PROFILE[.//RESOURCE_IDENTIFIER/@value='" + dsId + "']//CONFIGURATION " + "return concat("
-				+ "$x/METADATA_FORMAT/text(),'@'," + "$x/METADATA_FORMAT_LAYOUT/text(),'@'," + "$x/METADATA_FORMAT_INTERPRETATION/text())";
+				+ "$x/METADATA_FORMAT/text(),'-'," + "$x/METADATA_FORMAT_LAYOUT/text(),'-'," + "$x/METADATA_FORMAT_INTERPRETATION/text())";
 		return mdFactory.decodeMetadata(getResourceProfileByQuery(xquery));
 	}
 
@@ -81,7 +81,7 @@
 	private List<String> listMDRefsAsString() throws IndexClientException {
 		final String xquery = "for $x in //RESOURCE_PROFILE[.//RESOURCE_TYPE/@value='MDFormatDSResourceType'] "
 				+ "let $format:= $x//CONFIGURATION/NAME/string() " + "for $y in $x//LAYOUTS/LAYOUT " + "let $layout:= $y/@name/string() "
-				+ "let $interpretation:= $x//CONFIGURATION/INTERPRETATION/text() " + "return concat($format,'@',$layout,'@',$interpretation) ";
+				+ "let $interpretation:= $x//CONFIGURATION/INTERPRETATION/text() " + "return concat($format,'-',$layout,'-',$interpretation) ";
 		return quickSearchProfile(xquery);
 	}
 
@@ -167,4 +167,4 @@
 			throw new IndexServiceException(e);
 		}
 	}
-}
+}
\ No newline at end of file
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/utils/MDFormatReader.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/utils/MDFormatReader.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/utils/MDFormatReader.java	(revision 57158)
@@ -12,23 +12,54 @@
 
 import com.google.common.collect.HashBasedTable;
 import com.google.common.collect.Table;
+import com.mycila.xmltool.CallBack;
 import com.mycila.xmltool.XMLDoc;
+import com.mycila.xmltool.XMLTag;
 
 import eu.dnetlib.clients.index.client.IndexClientException;
+import eu.dnetlib.rmi.provision.IndexServiceException;
 import eu.dnetlib.utils.MetadataReference;
+import eu.dnetlib.utils.MetadataReferenceFactory;
 
+
 public class MDFormatReader {
 
+	static class XmlUtils {
+
+		/**
+		 * helper method, parses a list of fields.
+		 *
+		 * @param fields
+		 *            the given fields
+		 * @return the parsed fields
+		 * @throws IndexServiceException
+		 *             if cannot parse the fields
+		 */
+		public static Document parse(final String xml) {
+			try {
+				return new SAXReader().read(new StringReader(xml));
+			} catch (DocumentException e) {
+				throw new IllegalArgumentException("cannot parse: " + xml);
+			}
+		}
+
+		public static InputSource asInputSource(final String input) throws DocumentException {
+			return new InputSource(new StringReader(parse(input).asXML()));
+		}
+	}
+
 	@Autowired
 	private ServiceTools serviceTools;
 
-	// @Autowired
+	@Autowired
+	private MetadataReferenceFactory mdFactory;
+
 	public List<MetadataReference> listMDRefs() throws IndexClientException {
 		return serviceTools.listMDRefs();
 	}
 
 	public Document getFields(final MetadataReference mdRef) {
-		final String fields = serviceTools.getIndexFields(mdRef);
+		String fields = serviceTools.getIndexFields(mdRef);
 		return (fields != null) && !fields.isEmpty() ? XmlUtils.parse(fields) : null;
 	}
 
@@ -39,56 +70,37 @@
 	public Table<String, String, String> getAttributeTable(final MetadataReference mdRef, final String... attributeList) throws IndexClientException {
 
 		final String fields = serviceTools.getIndexFields(mdRef);
-		if (fields.isEmpty()) { throw new IndexClientException("No result getting index layout informations"); }
+		if (fields.isEmpty()) throw new IndexClientException("No result getting index layout informations");
 		final Table<String, String, String> t = HashBasedTable.create();
-		XMLDoc.from(serviceTools.getIndexFields(mdRef), false).forEach("//FIELD", field -> {
+		XMLDoc.from(serviceTools.getIndexFields(mdRef), false).forEach("//FIELD", new CallBack() {
 
-			for (final String attribute : attributeList) {
-				String value = null;
+			@Override
+			public void execute(final XMLTag field) {
 
-				if ("xpath".equals(attribute)) {
-					if (!(field.hasAttribute("xpath") || field.hasAttribute("value"))) { return; }
+				for (String attribute : attributeList) {
+					String value = null;
 
-					value = field.hasAttribute("xpath") ? field.getAttribute("xpath") : field.getAttribute("value");
-				}
+					if ("xpath".equals(attribute)) {
+						if (!(field.hasAttribute("xpath") || field.hasAttribute("value"))) return;
 
-				if ("weight".equals(attribute)) {
-					if (!(field.hasAttribute(attribute))) { return; }
+						value = field.hasAttribute("xpath") ? field.getAttribute("xpath") : field.getAttribute("value");
+					}
 
-					value = field.hasAttribute(attribute) ? field.getAttribute(attribute) : "";
-				}
+					if ("weight".equals(attribute)) {
+						if (!(field.hasAttribute(attribute))) return;
 
-				if (value == null) {
-					value = field.getAttribute(attribute);
+						value = field.hasAttribute(attribute) ? field.getAttribute(attribute) : "";
+					}
+
+					if (value == null) {
+						value = field.getAttribute(attribute);
+					}
+
+					t.put(field.getAttribute("name").toLowerCase(), attribute, value);
 				}
-
-				t.put(field.getAttribute("name").toLowerCase(), attribute, value);
 			}
 		});
 		return t;
 	}
 
-	static class XmlUtils {
-
-		/**
-		 * helper method, parses a list of fields.
-		 * <p>
-		 * <p>
-		 * the given fields
-		 *
-		 * @return the parsed fields if cannot parse the fields
-		 */
-		public static Document parse(final String xml) {
-			try {
-				return new SAXReader().read(new StringReader(xml));
-			} catch (final DocumentException e) {
-				throw new IllegalArgumentException("cannot parse: " + xml);
-			}
-		}
-
-		public static InputSource asInputSource(final String input) throws DocumentException {
-			return new InputSource(new StringReader(parse(input).asXML()));
-		}
-	}
-
 }
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/QueryResponseParser.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/QueryResponseParser.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/QueryResponseParser.java	(revision 57158)
@@ -6,53 +6,63 @@
 
 import com.google.common.collect.BiMap;
 import com.google.common.collect.Iterables;
+
 import eu.dnetlib.clients.index.model.document.IndexDocument;
 import eu.dnetlib.clients.index.utils.IndexFieldUtility;
 import eu.dnetlib.rmi.provision.BrowsingRow;
 
+
 /**
  * The Class QueryResponseParser.
  */
 public abstract class QueryResponseParser {
 
-	/**
-	 * The highlight utils.
-	 */
+	/** The highlight utils. */
 	protected final Function<String, String> highlightUtils;
 
-	/**
-	 * The aliases.
-	 */
+	/** The aliases. */
 	protected final BiMap<String, String> aliases;
 
-	/**
-	 * The return empty fields.
-	 */
+	/** The return empty fields. */
 	protected final boolean returnEmptyFields;
 
-	/**
-	 * The include ranking.
-	 */
+	/** The include ranking. */
 	protected final boolean includeRanking;
 
-	/**
-	 * The wrapper rank.
-	 */
+	/** The wrapper rank. */
 	protected final Function<IndexDocument, String> wrapperRank =
 			doc -> addRanking(getSingleField(doc, IndexFieldUtility.RESULT), getSingleField(doc, IndexFieldUtility.SCORE_FIELD));
 
+	/** The wrapper no rank. */
+	protected final Function<IndexDocument, String> wrapperNoRank = doc -> wrap(getSingleField(doc, IndexFieldUtility.RESULT));
+
 	/**
-	 * The wrapper no rank.
+	 * Gets the single field.
+	 *
+	 * @param doc
+	 *            the doc
+	 * @param fieldName
+	 *            the field name
+	 * @return the single field
 	 */
-	protected final Function<IndexDocument, String> wrapperNoRank = doc -> wrap(getSingleField(doc, IndexFieldUtility.RESULT));
+	@SuppressWarnings("unchecked")
+	private String getSingleField(final IndexDocument doc, final String fieldName) {
+		Object value = doc.getFieldValue(fieldName);
+		if (value instanceof Collection) return Iterables.getOnlyElement((Iterable<String>) value);
+		return String.valueOf(value);
+	}
 
 	/**
 	 * Instantiates a new query response parser.
 	 *
-	 * @param highlightUtils    the highlight utils
-	 * @param aliases           the aliases
-	 * @param returnEmptyFields the return empty fields
-	 * @param includeRanking    the include ranking
+	 * @param highlightUtils
+	 *            the highlight utils
+	 * @param aliases
+	 *            the aliases
+	 * @param returnEmptyFields
+	 *            the return empty fields
+	 * @param includeRanking
+	 *            the include ranking
 	 */
 	public QueryResponseParser(final Function<String, String> highlightUtils, final BiMap<String, String> aliases, final boolean returnEmptyFields,
 			final boolean includeRanking) {
@@ -64,26 +74,14 @@
 	}
 
 	/**
-	 * Gets the single field.
+	 * Converts a String document to
 	 *
-	 * @param doc       the doc
-	 * @param fieldName the field name
-	 * @return the single field
-	 */
-	@SuppressWarnings("unchecked")
-	private String getSingleField(final IndexDocument doc, final String fieldName) {
-		Object value = doc.getFieldValue(fieldName);
-		if (value instanceof Collection) return Iterables.getOnlyElement((Iterable<String>) value);
-		return String.valueOf(value);
-	}
-
-	/**
-	 * Converts a String document to
-	 * <p>
 	 * <record rank="score"> [document] </record>.
 	 *
-	 * @param doc   the doc
-	 * @param score the score
+	 * @param doc
+	 *            the doc
+	 * @param score
+	 *            the score
 	 * @return the string
 	 */
 	private String addRanking(final String doc, final String score) {
@@ -93,7 +91,8 @@
 	/**
 	 * Wraps the given document as <record> [document] </record>.
 	 *
-	 * @param doc the doc
+	 * @param doc
+	 *            the doc
 	 * @return the string
 	 */
 	private String wrap(final String doc) {
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/BrowseAliases.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/BrowseAliases.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/BrowseAliases.java	(revision 57158)
@@ -3,21 +3,25 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Required;
+
 import com.google.common.collect.BiMap;
 import com.google.common.collect.HashBiMap;
 import com.google.common.collect.Maps;
+
 import eu.dnetlib.clients.index.client.IndexClientException;
 import eu.dnetlib.clients.index.utils.IndexFieldUtility;
 import eu.dnetlib.clients.index.utils.MDFormatReader;
+import eu.dnetlib.clients.index.utils.ServiceTools;
+import eu.dnetlib.rmi.provision.IndexServiceException;
 import eu.dnetlib.utils.MetadataReference;
-import eu.dnetlib.clients.index.utils.ServiceTools;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.dom4j.Document;
-import org.dom4j.Element;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Required;
 
+
 /**
  * The Class BrowseAliases.
  */
@@ -28,9 +32,7 @@
 	 */
 	private static final Log log = LogFactory.getLog(BrowseAliases.class); // NOPMD
 
-	/**
-	 * The aliases.
-	 */
+	/** The aliases. */
 	private Map<MetadataReference, BiMap<String, String>> aliases = Maps.newConcurrentMap();
 
 	private ServiceTools serviceTools;
@@ -40,8 +42,9 @@
 
 	/**
 	 * Initialize.
-	 * <p>
-	 * the index service exception
+	 * 
+	 * @throws IndexServiceException
+	 *             the index service exception
 	 */
 	public void initialize() throws IndexClientException {
 		log.info("initializing browse aliases");
@@ -54,8 +57,9 @@
 
 	/**
 	 * Put.
-	 *
-	 * @param mdRef the metadata refeference
+	 * 
+	 * @param mdRef
+	 *            the metadata refeference
 	 */
 	public void put(final MetadataReference mdRef) {
 		final Document fields = mdFormatReader.getFields(mdRef);
@@ -70,8 +74,9 @@
 
 	/**
 	 * Gets the.
-	 *
-	 * @param mdRef the md ref
+	 * 
+	 * @param mdRef
+	 *            the md ref
 	 * @return browsing aliases for given mdRef.
 	 * @throws IndexClientException
 	 */
@@ -84,8 +89,9 @@
 
 	/**
 	 * Method extract aliases field names from the given fields.
-	 *
-	 * @param fields the fields
+	 * 
+	 * @param fields
+	 *            the fields
 	 * @return aliases map. Keys are "normal" field names, values are names of the non-tokenized version of the field
 	 */
 	protected BiMap<String, String> extractBrowsingAliases(final Document fields) {
@@ -117,7 +123,8 @@
 	}
 
 	/**
-	 * @param serviceTools the serviceTools to set
+	 * @param serviceTools
+	 *            the serviceTools to set
 	 */
 	@Required
 	public void setServiceTools(final ServiceTools serviceTools) {
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/Weights.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/Weights.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/Weights.java	(revision 57158)
@@ -3,14 +3,16 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import eu.dnetlib.clients.index.client.IndexClientException;
-import eu.dnetlib.clients.index.utils.MDFormatReader;
-import eu.dnetlib.utils.MetadataReference;
-import eu.dnetlib.clients.index.utils.ServiceTools;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import eu.dnetlib.clients.index.client.IndexClientException;
+import eu.dnetlib.clients.index.utils.MDFormatReader;
+import eu.dnetlib.clients.index.utils.ServiceTools;
+import eu.dnetlib.utils.MetadataReference;
+
+
 public class Weights extends HashMap<MetadataReference, Map<String, String>> {
 
 	private static final long serialVersionUID = -3517914310574484765L;
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/QueryResponseFactory.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/QueryResponseFactory.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/query/QueryResponseFactory.java	(revision 57158)
@@ -2,11 +2,13 @@
 
 import java.util.function.Function;
 
-import eu.dnetlib.clients.index.client.IndexClientException;
-import eu.dnetlib.utils.MetadataReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Required;
 
+import eu.dnetlib.clients.index.client.IndexClientException;
+import eu.dnetlib.utils.MetadataReference;
+
+
 public abstract class QueryResponseFactory<T> {
 
 	/**
@@ -31,27 +33,27 @@
 
 	// /////////////////// setters and getters.
 
-	public boolean isReturnEmptyFields() {
-		return returnEmptyFields;
-	}
-
 	@Required
 	public void setReturnEmptyFields(final boolean returnEmptyFields) {
 		this.returnEmptyFields = returnEmptyFields;
 	}
 
+	public boolean isReturnEmptyFields() {
+		return returnEmptyFields;
+	}
+
 	@Required
 	public void setHighlightUtils(final Function<String, String> highlightUtils) {
 		this.highlightUtils = highlightUtils;
 	}
 
-	public boolean isIncludeRanking() {
-		return includeRanking;
-	}
-
 	@Required
 	public void setIncludeRanking(final boolean includeRanking) {
 		this.includeRanking = includeRanking;
 	}
 
+	public boolean isIncludeRanking() {
+		return includeRanking;
+	}
+
 }
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/client/AbstractIndexClientFactory.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/client/AbstractIndexClientFactory.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/client/AbstractIndexClientFactory.java	(revision 57158)
@@ -1,19 +1,20 @@
 package eu.dnetlib.clients.index.client;
 
-import eu.dnetlib.clients.index.utils.ServiceTools;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import eu.dnetlib.clients.index.utils.ServiceTools;
+
+
 /**
  * The Class AbstractIndexClientFactory.
  */
 public abstract class AbstractIndexClientFactory implements IndexClientFactory {
 
+	/** The backend id. */
+	private String backendId;
+
 	@Autowired
 	protected ServiceTools isQueryTools;
-	/**
-	 * The backend id.
-	 */
-	private String backendId;
 
 	/**
 	 * Inits the class.
@@ -22,6 +23,8 @@
 
 	/**
 	 * {@inheritDoc}
+	 *
+	 * @see eu.dnetlib.index.client.IndexClientFactory#getBackendId()
 	 */
 	@Override
 	public String getBackendId() {
@@ -31,7 +34,8 @@
 	/**
 	 * Sets the backend id.
 	 *
-	 * @param backendId the backend id
+	 * @param backendId
+	 *            the backend id
 	 */
 	public void setBackendId(final String backendId) {
 		this.backendId = backendId;
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/client/IndexClientFactory.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/client/IndexClientFactory.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/client/IndexClientFactory.java	(revision 57158)
@@ -1,5 +1,7 @@
 package eu.dnetlib.clients.index.client;
 
+import eu.dnetlib.utils.MetadataReference;
+
 public interface IndexClientFactory {
 
 	String getBackendId();
@@ -6,4 +8,8 @@
 
 	IndexClient getClient(String format, String layout, String interpretation) throws IndexClientException;
 
+	IndexClient getClient(MetadataReference mdRef) throws IndexClientException;
+
+	IndexClient getClient(String collection) throws IndexClientException;
+
 }
Index: modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/client/response/LookupResponse.java
===================================================================
--- modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/client/response/LookupResponse.java	(revision 57157)
+++ modules/dnet-core-components/branches/saxonHE-SOLR-772/src/main/java/eu/dnetlib/clients/index/client/response/LookupResponse.java	(revision 57158)
@@ -1,10 +1,12 @@
 package eu.dnetlib.clients.index.client.response;
 
 import java.util.List;
+
 import javax.xml.bind.annotation.XmlRootElement;
 
 import eu.dnetlib.clients.index.query.QueryResponseParser;
 
+
 @XmlRootElement
 public class LookupResponse {
 
@@ -13,8 +15,7 @@
 	private long to;
 	private List<String> records;
 
-	public LookupResponse() {
-	}
+	public LookupResponse() {}
 
 	public LookupResponse(final QueryResponseParser parser) {
 		this.total = parser.getNumFound();
