Skip to content
Snippets Groups Projects
Commit 786ff5ef authored by Christoph Thelen's avatar Christoph Thelen
Browse files

Add support for querying stale views

parent 3fd3b41f
No related merge requests found
...@@ -28,8 +28,14 @@ import com.fourspaces.couchdb.View; ...@@ -28,8 +28,14 @@ import com.fourspaces.couchdb.View;
public class NovaView extends View { public class NovaView extends View {
public enum StaleMode {
NONE, OK, UPDATE_AFTER
}
protected String keys; protected String keys;
protected StaleMode stale = StaleMode.NONE;
public NovaView(final String fullname) { public NovaView(final String fullname) {
super(fullname); super(fullname);
} }
...@@ -89,6 +95,10 @@ public class NovaView extends View { ...@@ -89,6 +95,10 @@ public class NovaView extends View {
this.keys = toJsonArray(keys.toArray(new String[keys.size()])); this.keys = toJsonArray(keys.toArray(new String[keys.size()]));
} }
public void setStale(StaleMode stale) {
this.stale = stale;
}
@Override @Override
public String getQueryString() { public String getQueryString() {
final String tempQuery = super.getQueryString(); final String tempQuery = super.getQueryString();
...@@ -102,6 +112,16 @@ public class NovaView extends View { ...@@ -102,6 +112,16 @@ public class NovaView extends View {
} }
query.append("keys=" + keys); query.append("keys=" + keys);
} }
if (stale != null && stale != StaleMode.NONE) {
if (query.length() > 0) {
query.append("&");
}
if (stale == StaleMode.OK) {
query.append("stale=ok");
} else if (stale == StaleMode.UPDATE_AFTER) {
query.append("stale=update_after");
}
}
if (query.length() == 0) { if (query.length() == 0) {
return null; return null;
......
...@@ -18,8 +18,7 @@ ...@@ -18,8 +18,7 @@
*/ */
package de.thm.arsnova.dao; package de.thm.arsnova.dao;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.*;
import static org.junit.Assert.fail;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLEncoder; import java.net.URLEncoder;
...@@ -27,6 +26,8 @@ import java.util.Arrays; ...@@ -27,6 +26,8 @@ import java.util.Arrays;
import org.junit.Test; import org.junit.Test;
import de.thm.arsnova.dao.NovaView.StaleMode;
public class NovaViewTest { public class NovaViewTest {
@Test @Test
...@@ -133,6 +134,21 @@ public class NovaViewTest { ...@@ -133,6 +134,21 @@ public class NovaViewTest {
assertEncodedEquals("keys", "[]", v5.getQueryString()); assertEncodedEquals("keys", "[]", v5.getQueryString());
} }
@Test
public void shouldSupportStaleViews() {
final NovaView v1 = new NovaView(null);
final NovaView v2 = new NovaView(null);
final NovaView v3 = new NovaView(null);
final NovaView v4 = new NovaView(null);
v1.setStale(StaleMode.NONE);
v2.setStale(StaleMode.OK);
v3.setStale(StaleMode.UPDATE_AFTER);
assertNull(v1.getQueryString());
assertEncodedEquals("stale", "ok", v2.getQueryString());
assertEncodedEquals("stale", "update_after", v3.getQueryString());
assertNull(v4.getQueryString());
}
private void assertEncodedEquals(final String key, final String expected, final String actual) { private void assertEncodedEquals(final String key, final String expected, final String actual) {
try { try {
assertEquals(key + "=" + URLEncoder.encode(expected, "UTF-8"), actual); assertEquals(key + "=" + URLEncoder.encode(expected, "UTF-8"), actual);
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment