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 2014/12/10 12:30:27 UTC
svn commit: r1644376 - in /lucene/dev/branches/branch_5x/solr: ./ core/
core/src/java/org/apache/solr/core/ core/src/java/org/apache/solr/handler/
core/src/java/org/apache/solr/handler/admin/
core/src/java/org/apache/solr/request/ core/src/java/org/apa...
Author: noble
Date: Wed Dec 10 11:30:26 2014
New Revision: 1644376
URL: http://svn.apache.org/r1644376
Log:
SOLR-6787 API to manage blobs in Solr
Added:
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/BlobHandler.java
- copied, changed from r1644095, lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/BlobHandler.java
lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java
- copied unchanged from r1644095, lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestBlobHandler.java
Modified:
lucene/dev/branches/branch_5x/solr/ (props changed)
lucene/dev/branches/branch_5x/solr/CHANGES.txt (contents, props changed)
lucene/dev/branches/branch_5x/solr/core/ (props changed)
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/SolrCore.java
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/request/SolrQueryRequestBase.java
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/util/SimplePostTool.java
lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java
lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/servlet/SolrRequestParserTest.java
lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/util/SimplePostToolTest.java
lucene/dev/branches/branch_5x/solr/solrj/ (props changed)
Modified: lucene/dev/branches/branch_5x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/CHANGES.txt?rev=1644376&r1=1644375&r2=1644376&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_5x/solr/CHANGES.txt Wed Dec 10 11:30:26 2014
@@ -194,6 +194,8 @@ New Features
* SOLR-4799: faster join using join="zipper" aka merge join for nested DIH EntityProcessors
(Mikhail Khludnev via Noble Paul)
+* SOLR-6787: API to manage blobs in Solr (Noble Paul)
+
Bug Fixes
----------------------
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/SolrCore.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/SolrCore.java?rev=1644376&r1=1644375&r2=1644376&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/SolrCore.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/core/SolrCore.java Wed Dec 10 11:30:26 2014
@@ -23,6 +23,7 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.io.OutputStream;
import java.io.Writer;
import java.lang.reflect.Constructor;
import java.net.URL;
@@ -64,6 +65,7 @@ import org.apache.lucene.store.Directory
import org.apache.lucene.store.IOContext;
import org.apache.lucene.store.IndexInput;
import org.apache.lucene.store.LockObtainFailedException;
+import org.apache.solr.client.solrj.impl.BinaryResponseParser;
import org.apache.solr.cloud.CloudDescriptor;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.cloud.ClusterState;
@@ -75,6 +77,7 @@ import org.apache.solr.common.util.Execu
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.core.DirectoryFactory.DirContext;
+import org.apache.solr.handler.ReplicationHandler;
import org.apache.solr.handler.RequestHandlerBase;
import org.apache.solr.handler.SnapPuller;
import org.apache.solr.handler.SolrConfigHandler;
@@ -2091,8 +2094,28 @@ public final class SolrCore implements S
m.put("csv", new CSVResponseWriter());
m.put("xsort", new SortingResponseWriter());
m.put("schema.xml", new SchemaXmlResponseWriter());
+ m.put(ReplicationHandler.FILE_STREAM, getFileStreamWriter());
DEFAULT_RESPONSE_WRITERS = Collections.unmodifiableMap(m);
}
+
+ private static BinaryResponseWriter getFileStreamWriter() {
+ return new BinaryResponseWriter(){
+ @Override
+ public void write(OutputStream out, SolrQueryRequest req, SolrQueryResponse response) throws IOException {
+ RawWriter rawWriter = (RawWriter) response.getValues().get(ReplicationHandler.FILE_STREAM);
+ rawWriter.write(out);
+ }
+
+ @Override
+ public String getContentType(SolrQueryRequest request, SolrQueryResponse response) {
+ return BinaryResponseParser.BINARY_CONTENT_TYPE;
+ }
+ };
+ }
+
+ public interface RawWriter {
+ public void write(OutputStream os) throws IOException ;
+ }
/** Configure the query response writers. There will always be a default writer; additional
* writers may also be configured. */
Copied: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/BlobHandler.java (from r1644095, lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/BlobHandler.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/BlobHandler.java?p2=lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/BlobHandler.java&p1=lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/BlobHandler.java&r1=1644095&r2=1644376&rev=1644376&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/BlobHandler.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/BlobHandler.java Wed Dec 10 11:30:26 2014
@@ -27,8 +27,8 @@ import java.util.Date;
import java.util.List;
import java.util.Map;
-import org.apache.lucene.index.StorableField;
-import org.apache.lucene.index.StoredDocument;
+import org.apache.lucene.document.Document;
+import org.apache.lucene.index.IndexableField;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.Sort;
import org.apache.lucene.search.SortField;
@@ -115,7 +115,7 @@ public class BlobHandler extends Request
long version = 0;
if(docs.totalHits >0){
- StoredDocument doc = req.getSearcher().doc(docs.scoreDocs[0].doc);
+ Document doc = req.getSearcher().doc(docs.scoreDocs[0].doc);
Number n = doc.getField("version").numericValue();
version = n.longValue();
}
@@ -154,8 +154,8 @@ public class BlobHandler extends Request
@Override
public void write(OutputStream os) throws IOException {
- StoredDocument doc = req.getSearcher().doc(docs.scoreDocs[0].doc);
- StorableField sf = doc.getField("blob");
+ Document doc = req.getSearcher().doc(docs.scoreDocs[0].doc);
+ IndexableField sf = doc.getField("blob");
FieldType fieldType = req.getSchema().getField("blob").getType();
ByteBuffer buf = (ByteBuffer) fieldType.toObject(sf);
if(buf == null){
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java?rev=1644376&r1=1644375&r2=1644376&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java Wed Dec 10 11:30:26 2014
@@ -860,7 +860,6 @@ public class ReplicationHandler extends
@SuppressWarnings("unchecked")
public void inform(SolrCore core) {
this.core = core;
- registerFileStreamResponseWriter();
registerCloseHook();
Object nbtk = initArgs.get(NUMBER_BACKUPS_TO_KEEP_INIT_PARAM);
if(nbtk!=null) {
@@ -1010,34 +1009,6 @@ public class ReplicationHandler extends
}
/**
- * A ResponseWriter is registered automatically for wt=filestream This response writer is used to transfer index files
- * in a block-by-block manner within the same HTTP response.
- */
- private void registerFileStreamResponseWriter() {
- core.registerResponseWriter(FILE_STREAM, new BinaryQueryResponseWriter() {
- @Override
- public void write(OutputStream out, SolrQueryRequest request, SolrQueryResponse resp) throws IOException {
- DirectoryFileStream stream = (DirectoryFileStream) resp.getValues().get(FILE_STREAM);
- stream.write(out);
- }
-
- @Override
- public void write(Writer writer, SolrQueryRequest request, SolrQueryResponse response) {
- throw new RuntimeException("This is a binary writer , Cannot write to a characterstream");
- }
-
- @Override
- public String getContentType(SolrQueryRequest request, SolrQueryResponse response) {
- return BinaryResponseParser.BINARY_CONTENT_TYPE;
- }
-
- @Override
- public void init(NamedList args) { /*no op*/ }
- });
-
- }
-
- /**
* Register a listener for postcommit/optimize
*
* @param snapshoot do a snapshoot
@@ -1099,7 +1070,7 @@ public class ReplicationHandler extends
/**This class is used to read and send files in the lucene index
*
*/
- private class DirectoryFileStream {
+ private class DirectoryFileStream implements SolrCore.RawWriter {
protected SolrParams params;
protected FastOutputStream fos;
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java?rev=1644376&r1=1644375&r2=1644376&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/RequestHandlerBase.java Wed Dec 10 11:30:26 2014
@@ -21,6 +21,7 @@ import org.apache.solr.common.SolrExcept
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
+import org.apache.solr.core.RequestHandlers;
import org.apache.solr.core.SolrCore;
import org.apache.solr.core.SolrInfoMBean;
import org.apache.solr.request.SolrQueryRequest;
@@ -218,6 +219,9 @@ public abstract class RequestHandlerBase
String firstPart = handlerName.substring(0, idx);
handler = reqHandlers.get(firstPart);
if (handler == null) continue;
+ if(handler instanceof RequestHandlers.LazyRequestHandlerWrapper) {
+ handler = ((RequestHandlers.LazyRequestHandlerWrapper)handler).getWrappedHandler();
+ }
if (handler instanceof NestedRequestHandler) {
return ((NestedRequestHandler) handler).getSubHandler(handlerName.substring(idx));
}
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java?rev=1644376&r1=1644375&r2=1644376&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java Wed Dec 10 11:30:26 2014
@@ -64,6 +64,7 @@ import static org.apache.solr.common.par
import static org.apache.solr.common.params.CollectionParams.CollectionAction.SPLITSHARD;
import java.io.IOException;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -90,6 +91,7 @@ import org.apache.solr.common.cloud.DocC
import org.apache.solr.common.cloud.ImplicitDocRouter;
import org.apache.solr.common.cloud.Replica;
import org.apache.solr.common.cloud.Slice;
+import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.solr.common.cloud.ZkCoreNodeProps;
import org.apache.solr.common.cloud.ZkNodeProps;
import org.apache.solr.common.cloud.ZkStateReader;
@@ -101,9 +103,11 @@ import org.apache.solr.common.params.Sol
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.core.CoreContainer;
+import org.apache.solr.handler.BlobHandler;
import org.apache.solr.handler.RequestHandlerBase;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
+import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -719,7 +723,7 @@ public class CollectionsHandler extends
throw new SolrException(ErrorCode.BAD_REQUEST,
"Collection name is required to create a new collection");
}
-
+
Map<String,Object> props = ZkNodeProps.makeMap(
Overseer.QUEUE_OPERATION,
CREATE.toLower(),
@@ -737,12 +741,38 @@ public class CollectionsHandler extends
AUTO_ADD_REPLICAS,
"router.");
+ if(SYSTEM_COLL.equals(name)){
+ //We must always create asystem collection with only a single shard
+ props.put(NUM_SLICES,1);
+ props.remove(SHARDS_PROP);
+ createSysConfigSet();
+
+ }
copyPropertiesIfNotNull(req.getParams(), props);
ZkNodeProps m = new ZkNodeProps(props);
handleResponse(CREATE.toLower(), m, rsp);
}
+ private void createSysConfigSet() throws KeeperException, InterruptedException {
+ SolrZkClient zk = coreContainer.getZkController().getZkStateReader().getZkClient();
+ createNodeIfNotExists(zk,ZkStateReader.CONFIGS_ZKNODE+"/"+SYSTEM_COLL, null);
+ createNodeIfNotExists(zk,ZkStateReader.CONFIGS_ZKNODE+"/"+SYSTEM_COLL+"/schema.xml", BlobHandler.SCHEMA.replaceAll("'","\"").getBytes(StandardCharsets.UTF_8));
+ createNodeIfNotExists(zk, ZkStateReader.CONFIGS_ZKNODE + "/" + SYSTEM_COLL + "/solrconfig.xml", BlobHandler.CONF.replaceAll("'", "\"").getBytes(StandardCharsets.UTF_8));
+ }
+
+ public static void createNodeIfNotExists(SolrZkClient zk, String path, byte[] data) throws KeeperException, InterruptedException {
+ if(!zk.exists(path, true)){
+ //create the config znode
+ try {
+ zk.create(path,data, CreateMode.PERSISTENT,true);
+ } catch (KeeperException.NodeExistsException e) {
+ //no problem . race condition. carry on the good work
+ }
+ }
+ }
+
+
private void handleRemoveReplica(SolrQueryRequest req, SolrQueryResponse rsp) throws KeeperException, InterruptedException {
log.info("Remove replica: " + req.getParamString());
req.getParams().required().check(COLLECTION_PROP, SHARD_ID_PROP, "replica");
@@ -927,5 +957,6 @@ public class CollectionsHandler extends
public String getDescription() {
return "Manage SolrCloud Collections";
}
+ public static final String SYSTEM_COLL =".system";
}
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/request/SolrQueryRequestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/request/SolrQueryRequestBase.java?rev=1644376&r1=1644375&r2=1644376&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/request/SolrQueryRequestBase.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/request/SolrQueryRequestBase.java Wed Dec 10 11:30:26 2014
@@ -24,6 +24,7 @@ import org.apache.solr.common.params.Sol
import org.apache.solr.common.util.ContentStream;
import org.apache.solr.core.SolrCore;
+import java.io.Closeable;
import java.util.Map;
import java.util.HashMap;
@@ -40,7 +41,7 @@ import java.util.HashMap;
*
*
*/
-public abstract class SolrQueryRequestBase implements SolrQueryRequest {
+public abstract class SolrQueryRequestBase implements SolrQueryRequest, Closeable {
protected final SolrCore core;
protected final SolrParams origParams;
protected volatile IndexSchema schema;
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java?rev=1644376&r1=1644375&r2=1644376&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java Wed Dec 10 11:30:26 2014
@@ -681,10 +681,7 @@ public class SolrRequestParsers
if (ServletFileUpload.isMultipartContent(req)) {
return multipart.parseParamsAndFillStreams(req, streams);
}
- if (req.getContentType() != null) {
- return raw.parseParamsAndFillStreams(req, streams);
- }
- throw new SolrException(ErrorCode.UNSUPPORTED_MEDIA_TYPE, "Must specify a Content-Type header with POST requests");
+ return raw.parseParamsAndFillStreams(req, streams);
}
throw new SolrException(ErrorCode.BAD_REQUEST, "Unsupported method: " + method + " for request " + req);
}
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/util/SimplePostTool.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/util/SimplePostTool.java?rev=1644376&r1=1644375&r2=1644376&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/util/SimplePostTool.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/util/SimplePostTool.java Wed Dec 10 11:30:26 2014
@@ -32,6 +32,8 @@ import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.net.URLEncoder;
+import java.nio.BufferOverflowException;
+import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
@@ -60,6 +62,7 @@ import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
+import org.apache.zookeeper.server.ByteBufferInputStream;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -581,14 +584,14 @@ public class SimplePostTool {
URL postUrl = new URL(appendParam(solrUrl.toString(),
"literal.id="+URLEncoder.encode(u.toString(),"UTF-8") +
"&literal.url="+URLEncoder.encode(u.toString(),"UTF-8")));
- boolean success = postData(new ByteArrayInputStream(result.content), null, out, result.contentType, postUrl);
+ boolean success = postData(new ByteArrayInputStream(result.content.array(), result.content.arrayOffset(),result.content.limit() ), null, out, result.contentType, postUrl);
if (success) {
info("POSTed web resource "+u+" (depth: "+level+")");
Thread.sleep(delay * 1000);
numPages++;
// Pull links from HTML pages only
if(recursive > level && result.contentType.equals("text/html")) {
- Set<URL> children = pageFetcher.getLinksFromWebPage(u, new ByteArrayInputStream(result.content), result.contentType, postUrl);
+ Set<URL> children = pageFetcher.getLinksFromWebPage(u, new ByteBufferInputStream(result.content), result.contentType, postUrl);
subStack.addAll(children);
}
} else {
@@ -609,23 +612,35 @@ public class SimplePostTool {
}
return numPages;
}
+ public static class BAOS extends ByteArrayOutputStream {
+ public ByteBuffer getByteBuffer() {
+ return ByteBuffer.wrap(super.buf,0,super.count);
+ }
+ }
+ public static ByteBuffer inputStreamToByteArray(InputStream is) throws IOException {
+ return inputStreamToByteArray(is,Integer.MAX_VALUE);
+
+ }
/**
* Reads an input stream into a byte array
+ *
* @param is the input stream
* @return the byte array
* @throws IOException If there is a low-level I/O error.
*/
- protected byte[] inputStreamToByteArray(InputStream is) throws IOException {
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ public static ByteBuffer inputStreamToByteArray(InputStream is, long maxSize) throws IOException {
+ BAOS bos = new BAOS();
+ long sz = 0;
int next = is.read();
while (next > -1) {
- bos.write(next);
- next = is.read();
+ if(++sz > maxSize) throw new BufferOverflowException();
+ bos.write(next);
+ next = is.read();
}
bos.flush();
is.close();
- return bos.toByteArray();
+ return bos.getByteBuffer();
}
/**
@@ -1198,6 +1213,6 @@ public class SimplePostTool {
int httpStatus = 200;
String contentType = "text/html";
URL redirectUrl = null;
- byte[] content;
+ ByteBuffer content;
}
}
Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java?rev=1644376&r1=1644375&r2=1644376&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/handler/TestSolrConfigHandlerConcurrent.java Wed Dec 10 11:30:26 2014
@@ -201,6 +201,7 @@ public class TestSolrConfigHandlerConcur
return (Map) ObjectBuilder.getVal(new JSONParser(new StringReader(response)));
} finally {
EntityUtils.consumeQuietly(entity);
+ get.releaseConnection();
}
}
}
Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/servlet/SolrRequestParserTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/servlet/SolrRequestParserTest.java?rev=1644376&r1=1644375&r2=1644376&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/servlet/SolrRequestParserTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/servlet/SolrRequestParserTest.java Wed Dec 10 11:30:26 2014
@@ -17,6 +17,7 @@
package org.apache.solr.servlet;
+import static org.easymock.EasyMock.anyObject;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
@@ -386,15 +387,14 @@ public class SolrRequestParserTest exten
expect(request.getMethod()).andReturn("POST").anyTimes();
expect(request.getContentType()).andReturn(null).anyTimes();
expect(request.getQueryString()).andReturn(null).anyTimes();
+ expect(request.getHeader(anyObject(String.class))).andReturn(null).anyTimes();
replay(request);
SolrRequestParsers parsers = new SolrRequestParsers(h.getCore().getSolrConfig());
try {
parsers.parse(h.getCore(), "/select", request);
- fail("should throw SolrException");
} catch (SolrException e) {
- assertTrue(e.getMessage().startsWith("Must specify a Content-Type header with POST requests"));
- assertEquals(415, e.code());
+ fail("should not throw SolrException");
}
}
}
Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/util/SimplePostToolTest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/util/SimplePostToolTest.java?rev=1644376&r1=1644375&r2=1644376&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/util/SimplePostToolTest.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/util/SimplePostToolTest.java Wed Dec 10 11:30:26 2014
@@ -23,6 +23,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
+import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.HashSet;
@@ -225,7 +226,7 @@ public class SimplePostToolTest extends
}
res.httpStatus = 200;
res.contentType = "text/html";
- res.content = htmlMap.get(u.toString()).getBytes(StandardCharsets.UTF_8);
+ res.content = ByteBuffer.wrap( htmlMap.get(u.toString()).getBytes(StandardCharsets.UTF_8));
return res;
}