You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by no...@apache.org on 2015/02/11 12:25:24 UTC
svn commit: r1658932 - in /lucene/dev/trunk/solr:
core/src/java/org/apache/solr/core/
solrj/src/java/org/apache/solr/common/util/
solrj/src/test/org/apache/solr/common/util/
Author: noble
Date: Wed Feb 11 11:25:24 2015
New Revision: 1658932
URL: http://svn.apache.org/r1658932
Log:
formatting fixed
Modified:
lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/InitParams.java
lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/JarRepository.java
lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/RequestParams.java
lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/util/JsonRecordReader.java
lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/common/util/TestJsonRecordReader.java
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/InitParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/InitParams.java?rev=1658932&r1=1658931&r2=1658932&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/InitParams.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/InitParams.java Wed Feb 11 11:25:24 2015
@@ -33,49 +33,49 @@ public class InitParams {
public static final String TYPE = "initParams";
public final String name;
public final Set<String> paths;
- public final NamedList defaults,invariants,appends;
+ public final NamedList defaults, invariants, appends;
public InitParams(PluginInfo p) {
this.name = p.attributes.get("name");
Set<String> paths = null;
String pathStr = p.attributes.get("path");
- if(pathStr!=null) {
+ if (pathStr != null) {
paths = Collections.unmodifiableSet(new HashSet<>(StrUtils.splitSmart(pathStr, ',')));
}
this.paths = paths;
NamedList nl = (NamedList) p.initArgs.get(PluginInfo.DEFAULTS);
- defaults = nl == null ? null: nl.getImmutableCopy();
+ defaults = nl == null ? null : nl.getImmutableCopy();
nl = (NamedList) p.initArgs.get(PluginInfo.INVARIANTS);
- invariants = nl == null ? null: nl.getImmutableCopy();
+ invariants = nl == null ? null : nl.getImmutableCopy();
nl = (NamedList) p.initArgs.get(PluginInfo.APPENDS);
- appends = nl == null ? null: nl.getImmutableCopy();
+ appends = nl == null ? null : nl.getImmutableCopy();
}
public boolean matchPath(String name) {
- if(paths == null) return false;
- if(paths.contains(name)) return true;
+ if (paths == null) return false;
+ if (paths.contains(name)) return true;
for (String path : paths) {
- if(matchPath(path,name)) return true;
+ if (matchPath(path, name)) return true;
}
return false;
}
- private static boolean matchPath(String path, String name){
+ private static boolean matchPath(String path, String name) {
List<String> pathSplit = StrUtils.splitSmart(path, '/');
List<String> nameSplit = StrUtils.splitSmart(name, '/');
int i = 0;
- for (;i < nameSplit.size(); i++) {
+ for (; i < nameSplit.size(); i++) {
String s = nameSplit.get(i);
- String ps = pathSplit.size()>i ? pathSplit.get(i) :null;
- if(ps == null) return false;
- if(s.equals(ps)) continue;
- if("*".equals(ps) && nameSplit.size()==i+1) return true;
- if("**".equals(ps)) return true;
+ String ps = pathSplit.size() > i ? pathSplit.get(i) : null;
+ if (ps == null) return false;
+ if (s.equals(ps)) continue;
+ if ("*".equals(ps) && nameSplit.size() == i + 1) return true;
+ if ("**".equals(ps)) return true;
return false;
}
- String ps = pathSplit.size()>i ? pathSplit.get(i) :null;
+ String ps = pathSplit.size() > i ? pathSplit.get(i) : null;
return "*".equals(ps) || "**".equals(ps);
}
@@ -83,29 +83,29 @@ public class InitParams {
public void apply(PluginInfo info) {
if (!info.isFromSolrConfig()) {
//if this is a component implicitly defined in code it should be overridden by initPrams
- merge(defaults, (NamedList) info.initArgs.get(PluginInfo.DEFAULTS) ,info.initArgs, PluginInfo.DEFAULTS, false);
+ merge(defaults, (NamedList) info.initArgs.get(PluginInfo.DEFAULTS), info.initArgs, PluginInfo.DEFAULTS, false);
} else {
//if the args is initialized from solrconfig.xml inside the requesthHandler it should be taking precedence over initParams
- merge( (NamedList) info.initArgs.get(PluginInfo.DEFAULTS), defaults,info.initArgs, PluginInfo.DEFAULTS, false);
+ merge((NamedList) info.initArgs.get(PluginInfo.DEFAULTS), defaults, info.initArgs, PluginInfo.DEFAULTS, false);
}
merge((NamedList) info.initArgs.get(PluginInfo.INVARIANTS), invariants, info.initArgs, PluginInfo.INVARIANTS, false);
merge((NamedList) info.initArgs.get(PluginInfo.APPENDS), appends, info.initArgs, PluginInfo.APPENDS, true);
}
- private static void merge(NamedList first, NamedList second, NamedList sink, String name, boolean appends) {
- if(first == null && second == null) return;
- if(first == null) first = new NamedList();
+ private static void merge(NamedList first, NamedList second, NamedList sink, String name, boolean appends) {
+ if (first == null && second == null) return;
+ if (first == null) first = new NamedList();
NamedList nl = first.clone();
- if(appends) {
- if(second!=null) nl.addAll(second);
+ if (appends) {
+ if (second != null) nl.addAll(second);
} else {
Set<String> a = new HashSet<>();
Set<String> b = new HashSet<>();
- for (Object o : first) {
- Map.Entry<String,Object> e = (Map.Entry) o;
- a.add(e.getKey() );
+ for (Object o : first) {
+ Map.Entry<String, Object> e = (Map.Entry) o;
+ a.add(e.getKey());
}
- if(second!=null) {
+ if (second != null) {
for (Object o : second) {
Map.Entry<String, Object> e = (Map.Entry) o;
b.add(e.getKey());
@@ -116,10 +116,10 @@ public class InitParams {
for (Object v : second.getAll(s)) nl.add(s, v);
}
}
- if(sink.indexOf(name,0) >-1) {
+ if (sink.indexOf(name, 0) > -1) {
sink.setVal(sink.indexOf(name, 0), nl);
} else {
- sink.add(name,nl);
+ sink.add(name, nl);
}
}
}
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/JarRepository.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/JarRepository.java?rev=1658932&r1=1658931&r2=1658932&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/JarRepository.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/JarRepository.java Wed Feb 11 11:25:24 2015
@@ -51,8 +51,8 @@ import org.slf4j.LoggerFactory;
*/
public class JarRepository {
public static Logger log = LoggerFactory.getLogger(JarRepository.class);
-
static final Random RANDOM;
+
static {
// We try to make things reproducible in the context of our tests by initializing the random instance
// based on the current seed
@@ -63,20 +63,18 @@ public class JarRepository {
RANDOM = new Random(seed.hashCode());
}
}
-
+
private final CoreContainer coreContainer;
-
- private Map<String,JarContent> jars = new ConcurrentHashMap<>();
-
+ private Map<String, JarContent> jars = new ConcurrentHashMap<>();
+
public JarRepository(CoreContainer coreContainer) {
this.coreContainer = coreContainer;
}
-
+
/**
* Returns the contents of a jar and increments a reference count. Please return the same object to decerease the refcount
- *
- * @param key
- * it is a combination of blobname and version like blobName/version
+ *
+ * @param key it is a combination of blobname and version like blobName/version
* @return The reference of a jar
*/
public JarContentRef getJarIncRef(String key) throws IOException {
@@ -89,11 +87,12 @@ public class JarRepository {
ArrayList<Slice> slices = new ArrayList<>(coll.getActiveSlices());
if (slices.isEmpty()) throw new SolrException(SERVICE_UNAVAILABLE, ".no active slices for .system collection");
Collections.shuffle(slices, RANDOM); //do load balancing
- Slice slice = slices.get(0) ;
+ Slice slice = slices.get(0);
Replica replica = slice.getReplicas().iterator().next();
- if (replica == null) throw new SolrException(SERVICE_UNAVAILABLE, ".no active replica available for .system collection");
+ if (replica == null)
+ throw new SolrException(SERVICE_UNAVAILABLE, ".no active replica available for .system collection");
String url = replica.getStr(BASE_URL_PROP) + "/.system/blob/" + key + "?wt=filestream";
-
+
HttpClient httpClient = coreContainer.getUpdateShardHandler().getHttpClient();
HttpGet httpGet = new HttpGet(url);
ByteBuffer b;
@@ -109,27 +108,26 @@ public class JarRepository {
}
jars.put(key, jar = new JarContent(key, b));
} else {
-
+
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Jar loading is not supported in non-cloud mode");
// todo
-
+
}
-
+
}
-
+
JarContentRef ref = new JarContentRef(jar);
synchronized (jar.references) {
jar.references.add(ref);
}
return ref;
-
+
}
-
+
/**
* This is to decrement a ref count
- *
- * @param ref
- * The reference that is already there. Doing multiple calls with same ref will not matter
+ *
+ * @param ref The reference that is already there. Doing multiple calls with same ref will not matter
*/
public void decrementJarRefCount(JarContentRef ref) {
if (ref == null) return;
@@ -141,21 +139,21 @@ public class JarRepository {
jars.remove(ref.jar.key);
}
}
-
+
}
-
+
public static class JarContent {
private final String key;
// TODO move this off-heap
private final ByteBuffer buffer;
// ref counting mechanism
private final Set<JarContentRef> references = new HashSet<>();
-
+
public JarContent(String key, ByteBuffer buffer) {
this.key = key;
this.buffer = buffer;
}
-
+
public ByteBuffer getFileContent(String entryName) throws IOException {
ByteArrayInputStream zipContents = new ByteArrayInputStream(buffer.array(), buffer.arrayOffset(), buffer.limit());
ZipInputStream zis = new ZipInputStream(zipContents);
@@ -178,15 +176,15 @@ public class JarRepository {
}
return null;
}
-
+
}
-
+
public static class JarContentRef {
public final JarContent jar;
-
+
private JarContentRef(JarContent jar) {
this.jar = jar;
}
}
-
+
}
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/RequestParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/RequestParams.java?rev=1658932&r1=1658931&r2=1658932&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/RequestParams.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/RequestParams.java Wed Feb 11 11:25:24 2015
@@ -39,29 +39,29 @@ import org.noggit.ObjectBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-/**The class encapsulates the request time parameters . This is immutable and any changes performed
+/**
+ * The class encapsulates the request time parameters . This is immutable and any changes performed
* returns a copy of the Object with the changed values
- *
*/
-public class RequestParams implements MapSerializable{
+public class RequestParams implements MapSerializable {
public static final Logger log = LoggerFactory.getLogger(RequestParams.class);
private final Map data;
- private final Map<String , VersionedParams> paramsets = new LinkedHashMap<>();
- private final int znodeVersion ;
+ private final Map<String, VersionedParams> paramsets = new LinkedHashMap<>();
+ private final int znodeVersion;
public RequestParams(Map data, int znodeVersion) {
- if(data == null) data = Collections.EMPTY_MAP;
+ if (data == null) data = Collections.EMPTY_MAP;
this.data = data;
Map paramsets = (Map) data.get(NAME);
- if(paramsets != null) {
+ if (paramsets != null) {
for (Object o : paramsets.entrySet()) {
Map.Entry e = (Map.Entry) o;
if (e.getValue() instanceof Map) {
Map value = (Map) e.getValue();
Map copy = getMapCopy(value);
Map meta = (Map) copy.remove("");
- this.paramsets.put((String) e.getKey(), new VersionedParams(Collections.unmodifiableMap(copy) ,meta));
+ this.paramsets.put((String) e.getKey(), new VersionedParams(Collections.unmodifiableMap(copy), meta));
}
}
}
@@ -72,8 +72,8 @@ public class RequestParams implements Ma
Map copy = new LinkedHashMap<>();
for (Object o1 : value.entrySet()) {
Map.Entry entry = (Map.Entry) o1;
- if("".equals( entry.getKey())){
- copy.put(entry.getKey(),entry.getValue());
+ if ("".equals(entry.getKey())) {
+ copy.put(entry.getKey(), entry.getValue());
continue;
}
if (entry.getValue() != null) {
@@ -81,7 +81,7 @@ public class RequestParams implements Ma
List l = (List) entry.getValue();
String[] sarr = new String[l.size()];
for (int i = 0; i < l.size(); i++) {
- if( l.get(i) != null) sarr[i]= String.valueOf(l.get(i));
+ if (l.get(i) != null) sarr[i] = String.valueOf(l.get(i));
}
copy.put(entry.getKey(), sarr);
} else {
@@ -94,11 +94,11 @@ public class RequestParams implements Ma
return copy;
}
- public VersionedParams getParams(String name){
+ public VersionedParams getParams(String name) {
return paramsets.get(name);
}
- public int getZnodeVersion(){
+ public int getZnodeVersion() {
return znodeVersion;
}
@@ -114,46 +114,46 @@ public class RequestParams implements Ma
return result;
}
- public RequestParams setParams(String name , Map values){
+ public RequestParams setParams(String name, Map values) {
Map deepCopy = getDeepCopy(data, 3);
Map p = (Map) deepCopy.get(NAME);
- if(p == null) deepCopy.put(NAME, p= new LinkedHashMap());
- if(values == null){
+ if (p == null) deepCopy.put(NAME, p = new LinkedHashMap());
+ if (values == null) {
p.remove(name);
} else {
Map old = (Map) p.get(name);
long version = 0;
Map meta = null;
- if(old != null){
+ if (old != null) {
meta = (Map) old.get("");
- if(meta!=null) {
+ if (meta != null) {
Long oldVersion = (Long) old.get("v");
- if(oldVersion != null) version = oldVersion.longValue()+1;
+ if (oldVersion != null) version = oldVersion.longValue() + 1;
}
meta = new LinkedHashMap<>(meta);
} else {
meta = new LinkedHashMap<>();
}
- meta.put("v",version);
+ meta.put("v", version);
values = new LinkedHashMap<>(values);
- values.put("",meta);
- p.put(name,values);
+ values.put("", meta);
+ p.put(name, values);
}
return new RequestParams(deepCopy, znodeVersion);
}
- public static RequestParams getFreshRequestParams(SolrResourceLoader loader, RequestParams requestParams){
+ public static RequestParams getFreshRequestParams(SolrResourceLoader loader, RequestParams requestParams) {
if (loader instanceof ZkSolrResourceLoader) {
ZkSolrResourceLoader resourceLoader = (ZkSolrResourceLoader) loader;
try {
- Stat stat = resourceLoader.getZkController().getZkClient().exists(resourceLoader.getConfigSetZkPath()+"/"+ RequestParams.RESOURCE,null,true);
- if(stat == null) {
- requestParams = new RequestParams(Collections.EMPTY_MAP,-1);
- } else if(requestParams == null || stat.getVersion() > requestParams.getZnodeVersion()) {
+ Stat stat = resourceLoader.getZkController().getZkClient().exists(resourceLoader.getConfigSetZkPath() + "/" + RequestParams.RESOURCE, null, true);
+ if (stat == null) {
+ requestParams = new RequestParams(Collections.EMPTY_MAP, -1);
+ } else if (requestParams == null || stat.getVersion() > requestParams.getZnodeVersion()) {
Object[] o = getMapAndVersion(loader, RequestParams.RESOURCE);
- requestParams = new RequestParams((Map) o[0],(Integer)o[1]);
- log.info("request params refreshed to version {}",requestParams.getZnodeVersion());
+ requestParams = new RequestParams((Map) o[0], (Integer) o[1]);
+ log.info("request params refreshed to version {}", requestParams.getZnodeVersion());
}
} catch (KeeperException e) {
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, e);
@@ -162,7 +162,7 @@ public class RequestParams implements Ma
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, e);
}
- } else {
+ } else {
Object[] o = getMapAndVersion(loader, RequestParams.RESOURCE);
requestParams = new RequestParams((Map) o[0], (Integer) o[1]);
}
@@ -172,7 +172,7 @@ public class RequestParams implements Ma
}
- private static Object[] getMapAndVersion(SolrResourceLoader loader, String name) {
+ private static Object[] getMapAndVersion(SolrResourceLoader loader, String name) {
InputStream in = null;
try {
in = loader.openResource(name);
@@ -181,31 +181,31 @@ public class RequestParams implements Ma
return new Object[]{Collections.EMPTY_MAP, -1};
}
- int version = 0; //will be always 0 for file based resourceloader
- if (in instanceof ZkSolrResourceLoader.ZkByteArrayInputStream) {
- version = ((ZkSolrResourceLoader.ZkByteArrayInputStream) in).getStat().getVersion();
- log.info( "conf resource {} loaded . version : {} ", name,version);
- }
+ int version = 0; //will be always 0 for file based resourceloader
+ if (in instanceof ZkSolrResourceLoader.ZkByteArrayInputStream) {
+ version = ((ZkSolrResourceLoader.ZkByteArrayInputStream) in).getStat().getVersion();
+ log.info("conf resource {} loaded . version : {} ", name, version);
+ }
try {
Map m = (Map) ObjectBuilder.getVal(new JSONParser(new InputStreamReader(in, StandardCharsets.UTF_8)));
- return new Object[]{m,version};
+ return new Object[]{m, version};
} catch (IOException e) {
- throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,"Error parsing conf resource "+name,e);
+ throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Error parsing conf resource " + name, e);
}
}
- public static Map getDeepCopy(Map map, int maxDepth){
+ public static Map getDeepCopy(Map map, int maxDepth) {
Map copy = new LinkedHashMap<>();
for (Object o : map.entrySet()) {
Map.Entry e = (Map.Entry) o;
Object v = e.getValue();
if (v instanceof Map && maxDepth > 0) {
- v = getDeepCopy ( (Map) v, maxDepth -1);
+ v = getDeepCopy((Map) v, maxDepth - 1);
}
- copy.put(e.getKey(),v);
+ copy.put(e.getKey(), v);
}
return copy;
}
@@ -213,24 +213,26 @@ public class RequestParams implements Ma
public byte[] toByteArray() {
return ZkStateReader.toJSON(data);
}
+
public static final String USEPARAM = "useParams";
public static final String NAME = "params";
public static final String RESOURCE = "params.json";
- public static class VersionedParams extends MapSolrParams{
+ public static class VersionedParams extends MapSolrParams {
Map meta;
public VersionedParams(Map<String, String> map, Map meta) {
super(map);
this.meta = meta;
}
- public Map getRawMap(){
+
+ public Map getRawMap() {
return meta;
}
public Long getVersion() {
- return meta == null? 0l : (Long)meta.get("v");
+ return meta == null ? 0l : (Long) meta.get("v");
}
}
}
Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/util/JsonRecordReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/util/JsonRecordReader.java?rev=1658932&r1=1658931&r2=1658932&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/util/JsonRecordReader.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/util/JsonRecordReader.java Wed Feb 11 11:25:24 2015
@@ -25,13 +25,14 @@ import org.noggit.JSONParser;
import static org.noggit.JSONParser.*;
-/**A Streaming parser for json to emit one record at a time.
+/**
+ * A Streaming parser for json to emit one record at a time.
*/
public class JsonRecordReader {
public static final String DELIM = ".";
- private Node rootNode = new Node("/", (Node)null);
+ private Node rootNode = new Node("/", (Node) null);
public static JsonRecordReader getInst(String split, List<String> fieldMappings) {
@@ -40,7 +41,7 @@ public class JsonRecordReader {
String path = s;
int idx = s.indexOf(':');
String fieldName = null;
- if(idx >0) {
+ if (idx > 0) {
fieldName = s.substring(0, idx);
path = s.substring(idx + 1);
}
@@ -61,7 +62,7 @@ public class JsonRecordReader {
* emitted the collected fields are cleared. Any fields collected in the
* parent tag or above will also be included in the record, but these are
* not cleared after emitting the record.
- * <p/>
+ * <p>
* It uses the ' | ' syntax of PATH to pass in multiple paths.
*/
private JsonRecordReader(String splitPath) {
@@ -82,17 +83,17 @@ public class JsonRecordReader {
* construct a tree of Nodes representing path segments. The resulting
* tree structure ends up describing all the paths we are interested in.
*
- * @param path The path expression for this field
- * @param fieldName The name for this field in the emitted record
+ * @param path The path expression for this field
+ * @param fieldName The name for this field in the emitted record
* @param multiValued If 'true' then the emitted record will have values in
* a List<String>
* @param isRecord Flags that this PATH is from a forEach statement
*/
private void addField(String path, String fieldName, boolean multiValued, boolean isRecord) {
- if(!path.startsWith("/")) throw new RuntimeException("All paths must start with '/' "+ path);
+ if (!path.startsWith("/")) throw new RuntimeException("All paths must start with '/' " + path);
List<String> paths = splitEscapeQuote(path);
- if(paths.size() ==0) {
- if(isRecord) rootNode.isRecord=true;
+ if (paths.size() == 0) {
+ if (isRecord) rootNode.isRecord = true;
return;//the patrh is "/"
}
// deal with how split behaves when seperator starts a string!
@@ -154,11 +155,11 @@ public class JsonRecordReader {
String name; // generally: segment of the path represented by this Node
String fieldName; // the fieldname in the emitted record (key of the map)
String splitPath; // the full path from the forEach entity attribute
- final LinkedHashMap<String ,Node> childNodes = new LinkedHashMap<>(); // List of immediate child Nodes of this node
+ final LinkedHashMap<String, Node> childNodes = new LinkedHashMap<>(); // List of immediate child Nodes of this node
Node parent; // parent Node in the tree
boolean isLeaf = false; // flag: store/emit streamed text for this node
boolean isRecord = false; //flag: this Node starts a new record
- Node wildCardChild ;
+ Node wildCardChild;
Node recursiveWildCardChild;
private boolean useFqn = false;
@@ -182,7 +183,7 @@ public class JsonRecordReader {
* child nodes.
*/
private void buildOptimize() {
- if(parent != null && parent.recursiveWildCardChild !=null && this.recursiveWildCardChild ==null){
+ if (parent != null && parent.recursiveWildCardChild != null && this.recursiveWildCardChild == null) {
this.recursiveWildCardChild = parent.recursiveWildCardChild;
}
for (Node n : childNodes.values()) n.buildOptimize();
@@ -207,7 +208,7 @@ public class JsonRecordReader {
// recursively walk the paths Lists adding new Nodes as required
String segment = paths.remove(0); // shift out next path segment
- if(segment.length() < 1) throw new RuntimeException("all pieces in path must be non empty "+path);
+ if (segment.length() < 1) throw new RuntimeException("all pieces in path must be non empty " + path);
// does this "name" already exist as a child node.
Node n = getOrAddNode(segment, childNodes);
@@ -228,29 +229,30 @@ public class JsonRecordReader {
if (n.name.equals(WILDCARD_PATH)) {
wildCardChild = n;
}
- if (n.name.equals(RECURSIVE_WILDCARD_PATH) ) {
- recursiveWildCardChild = n.recursiveWildCardChild= n;
+ if (n.name.equals(RECURSIVE_WILDCARD_PATH)) {
+ recursiveWildCardChild = n.recursiveWildCardChild = n;
}
// path with content we want to store and return
n.isLeaf = true; // we have to store text found here
n.fieldName = fieldName; // name to store collected text against
- if("$FQN".equals(n.fieldName)) {
+ if ("$FQN".equals(n.fieldName)) {
n.fieldName = null;
n.useFqn = true;
}
}
} else {
//wildcards must only come at the end
- if(WILDCARD_PATH.equals(name) || RECURSIVE_WILDCARD_PATH.equals(name)) throw new RuntimeException("wild cards are allowed only in the end "+path) ;
+ if (WILDCARD_PATH.equals(name) || RECURSIVE_WILDCARD_PATH.equals(name))
+ throw new RuntimeException("wild cards are allowed only in the end " + path);
// recurse to handle next paths segment
n.build(paths, fieldName, multiValued, record, path);
}
}
- private Node getOrAddNode(String pathName, Map<String,Node> children) {
+ private Node getOrAddNode(String pathName, Map<String, Node> children) {
Node n = children.get(pathName);
- if(n !=null) return n;
+ if (n != null) return n;
// new territory! add a new node for this path bitty
children.put(pathName, n = new Node(pathName, this));
return n;
@@ -282,7 +284,7 @@ public class JsonRecordReader {
int event = -1;
for (; ; ) {
event = parser.nextEvent();
- if(event == EOF) break;
+ if (event == EOF) break;
if (event == OBJECT_START) {
handleObjectStart(parser, new HashSet<Node>(), handler, values, stack, recordStarted, null);
} else if (event == ARRAY_START) {
@@ -290,7 +292,7 @@ public class JsonRecordReader {
event = parser.nextEvent();
if (event == ARRAY_END) break;
if (event == OBJECT_START) {
- handleObjectStart(parser, new HashSet<Node>(), handler, values, stack, recordStarted,null);
+ handleObjectStart(parser, new HashSet<Node>(), handler, values, stack, recordStarted, null);
}
}
}
@@ -304,7 +306,7 @@ public class JsonRecordReader {
* tree then walk back though the tree's ancestor nodes checking to see if
* any // expressions exist for the node and compare them against the new
* tag. If matched then "jump" to that node, otherwise ignore the tag.
- * <p/>
+ * <p>
* Note, the list of // expressions found while walking back up the tree
* is chached in the HashMap decends. Then if the new tag is to be skipped,
* any inner chil tags are compared against the cache and jumped to if
@@ -333,7 +335,7 @@ public class JsonRecordReader {
class Wrapper extends MethodFrameWrapper {
Wrapper(Node node, MethodFrameWrapper parent, String name) {
this.node = node;
- this.parent= parent;
+ this.parent = parent;
this.name = name;
}
@@ -346,7 +348,7 @@ public class JsonRecordReader {
event = parser.nextEvent();
if (event == ARRAY_END) break;
if (event == OBJECT_START) {
- node.handleObjectStart(parser, childrenFound, handler, values, stack, isRecordStarted,this);
+ node.handleObjectStart(parser, childrenFound, handler, values, stack, isRecordStarted, this);
}
}
}
@@ -368,19 +370,19 @@ public class JsonRecordReader {
String name = parser.getString();
Node node = childNodes.get(name);
- if(node == null) node = wildCardChild;
- if(node == null) node = recursiveWildCardChild;
+ if (node == null) node = wildCardChild;
+ if (node == null) node = recursiveWildCardChild;
if (node != null) {
if (node.isLeaf) {//this is a leaf collect data here
event = parser.nextEvent();
String nameInRecord = node.fieldName == null ? getNameInRecord(name, frameWrapper, node) : node.fieldName;
MethodFrameWrapper runnable = null;
- if(event == OBJECT_START || event == ARRAY_START){
- if(node.recursiveWildCardChild !=null) runnable = new Wrapper(node, frameWrapper,name);
+ if (event == OBJECT_START || event == ARRAY_START) {
+ if (node.recursiveWildCardChild != null) runnable = new Wrapper(node, frameWrapper, name);
}
Object val = parseSingleFieldValue(event, parser, runnable);
- if(val !=null) {
+ if (val != null) {
putValue(values, nameInRecord, val);
if (isRecordStarted) valuesAddedinThisFrame.add(nameInRecord);
}
@@ -423,8 +425,8 @@ public class JsonRecordReader {
}
}
- private String getNameInRecord(String name,MethodFrameWrapper frameWrapper, Node n) {
- if(frameWrapper == null || !n.useFqn) return name;
+ private String getNameInRecord(String name, MethodFrameWrapper frameWrapper, Node n) {
+ if (frameWrapper == null || !n.useFqn) return name;
StringBuilder sb = new StringBuilder();
frameWrapper.prependName(sb);
return sb.append(DELIM).append(name).toString();
@@ -436,7 +438,7 @@ public class JsonRecordReader {
private void putValue(Map<String, Object> values, String fieldName, Object o) {
- if(o==null) return;
+ if (o == null) return;
Object val = values.get(fieldName);
if (val == null) {
values.put(fieldName, o);
@@ -466,7 +468,7 @@ public class JsonRecordReader {
* this method deals with special cases where there is a slash '/' character
* inside the attribute value e.g. x/@html='text/html'. We split by '/' but
* then reassemble things were the '/' appears within a quoted sub-string.
- * <p/>
+ * <p>
* We have already enforced that the string must begin with a seperator. This
* method depends heavily on how split behaves if the string starts with the
* seperator or if a sequence of multiple seperator's appear.
@@ -501,7 +503,7 @@ public class JsonRecordReader {
* @param record The record map. The key is the field name as provided in
* the addField() methods. The value can be a single String (for single
* valued fields) or a List<String> (for multiValued).
- * @param path The forEach path for which this record is being emitted
+ * @param path The forEach path for which this record is being emitted
* If there is any change all parsing will be aborted and the Exception
* is propagated up
*/
@@ -524,25 +526,26 @@ public class JsonRecordReader {
parser.getNull();
return null;
case ARRAY_START:
- return parseArrayFieldValue(ev, parser,runnable);
- case OBJECT_START:
- if(runnable !=null) {
+ return parseArrayFieldValue(ev, parser, runnable);
+ case OBJECT_START:
+ if (runnable != null) {
runnable.walk(OBJECT_START);
return null;
}
- consumeTillMatchingEnd(parser,1,0);
+ consumeTillMatchingEnd(parser, 1, 0);
return null;
default:
throw new RuntimeException("Error parsing JSON field value. Unexpected " + JSONParser.getEventString(ev));
}
}
+
static abstract class MethodFrameWrapper {
Node node;
MethodFrameWrapper parent;
String name;
- void prependName(StringBuilder sb){
- if(parent !=null) {
+ void prependName(StringBuilder sb) {
+ if (parent != null) {
parent.prependName(sb);
sb.append(DELIM);
}
@@ -559,11 +562,11 @@ public class JsonRecordReader {
for (; ; ) {
ev = parser.nextEvent();
if (ev == ARRAY_END) {
- if(lst.isEmpty()) return null;
+ if (lst.isEmpty()) return null;
return lst;
}
Object val = parseSingleFieldValue(ev, parser, runnable);
- if(val != null) lst.add(val);
+ if (val != null) lst.add(val);
}
}
Modified: lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/common/util/TestJsonRecordReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/common/util/TestJsonRecordReader.java?rev=1658932&r1=1658931&r2=1658932&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/common/util/TestJsonRecordReader.java (original)
+++ lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/common/util/TestJsonRecordReader.java Wed Feb 11 11:25:24 2015
@@ -27,9 +27,9 @@ import java.util.List;
import java.util.Map;
-public class TestJsonRecordReader extends SolrTestCaseJ4 {
+public class TestJsonRecordReader extends SolrTestCaseJ4 {
public void testOneLevelSplit() throws IOException {
- String json ="{\n" +
+ String json = "{\n" +
" \"a\":\"A\" ,\n" +
" \"b\":[\n" +
" {\"c\":\"C\",\"d\":\"D\" ,\"e\": {\n" +
@@ -51,12 +51,12 @@ public class TestJsonRecordReader exten
List<Map<String, Object>> records = streamer.getAllRecords(new StringReader(json));
assertEquals(3, records.size());
- assertEquals( 3l, ((Map)records.get(0)).get("e_i") );
- assertEquals( "D2", ((Map)records.get(2)).get("d_s") );
- assertNull( ((Map)records.get(1)).get("e_s") );
- assertNull( ((Map)records.get(2)).get("e_s") );
- assertNull( ((Map)records.get(1)).get("e_i") );
- assertNull( ((Map)records.get(2)).get("e_i") );
+ assertEquals(3l, ((Map) records.get(0)).get("e_i"));
+ assertEquals("D2", ((Map) records.get(2)).get("d_s"));
+ assertNull(((Map) records.get(1)).get("e_s"));
+ assertNull(((Map) records.get(2)).get("e_s"));
+ assertNull(((Map) records.get(1)).get("e_i"));
+ assertNull(((Map) records.get(2)).get("e_i"));
// All parameters but /b/c is omitted
streamer = JsonRecordReader.getInst("/b", Arrays.asList(
@@ -67,7 +67,7 @@ public class TestJsonRecordReader exten
));
records = streamer.getAllRecords(new StringReader(json));
for (Map<String, Object> record : records) {
- assertNull( record.get("c") );
+ assertNull(record.get("c"));
}
@@ -79,8 +79,8 @@ public class TestJsonRecordReader exten
));
records = streamer.getAllRecords(new StringReader(json));
for (Map<String, Object> record : records) {
- assertNull( record.get("s") );
- assertNull( record.get("t") );
+ assertNull(record.get("s"));
+ assertNull(record.get("t"));
}
//nested /b/e/* object is completely ignored even though /b/e is mapped
@@ -93,13 +93,12 @@ public class TestJsonRecordReader exten
));
records = streamer.getAllRecords(new StringReader(json));
for (Map<String, Object> record : records) {
- assertNull( record.get("s") );
- assertNull( record.get("t") );
- assertNull( record.get("e") );
+ assertNull(record.get("s"));
+ assertNull(record.get("t"));
+ assertNull(record.get("e"));
}
-
streamer = JsonRecordReader.getInst("/b", Arrays.asList(
"a_s:/a",
"c_s:/b/c",
@@ -108,18 +107,16 @@ public class TestJsonRecordReader exten
));
records = streamer.getAllRecords(new StringReader(json));
assertEquals(3, records.size());
- assertEquals( 3l, ((Map)records.get(0)).get("t") );
- assertEquals( "S", ((Map)records.get(0)).get("s") );
- assertNull( ((Map)records.get(1)).get("s") );
- assertNull( ((Map)records.get(2)).get("s") );
-
-
+ assertEquals(3l, ((Map) records.get(0)).get("t"));
+ assertEquals("S", ((Map) records.get(0)).get("s"));
+ assertNull(((Map) records.get(1)).get("s"));
+ assertNull(((Map) records.get(2)).get("s"));
}
public void testRecursiveWildCard() throws IOException {
- String json ="{\n" +
+ String json = "{\n" +
" \"a\":\"A\" ,\n" +
" \"b\":[\n" +
" {\"c\":\"C\",\"d\":\"D\" ,\"e\": {\n" +
@@ -135,28 +132,28 @@ public class TestJsonRecordReader exten
streamer = JsonRecordReader.getInst("/b", Collections.singletonList("/b/**"));
records = streamer.getAllRecords(new StringReader(json));
assertEquals(3, records.size());
- assertEquals("records "+records, 3l, ((Map)records.get(0)).get("t") );
- assertEquals( "records "+records,"S", ((Map)records.get(0)).get("s") );
- assertEquals( "records "+records,3.1234, ((Map)records.get(0)).get("v") );
- assertEquals( "records "+records,false, ((Map)records.get(0)).get("w") );
+ assertEquals("records " + records, 3l, ((Map) records.get(0)).get("t"));
+ assertEquals("records " + records, "S", ((Map) records.get(0)).get("s"));
+ assertEquals("records " + records, 3.1234, ((Map) records.get(0)).get("v"));
+ assertEquals("records " + records, false, ((Map) records.get(0)).get("w"));
for (Map<String, Object> record : records) {
- assertNotNull("records "+records,record.get("c"));
- assertNotNull("records "+records,record.get("d"));
+ assertNotNull("records " + records, record.get("c"));
+ assertNotNull("records " + records, record.get("d"));
}
streamer = JsonRecordReader.getInst("/", Collections.singletonList("/**"));
records = streamer.getAllRecords(new StringReader(json));
assertEquals(1, records.size());
- assertEquals(3, ((List)((Map)records.get(0)).get("c")).size() );
- assertEquals(3, ((List)((Map)records.get(0)).get("d")).size() );
- assertEquals("records "+records, 3l, ((Map)records.get(0)).get("t") );
- assertEquals( "records "+records,"S", ((Map)records.get(0)).get("s") );
- assertEquals( "records "+records,"A", ((Map)records.get(0)).get("a") );
- assertEquals( "records "+records,false, ((Map)records.get(0)).get("w") );
+ assertEquals(3, ((List) ((Map) records.get(0)).get("c")).size());
+ assertEquals(3, ((List) ((Map) records.get(0)).get("d")).size());
+ assertEquals("records " + records, 3l, ((Map) records.get(0)).get("t"));
+ assertEquals("records " + records, "S", ((Map) records.get(0)).get("s"));
+ assertEquals("records " + records, "A", ((Map) records.get(0)).get("a"));
+ assertEquals("records " + records, false, ((Map) records.get(0)).get("w"));
}
- public void testRecursiveWildcard2() throws Exception{
+ public void testRecursiveWildcard2() throws Exception {
String json = "{\n" +
" \"first\": \"John\",\n" +
" \"last\": \"Doe\",\n" +
@@ -190,7 +187,7 @@ public class TestJsonRecordReader exten
records = streamer.getAllRecords(new StringReader(json));
assertEquals(2, records.size());
for (Map<String, Object> record : records) {
- assertEquals(6,record.size());
+ assertEquals(6, record.size());
assertTrue(record.containsKey("exams.subject"));
assertTrue(record.containsKey("exams.test"));
assertTrue(record.containsKey("exams.marks"));
@@ -199,7 +196,7 @@ public class TestJsonRecordReader exten
streamer = JsonRecordReader.getInst("/", Collections.singletonList("txt:/**"));
records = streamer.getAllRecords(new StringReader(json));
assertEquals(1, records.size());
- assertEquals(9, ((List)records.get(0).get("txt")).size() );
+ assertEquals(9, ((List) records.get(0).get("txt")).size());
}