Skip to content

Commit

Permalink
removed dependency to json-simple, added a workaround to remove auto-…
Browse files Browse the repository at this point in the history
…indexes as well
  • Loading branch information
jexp committed Jul 21, 2011
1 parent a4792bb commit d6f3d8e
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 18 deletions.
9 changes: 0 additions & 9 deletions pom.xml
Expand Up @@ -99,10 +99,6 @@
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
</exclusion>
<exclusion>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
</exclusion>
<exclusion>
<groupId>de.huxhorn.lilith</groupId>
<artifactId>de.huxhorn.lilith.3rdparty.rrd4j</artifactId>
Expand Down Expand Up @@ -142,11 +138,6 @@
<artifactId>junit</artifactId>
<version>4.8.1</version>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1</version>
</dependency>
</dependencies>

<build>
Expand Down
Expand Up @@ -8,11 +8,10 @@
import com.sun.jersey.api.core.ResourceConfig;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.io.FileUtils;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;
import org.neo4j.kernel.AbstractGraphDatabase;
import org.neo4j.kernel.EmbeddedGraphDatabase;
import org.neo4j.server.database.Database;
import org.neo4j.server.rest.domain.JsonHelper;

import javax.ws.rs.DELETE;
import javax.ws.rs.Path;
Expand Down Expand Up @@ -61,9 +60,9 @@ public Response cleanDb(@PathParam("key") String deleteKey) {
result.putAll(cleanDbDirectory(database));
}
log.warning("Deleted Database: " + result);
return Response.status(Status.OK).entity(JSONObject.toJSONString(result)).build();
return Response.status(Status.OK).entity(JsonHelper.createJsonFrom(result)).build();
} catch (Exception e) {
return Response.status(Status.INTERNAL_SERVER_ERROR).entity(JSONValue.toJSONString(e.getMessage())).build();
return Response.status(Status.INTERNAL_SERVER_ERROR).entity(JsonHelper.createJsonFrom(e.getMessage())).build();
}
}

Expand Down
@@ -1,11 +1,15 @@
package org.neo4j.server.extension.test.delete;

import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.PropertyContainer;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.index.Index;
import org.neo4j.graphdb.index.IndexManager;
import org.neo4j.graphdb.index.RelationshipIndex;
import org.neo4j.kernel.AbstractGraphDatabase;

import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
Expand All @@ -24,12 +28,13 @@ public Neo4jDatabaseCleaner(AbstractGraphDatabase graph) {
public Map<String, Object> cleanDb() {
return cleanDb(Long.MAX_VALUE);
}

public Map<String, Object> cleanDb(long maxNodesToDelete) {
Map<String, Object> result = new HashMap<String, Object>();
Transaction tx = graph.beginTx();
try {
clearIndex(result);
removeNodes(result,maxNodesToDelete);
removeNodes(result, maxNodesToDelete);
tx.success();
} finally {
tx.finish();
Expand Down Expand Up @@ -61,11 +66,32 @@ private void clearIndex(Map<String, Object> result) {
IndexManager indexManager = graph.index();
result.put("node-indexes", Arrays.asList(indexManager.nodeIndexNames()));
result.put("relationship-indexes", Arrays.asList(indexManager.relationshipIndexNames()));
for (String ix : indexManager.nodeIndexNames()) {
indexManager.forNodes(ix).delete();
try {
for (String ix : indexManager.nodeIndexNames()) {
final Index<Node> index = indexManager.forNodes(ix);
getMutableIndex(index).delete();
}
for (String ix : indexManager.relationshipIndexNames()) {
final RelationshipIndex index = indexManager.forRelationships(ix);
getMutableIndex(index).delete();
}
} catch (UnsupportedOperationException uoe) {
throw new RuntimeException("Implementation detail assumption failed for cleaning readonly indexes, please make sure that the version of this extension and the Neo4j server align");
}
for (String ix : indexManager.relationshipIndexNames()) {
indexManager.forRelationships(ix).delete();
}

private <T extends PropertyContainer> Index<T> getMutableIndex(Index<T> index) {
final Class<? extends Index> indexClass = index.getClass();
if (indexClass.getName().endsWith("ReadOnlyIndexToIndexAdapter")) {
try {
final Field delegateIndexField = indexClass.getDeclaredField("delegate");
delegateIndexField.setAccessible(true);
return (Index<T>) delegateIndexField.get(index);
} catch (Exception e) {
throw new UnsupportedOperationException(e);
}
} else {
return index;
}
}
}

0 comments on commit d6f3d8e

Please sign in to comment.