You are viewing a plain text version of this content. The canonical link for it is here.
Posted to droids-commits@incubator.apache.org by to...@apache.org on 2013/03/28 08:29:29 UTC
svn commit: r1461977 - in
/incubator/droids/branches/0.2.x-cleanup/droids-solr: ./ conf/ example/
src/documentation/ src/main/java/org/apache/droids/solr/
src/test/java/org/apache/droids/solr/ src/test/resources/
src/test/resources/example/ src/test/re...
Author: tobr
Date: Thu Mar 28 08:29:28 2013
New Revision: 1461977
URL: http://svn.apache.org/r1461977
Log:
refactored the solr handler module
Added:
incubator/droids/branches/0.2.x-cleanup/droids-solr/src/main/java/org/apache/droids/solr/SolrHandlerImpl.java (with props)
incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/java/org/apache/droids/solr/SolrTask.java (with props)
incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/resources/example/
- copied from r1461504, incubator/droids/branches/0.2.x-cleanup/droids-solr/example/
incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/resources/logback.xml (with props)
Removed:
incubator/droids/branches/0.2.x-cleanup/droids-solr/conf/
incubator/droids/branches/0.2.x-cleanup/droids-solr/example/
incubator/droids/branches/0.2.x-cleanup/droids-solr/forrest.properties
incubator/droids/branches/0.2.x-cleanup/droids-solr/src/documentation/
incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/java/org/apache/droids/solr/MockContentEntity.java
Modified:
incubator/droids/branches/0.2.x-cleanup/droids-solr/pom.xml
incubator/droids/branches/0.2.x-cleanup/droids-solr/src/main/java/org/apache/droids/solr/AdvancedSolrHandler.java
incubator/droids/branches/0.2.x-cleanup/droids-solr/src/main/java/org/apache/droids/solr/SolrHandler.java
incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/java/org/apache/droids/solr/AdvancedSolrHandleTest.java
incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/java/org/apache/droids/solr/SolrHandleTest.java
incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/resources/example/conf/schema.xml
incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/resources/example/conf/solrconfig.xml
Modified: incubator/droids/branches/0.2.x-cleanup/droids-solr/pom.xml
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-solr/pom.xml?rev=1461977&r1=1461976&r2=1461977&view=diff
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-solr/pom.xml (original)
+++ incubator/droids/branches/0.2.x-cleanup/droids-solr/pom.xml Thu Mar 28 08:29:28 2013
@@ -15,26 +15,39 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
+ xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
+ <packaging>jar</packaging>
+
<parent>
- <artifactId>droids</artifactId>
<groupId>org.apache.droids</groupId>
+ <artifactId>droids</artifactId>
<version>0.3.0-incubating-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
</parent>
+
<artifactId>droids-solr</artifactId>
- <name>Apache Droids Solr</name>
- <inceptionYear>2007</inceptionYear>
- <description>Apache Droids Solr Integration</description>
- <packaging>jar</packaging>
+ <name>APACHE DROIDS SOLR HANDLER</name>
<properties>
- <solr-release-version>3.6.0</solr-release-version>
+ <solr.version>3.6.0</solr.version>
</properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <configuration>
+ <systemPropertyVariables>
+ <solr.solr.home>${project.build.testOutputDirectory}/example</solr.solr.home>
+ </systemPropertyVariables>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
<dependencies>
<dependency>
<groupId>org.apache.droids</groupId>
@@ -44,13 +57,12 @@
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
- <version>${solr-release-version}</version>
- <exclusions>
- <exclusion>
- <artifactId>commons-logging</artifactId>
- <groupId>commons-logging</groupId>
- </exclusion>
- </exclusions>
+ <version>${solr.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>net.sourceforge.nekohtml</groupId>
+ <artifactId>nekohtml</artifactId>
+ <version>1.9.18</version>
</dependency>
<!-- FOR TESTING -->
<dependency>
@@ -62,19 +74,13 @@
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-core</artifactId>
- <version>${solr-release-version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <version>2.3</version>
+ <version>${solr.version}</version>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-simple</artifactId>
- <version>1.6.4</version>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ <version>${logback.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
Modified: incubator/droids/branches/0.2.x-cleanup/droids-solr/src/main/java/org/apache/droids/solr/AdvancedSolrHandler.java
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-solr/src/main/java/org/apache/droids/solr/AdvancedSolrHandler.java?rev=1461977&r1=1461976&r2=1461977&view=diff
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-solr/src/main/java/org/apache/droids/solr/AdvancedSolrHandler.java (original)
+++ incubator/droids/branches/0.2.x-cleanup/droids-solr/src/main/java/org/apache/droids/solr/AdvancedSolrHandler.java Thu Mar 28 08:29:28 2013
@@ -17,7 +17,6 @@
package org.apache.droids.solr;
import java.io.IOException;
-import java.net.URI;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
@@ -28,9 +27,8 @@ import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.apache.droids.api.ContentEntity;
-import org.apache.droids.api.Handler;
-import org.apache.droids.exception.DroidsException;
+import org.apache.droids.core.DroidsException;
+import org.apache.droids.core.Task;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.common.SolrInputDocument;
@@ -57,13 +55,7 @@ import org.xml.sax.SAXNotSupportedExcept
* - /html[0]/div[0]/p[0]
* - /html[0]/div[1]/p[2]
*/
-public class AdvancedSolrHandler implements Handler {
-
- /**
- * A solr server
- */
- private SolrServer server;
-
+public class AdvancedSolrHandler extends SolrHandler {
/**
* The selectors allow to save specific parts of the document in the index.
* The HashMap's key matches the Solr field.
@@ -81,20 +73,16 @@ public class AdvancedSolrHandler impleme
*/
private SAXParser parser;
- /**
- * @return the current solr server
- */
- public SolrServer getServer() {
- return server;
+
+ public AdvancedSolrHandler(String solrUrl) {
+ super(solrUrl);
}
- /**
- * @param solr a solr server
- */
- public void setServer(SolrServer solr) {
- this.server = solr;
+ public AdvancedSolrHandler(SolrServer solrServer) {
+ super(solrServer);
}
+
/**
* @return the current path selectors
*/
@@ -111,34 +99,32 @@ public class AdvancedSolrHandler impleme
}
/*
- * @see org.apache.droids.api.Handler#handle(java.net.URI, org.apache.droids.api.ContentEntity)
+ * @see org.apache.droids.api.Handler#handle(java.net.URI, org.apache.droids.api.DroidsContentEntity)
*/
@Override
- public void handle(URI uri, ContentEntity entity) throws IOException, DroidsException {
- SolrInputDocument doc = createSolrInputDocument(uri, entity);
+ public void handle(Task task) throws DroidsException, IOException {
+ SolrInputDocument doc = createSolrInputDocument(task);
try {
- server.add(doc);
+ getSolrServer().add(doc);
} catch (SolrServerException e) {
throw new DroidsException(e);
}
}
/**
- * Generates a SolrInputDocument from an URI and a ContentEntity
+ * Generates a SolrInputDocument from an URI and a DroidsContentEntity
* which correspond to the document which need to be saved in the index
*
- * @param uri an uri
- * @param entity an entity
+ * @param task the task
* @return
*/
- private SolrInputDocument createSolrInputDocument(URI uri, ContentEntity entity) {
+ private SolrInputDocument createSolrInputDocument(Task task) {
SolrInputDocument doc = new SolrInputDocument();
- doc.setField("id", uri.getPath());
- doc.setField("name", uri.toASCIIString());
- doc.setField("host", uri.getHost());
- doc.setField("mime", entity.getMimeType());
- doc.setField("content", entity.getParse().getText());
+ doc.setField("id", task.getURI().getPath());
+ doc.setField("name", task.getURI().toASCIIString());
+ doc.setField("contentType", task.getContentEntity().getContentType());
+ doc.setField("content", task.getParserData().getText());
if (parser == null) initParser();
@@ -146,7 +132,7 @@ public class AdvancedSolrHandler impleme
contentHandler.initDocument(doc);
try {
parser.setContentHandler(contentHandler);
- parser.parse(new InputSource(entity.obtainContent()));
+ parser.parse(new InputSource(task.getContentEntity().getContent()));
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
@@ -177,6 +163,16 @@ public class AdvancedSolrHandler impleme
return parser;
}
+ @Override
+ public void finish() {
+
+ }
+
+ @Override
+ public void cleanUp(String query) {
+
+ }
+
/**
* A class that implements a SAX ContentHandler and uses patterns to record documents
* elements in a SolrInputDocuement.
Modified: incubator/droids/branches/0.2.x-cleanup/droids-solr/src/main/java/org/apache/droids/solr/SolrHandler.java
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-solr/src/main/java/org/apache/droids/solr/SolrHandler.java?rev=1461977&r1=1461976&r2=1461977&view=diff
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-solr/src/main/java/org/apache/droids/solr/SolrHandler.java (original)
+++ incubator/droids/branches/0.2.x-cleanup/droids-solr/src/main/java/org/apache/droids/solr/SolrHandler.java Thu Mar 28 08:29:28 2013
@@ -16,39 +16,139 @@
*/
package org.apache.droids.solr;
-import java.io.IOException;
-import java.net.URI;
-
-import org.apache.droids.api.ContentEntity;
-import org.apache.droids.api.Handler;
-import org.apache.droids.exception.DroidsException;
+import org.apache.droids.core.Handler;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.common.SolrInputDocument;
+import org.apache.solr.client.solrj.impl.HttpSolrServer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+/**
+ *
+ *
+ *
+ */
+public abstract class SolrHandler implements Handler {
+
+ private SolrServer solrServer;
+ protected String solrUrl;
-public class SolrHandler implements Handler {
+ protected final static Logger logger = LoggerFactory.getLogger(SolrHandler.class);
- private SolrServer solr;
- @Override
- public void handle(URI uri, ContentEntity entity)
- throws IOException, DroidsException {
- SolrInputDocument doc = createSolrInputDocument(uri, entity);
+ /**
+ * Constructor using a url to set up the connection
+ * to the solr server.
+ *
+ * @param solrUrl the url to the solr server
+ */
+ public SolrHandler(String solrUrl) {
+ this.setSolrUrl(solrUrl);
+ }
+
+ /**
+ * Constructor with the solr server.
+ *
+ * @param solrServer the solr server
+ */
+ public SolrHandler(SolrServer solrServer) {
+ this.solrServer = solrServer;
+ }
+
+
+ /**
+ * Clean the index with the provided query.
+ */
+ public void cleanUp(String query) {
try {
- solr.add(doc);
+ solrServer.deleteByQuery(query);
+ solrServer.optimize();
+ solrServer.commit();
} catch (SolrServerException e) {
- throw new DroidsException(e);
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Finish the handling by committing the data
+ * and optimizing the index.
+ */
+ public void finish() {
+ try {
+ solrServer.commit();
+ solrServer.optimize();
+ } catch (Exception e) {
+ e.printStackTrace();
}
}
- public SolrInputDocument createSolrInputDocument(URI url, ContentEntity entity) {
- SolrInputDocument doc = new SolrInputDocument();
- doc.setField("id", url.getPath());
- doc.setField("name", url.toASCIIString());
- doc.setField("host", url.getHost());
- doc.setField("mime", entity.getMimeType());
- doc.setField("content", entity.getParse().getText());
- return doc;
+ /**
+ * Checks the availability of the solr server.
+ *
+ * @return the availability
+ */
+ public boolean isSolrServerAvailable() throws IOException, SolrServerException {
+ boolean isAvailable = false;
+ if (solrServer.ping().getStatus() < 400) {
+ isAvailable = true;
+ }
+ return isAvailable;
+ }
+
+ /**
+ * Create a new SolrServer instance based on the solr url
+ */
+ private SolrServer createHttpSolrServer() {
+ SolrServer server = null;
+ if (solrUrl != null) {
+ server = new HttpSolrServer(solrUrl);
+ logger.info("created connection to solr server: " + solrUrl);
+ }
+ return server;
+ }
+
+ /**
+ * Set the solr server.
+ *
+ * @param solrServer the solr server
+ */
+ public void setSolrServer(SolrServer solrServer) {
+ this.solrServer = solrServer;
+ }
+
+ /**
+ * Get the solr server.
+ *
+ * @return the solr server instance
+ */
+ public SolrServer getSolrServer() {
+ return solrServer;
}
+
+ /**
+ * Set the url of the solr server
+ *
+ * @param solrUrl the url of the solr server
+ */
+ public void setSolrUrl(String solrUrl) {
+ this.solrUrl = solrUrl;
+ this.solrServer = createHttpSolrServer();
+ }
+
+ /**
+ * Get the url of the solr server.
+ * Can also be null, if the solr server has no url.
+ *
+ * @return the solr url
+ */
+ public String getSolrUrl() {
+ return solrUrl;
+ }
+
}
+
+
Added: incubator/droids/branches/0.2.x-cleanup/droids-solr/src/main/java/org/apache/droids/solr/SolrHandlerImpl.java
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-solr/src/main/java/org/apache/droids/solr/SolrHandlerImpl.java?rev=1461977&view=auto
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-solr/src/main/java/org/apache/droids/solr/SolrHandlerImpl.java (added)
+++ incubator/droids/branches/0.2.x-cleanup/droids-solr/src/main/java/org/apache/droids/solr/SolrHandlerImpl.java Thu Mar 28 08:29:28 2013
@@ -0,0 +1,65 @@
+package org.apache.droids.solr;
+
+import org.apache.droids.core.DroidsException;
+import org.apache.droids.core.ParserData;
+import org.apache.droids.core.Task;
+import org.apache.solr.client.solrj.SolrServer;
+import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.common.SolrInputDocument;
+
+import java.io.IOException;
+
+/**
+ * Implementation of the SolrHandler for handling basic
+ * properties of the task
+ */
+public class SolrHandlerImpl extends SolrHandler {
+
+ public SolrHandlerImpl(String solrUrl) {
+ super(solrUrl);
+ }
+
+ public SolrHandlerImpl(SolrServer solrServer) {
+ super(solrServer);
+ }
+
+ @Override
+ public void handle(Task task) throws DroidsException, IOException {
+ try {
+ if (isSolrServerAvailable()) {
+ getSolrServer().add(createSolrInputDocument(task));
+ }
+ } catch (SolrServerException e) {
+ throw new DroidsException(e);
+ }
+
+ }
+
+ private SolrInputDocument createSolrInputDocument(Task task) {
+ SolrInputDocument doc = new SolrInputDocument();
+ doc.setField("id", task.getURI().getPath());
+ doc.setField("name", task.getURI().toASCIIString());
+ doc.setField("content", task.getParserData().getText());
+ doc.setField("contentType", task.getContentEntity().getContentType());
+ doc.setField("taskDate", task.getTaskDate());
+ doc.setField("depth", task.getDepth());
+ doc.setField("contentLength", task.getContentEntity().getContentLength());
+ doc.setField("charset", task.getContentEntity().getCharset());
+
+ ParserData parserData = task.getParserData();
+ for (String name : parserData.names()) {
+ Object[] values = parserData.getValues(name);
+ if (values.length > 1) {
+ doc.setField(name, parserData.getValues(name));
+ } else {
+ doc.setField(name, parserData.get(name));
+ }
+ }
+
+
+
+ return doc;
+ }
+
+
+}
Propchange: incubator/droids/branches/0.2.x-cleanup/droids-solr/src/main/java/org/apache/droids/solr/SolrHandlerImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/droids/branches/0.2.x-cleanup/droids-solr/src/main/java/org/apache/droids/solr/SolrHandlerImpl.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: incubator/droids/branches/0.2.x-cleanup/droids-solr/src/main/java/org/apache/droids/solr/SolrHandlerImpl.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/java/org/apache/droids/solr/AdvancedSolrHandleTest.java
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/java/org/apache/droids/solr/AdvancedSolrHandleTest.java?rev=1461977&r1=1461976&r2=1461977&view=diff
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/java/org/apache/droids/solr/AdvancedSolrHandleTest.java (original)
+++ incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/java/org/apache/droids/solr/AdvancedSolrHandleTest.java Thu Mar 28 08:29:28 2013
@@ -16,14 +16,15 @@
*/
package org.apache.droids.solr;
+import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.HashMap;
-import junit.framework.TestCase;
-
-import org.apache.droids.exception.DroidsException;
+import org.apache.droids.core.ContentEntity;
+import org.apache.droids.core.DroidsException;
+import org.apache.droids.core.Task;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
@@ -31,11 +32,13 @@ import org.apache.solr.client.solrj.embe
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.core.CoreContainer;
-import org.apache.solr.core.CoreDescriptor;
-import org.apache.solr.core.SolrCore;
-import org.apache.solr.core.SolrResourceLoader;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
-public class AdvancedSolrHandleTest extends TestCase {
+public class AdvancedSolrHandleTest {
SolrServer solr;
@@ -59,19 +62,14 @@ public class AdvancedSolrHandleTest exte
return "example";
}
- @Override
+ @Before
public void setUp() throws Exception {
- super.setUp();
-
- SolrResourceLoader loader = new SolrResourceLoader(getSolrHome());
- CoreContainer container = new CoreContainer(loader);
- CoreDescriptor descriptor = new CoreDescriptor(container, "cname", ".");
- SolrCore core = container.create(descriptor);
- container.register(core.getName(), core, false);
-
- solr = new EmbeddedSolrServer(container, core.getName());
+ CoreContainer.Initializer initializer = new CoreContainer.Initializer();
+ CoreContainer coreContainer = initializer.initialize();
+ solr = new EmbeddedSolrServer(coreContainer, "");
}
+ @After
public void tearDown() throws Exception {
// remove everything....
solr.deleteByQuery("*:*");
@@ -79,19 +77,20 @@ public class AdvancedSolrHandleTest exte
}
public void performSelection(String html, String field, String selector, String expectedValue) throws IOException, DroidsException, URISyntaxException, SolrServerException {
- AdvancedSolrHandler handler = new AdvancedSolrHandler();
- handler.setServer(solr);
+ AdvancedSolrHandler handler = new AdvancedSolrHandler(solr);
HashMap<String, String> selectors = new HashMap<String, String>();
selectors.put(field, selector);
handler.setSelectors(selectors);
- MockContentEntity contentEntity = new MockContentEntity();
+ Task task = new SolrTask(new URI("http://localhost/"));
+
+ ContentEntity contentEntity = task.getContentEntity();
+ contentEntity.setContentType("text/html");
contentEntity.setCharset("UTF-8");
- contentEntity.setMimeType("text/html");
- contentEntity.setText(html);
+ contentEntity.setContent(new ByteArrayInputStream(html.getBytes("UTF-8")));
- handler.handle(new URI("http://localhost/"), contentEntity);
+ handler.handle(task);
solr.commit();
SolrQuery query = new SolrQuery();
@@ -105,14 +104,17 @@ public class AdvancedSolrHandleTest exte
assertEquals(expectedValue, value);
}
+ @Test
public void testSelectorA() throws Exception {
performSelection(simpleHtmlPage, "selector", "/html[0]/body[0]/div[0]/p[0]", "p0");
}
+ @Test
public void testSelectorB() throws Exception {
performSelection(simpleHtmlPage, "selector", "/html[0]/body[0]/div[1]/p[1]", "p4");
}
+ @Test
public void testSelectorC() throws Exception {
performSelection(simpleHtmlPage, "selector", "/html[0]/body[0]/div[1]", "p3p4p5");
}
Modified: incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/java/org/apache/droids/solr/SolrHandleTest.java
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/java/org/apache/droids/solr/SolrHandleTest.java?rev=1461977&r1=1461976&r2=1461977&view=diff
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/java/org/apache/droids/solr/SolrHandleTest.java (original)
+++ incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/java/org/apache/droids/solr/SolrHandleTest.java Thu Mar 28 08:29:28 2013
@@ -16,60 +16,43 @@
*/
package org.apache.droids.solr;
-import junit.framework.TestCase;
-
+import org.apache.droids.core.Task;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
-import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.core.CoreContainer;
-import org.apache.solr.core.CoreDescriptor;
-import org.apache.solr.core.SolrCore;
-import org.apache.solr.core.SolrResourceLoader;
-
-public class SolrHandleTest extends TestCase {
+import org.junit.Test;
+import org.xml.sax.SAXException;
- SolrServer solr;
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.IOException;
+import java.net.URI;
- protected String getSolrHome() {
- return "example";
- }
+import static junit.framework.Assert.assertEquals;
- @Override
- public void setUp() throws Exception {
- super.setUp();
-
- SolrResourceLoader loader = new SolrResourceLoader(getSolrHome());
- CoreContainer container = new CoreContainer(loader);
- CoreDescriptor descriptor = new CoreDescriptor(container,
- "cname", ".");
- SolrCore core = container.create(descriptor);
- container.register(core.getName(), core, false);
+public class SolrHandleTest {
- solr = new EmbeddedSolrServer(container, core.getName());
- }
+ SolrHandler solrHandler;
- public void tearDown() throws Exception {
- // remove everything....
- solr.deleteByQuery("*:*");
- solr.commit();
+ public SolrHandleTest() throws ParserConfigurationException, SAXException, IOException {
+ CoreContainer.Initializer initializer = new CoreContainer.Initializer();
+ CoreContainer coreContainer = initializer.initialize();
+ SolrServer solr = new EmbeddedSolrServer(coreContainer, "");
+ solrHandler = new SolrHandlerImpl(solr);
}
- public void testHello() throws Exception {
- SolrInputDocument doc = new SolrInputDocument();
- doc.addField("id", "aaaa");
- solr.add(doc);
- solr.commit();
- assertEquals(1, solr.query(new SolrQuery("*:*")).getResults().getNumFound());
- }
+ @Test
+ public void testHandling() throws Exception {
+ Task task = new SolrTask(new URI("http://localhost/"));
+ solrHandler.handle(task);
+ assertEquals(0, solrHandler.getSolrServer().query(new SolrQuery("*:*")).getResults().getNumFound());
+ solrHandler.finish();
+ assertEquals(1, solrHandler.getSolrServer().query(new SolrQuery("*:*")).getResults().getNumFound());
- public void testAfter() throws Exception {
- SolrInputDocument doc = new SolrInputDocument();
- doc.addField("id", "bbbb");
- solr.add(doc);
- solr.commit();
- assertEquals(1, solr.query(new SolrQuery("*:*")).getResults().getNumFound());
+ solrHandler.cleanUp("*:*");
+ assertEquals(0, solrHandler.getSolrServer().query(new SolrQuery("*:*")).getResults().getNumFound());
}
+
}
\ No newline at end of file
Added: incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/java/org/apache/droids/solr/SolrTask.java
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/java/org/apache/droids/solr/SolrTask.java?rev=1461977&view=auto
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/java/org/apache/droids/solr/SolrTask.java (added)
+++ incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/java/org/apache/droids/solr/SolrTask.java Thu Mar 28 08:29:28 2013
@@ -0,0 +1,70 @@
+package org.apache.droids.solr;
+
+import org.apache.droids.core.ContentEntity;
+import org.apache.droids.core.ParserData;
+import org.apache.droids.core.Task;
+
+import java.net.URI;
+import java.util.Date;
+
+public class SolrTask implements Task {
+ private URI uri;
+ private ContentEntity contentEntity;
+ private ParserData parserData;
+ private int depth;
+ private Date taskDate;
+ private boolean abort;
+
+ public SolrTask(URI uri) {
+ this(uri, 0);
+ }
+
+ public SolrTask(URI uri, int depth) {
+ this.uri = uri;
+ this.depth = depth;
+ this.taskDate = new Date();
+ this.contentEntity = new ContentEntity();
+ this.parserData = new ParserData();
+ }
+
+ @Override
+ public URI getURI() {
+ return uri;
+ }
+
+ @Override
+ public ContentEntity getContentEntity() {
+ return contentEntity;
+ }
+
+ @Override
+ public ParserData getParserData() {
+ return parserData;
+ }
+
+ @Override
+ public int getDepth() {
+ return depth;
+ }
+
+ @Override
+ public Date getTaskDate() {
+ return taskDate;
+ }
+
+ @Override
+ public void abort() {
+ abort = true;
+ }
+
+ @Override
+ public boolean isAborted() {
+ return abort;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Task createTask(URI uri) {
+ return new SolrTask(uri);
+ }
+}
Propchange: incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/java/org/apache/droids/solr/SolrTask.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/java/org/apache/droids/solr/SolrTask.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/java/org/apache/droids/solr/SolrTask.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/resources/example/conf/schema.xml
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/resources/example/conf/schema.xml?rev=1461977&r1=1461504&r2=1461977&view=diff
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/resources/example/conf/schema.xml (original)
+++ incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/resources/example/conf/schema.xml Thu Mar 28 08:29:28 2013
@@ -63,10 +63,16 @@
<fields>
<field name="id" type="string" indexed="true" stored="true" required="true"/>
<field name="name" type="string" indexed="true" stored="true"/>
- <field name="host" type="string" indexed="true" stored="true"/>
<field name="mime" type="string" indexed="true" stored="true"/>
<field name="content" type="text" indexed="true" stored="true"/>
+ <field name="contentType" type="string" indexed="true" stored="true"/>
<field name="selector" type="text" indexed="true" stored="true"/>
+ <field name="taskDate" type="date" indexed="true" stored="true"/>
+ <field name="depth" type="integer" indexed="true" stored="true"/>
+ <field name="contentLength" type="long" indexed="true" stored="true"/>
+ <field name="charset" type="string" indexed="true" stored="true"/>
+
+
</fields>
Modified: incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/resources/example/conf/solrconfig.xml
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/resources/example/conf/solrconfig.xml?rev=1461977&r1=1461504&r2=1461977&view=diff
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/resources/example/conf/solrconfig.xml (original)
+++ incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/resources/example/conf/solrconfig.xml Thu Mar 28 08:29:28 2013
@@ -171,7 +171,7 @@
-->
<requestDispatcher handleSelect="true"/>
- <requestHandler name="standard" class="solr.SearchHandler" default="true">
+ <requestHandler name="search" class="solr.SearchHandler" default="true">
<!-- default values for query parameters -->
<lst name="defaults">
<str name="echoParams">explicit</str>
@@ -186,5 +186,13 @@
<requestHandler name="/update" class="solr.XmlUpdateRequestHandler"/>
<requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers"/>
+ <!-- ping/healthcheck -->
+ <requestHandler name="/admin/ping" class="solr.PingRequestHandler">
+ <lst name="defaults">
+ <str name="qt">search</str>
+ <str name="q">solrpingquery</str>
+ <str name="echoParams">all</str>
+ </lst>
+ </requestHandler>
</config>
Added: incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/resources/logback.xml
URL: http://svn.apache.org/viewvc/incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/resources/logback.xml?rev=1461977&view=auto
==============================================================================
--- incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/resources/logback.xml (added)
+++ incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/resources/logback.xml Thu Mar 28 08:29:28 2013
@@ -0,0 +1,17 @@
+<configuration>
+
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+ <!-- encoders are assigned the type
+ ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
+ <encoder>
+ <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
+ </encoder>
+ </appender>
+
+ <logger name="org.apache.droids" level="info"/>
+
+
+ <root level="error">
+ <appender-ref ref="STDOUT"/>
+ </root>
+</configuration>
\ No newline at end of file
Propchange: incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/resources/logback.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/resources/logback.xml
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: incubator/droids/branches/0.2.x-cleanup/droids-solr/src/test/resources/logback.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml