Skip to content
This repository has been archived by the owner on Oct 1, 2018. It is now read-only.

Commit

Permalink
Added support update closure and updateRequest.
Browse files Browse the repository at this point in the history
Closes #14.
  • Loading branch information
evanwong authored and dadoonet committed Jan 14, 2014
1 parent 58477ba commit dbcb2d7
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 0 deletions.
27 changes: 27 additions & 0 deletions src/main/groovy/org/elasticsearch/groovy/client/GClient.groovy
Expand Up @@ -165,6 +165,19 @@ class GClient {
PercolateRequestBuilder.metaClass.source = {Closure c ->
delegate.setSource(new GXContentBuilder().buildAsBytes(c, indexContentType))
}

UpdateRequest.metaClass.setSource = {Closure c ->
delegate.source(new GXContentBuilder().buildAsBytes(c, contentType))
}
UpdateRequest.metaClass.source = {Closure c ->
delegate.source(new GXContentBuilder().buildAsBytes(c, contentType))
}
UpdateRequestBuilder.metaClass.setSource = {Closure c ->
delegate.setSource(new GXContentBuilder().buildAsBytes(c, contentType))
}
UpdateRequestBuilder.metaClass.source = {Closure c ->
delegate.setSource(new GXContentBuilder().buildAsBytes(c, contentType))
}
}

public static XContentType contentType = XContentType.SMILE
Expand Down Expand Up @@ -362,6 +375,20 @@ class GClient {
client.prepareUpdate(index, type, id)
}

GActionFuture<UpdateResponse> update(Closure c) {
UpdateRequest request = new UpdateRequest()
c.resolveStrategy = resolveStrategy
c.setDelegate request
c.call()
update(request)
}

GActionFuture<UpdateResponse> update(UpdateRequest request) {
GActionFuture<UpdateResponse> future = new GActionFuture<UpdateResponse>(internalClient.threadPool(), request)
client.update(request, future)
return future
}

void update(UpdateRequest request, ActionListener<UpdateResponse> listener) {
client.update(request, listener)
}
Expand Down
Expand Up @@ -141,6 +141,44 @@ class SimpleActionsTests {
assertThat search.response.hits.totalHits, equalTo(1l)
assertThat search.response.hits[0].source.test, equalTo('value')


def updateR = node.client.update {
index 'test'
type 'type1'
id '1'
source {
doc {
test = "new value"
}
}
}
assertThat updateR.response.index, equalTo('test')
assertThat updateR.response.type, equalTo('type1')
assertThat updateR.response.id, equalTo('1')

get = node.client.get {
index 'test'
type 'type1'
id '1'
}
assertThat get.response.source['test'], equalTo('new value')

refresh = node.client.admin.indices.refresh {}
assertThat refresh.response.failedShards, equalTo(0)

search = node.client.search {
indices 'test'
types 'type1'
source {
query {
match(test: 'new value')
}
}
}
assertThat search.response.failedShards, equalTo(0)
assertThat search.response.hits.totalHits, equalTo(1l)
assertThat search.response.hits[0].source.test, equalTo('new value')

def deleteByQuery = node.client.deleteByQuery {
indices 'test'
query {
Expand Down

0 comments on commit dbcb2d7

Please sign in to comment.