You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@curator.apache.org by ra...@apache.org on 2016/05/03 17:21:06 UTC
[14/16] curator git commit: Include path in data validator - tests
for data validator
Include path in data validator - tests for data validator
Project: http://git-wip-us.apache.org/repos/asf/curator/repo
Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/450976f3
Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/450976f3
Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/450976f3
Branch: refs/heads/CURATOR-322
Commit: 450976f3d5c629b83d556b4f840ac844bb620830
Parents: 30d83b8
Author: randgalt <ra...@apache.org>
Authored: Mon May 2 23:51:51 2016 -0500
Committer: randgalt <ra...@apache.org>
Committed: Mon May 2 23:51:51 2016 -0500
----------------------------------------------------------------------
.../imps/CuratorMultiTransactionImpl.java | 2 +-
.../framework/imps/SetDataBuilderImpl.java | 2 +-
.../curator/framework/schema/DataValidator.java | 2 +-
.../framework/schema/DefaultDataValidator.java | 2 +-
.../apache/curator/framework/schema/Schema.java | 8 +--
.../curator/framework/schema/TestSchema.java | 57 ++++++++++++++++++--
.../src/test/resources/schema3.json | 7 +++
7 files changed, 69 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/curator/blob/450976f3/curator-framework/src/main/java/org/apache/curator/framework/imps/CuratorMultiTransactionImpl.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/imps/CuratorMultiTransactionImpl.java b/curator-framework/src/main/java/org/apache/curator/framework/imps/CuratorMultiTransactionImpl.java
index 49824da..bfdf40f 100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/CuratorMultiTransactionImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/CuratorMultiTransactionImpl.java
@@ -138,7 +138,7 @@ public class CuratorMultiTransactionImpl implements
else if ( curatorOp.get().getType() == ZooDefs.OpCode.setData )
{
SetDataRequest setDataRequest = (SetDataRequest)curatorOp.get().toRequestRecord();
- schema.validateData(setDataRequest.getData());
+ schema.validateData(setDataRequest.getPath(), setDataRequest.getData());
}
}
http://git-wip-us.apache.org/repos/asf/curator/blob/450976f3/curator-framework/src/main/java/org/apache/curator/framework/imps/SetDataBuilderImpl.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/imps/SetDataBuilderImpl.java b/curator-framework/src/main/java/org/apache/curator/framework/imps/SetDataBuilderImpl.java
index 1f9b335..6a54146 100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/imps/SetDataBuilderImpl.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/imps/SetDataBuilderImpl.java
@@ -241,7 +241,7 @@ class SetDataBuilderImpl implements SetDataBuilder, BackgroundOperation<PathAndB
@Override
public Stat forPath(String path, byte[] data) throws Exception
{
- client.getSchemaSet().getSchema(path).validateData(data);
+ client.getSchemaSet().getSchema(path).validateData(path, data);
if ( compress )
{
http://git-wip-us.apache.org/repos/asf/curator/blob/450976f3/curator-framework/src/main/java/org/apache/curator/framework/schema/DataValidator.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/schema/DataValidator.java b/curator-framework/src/main/java/org/apache/curator/framework/schema/DataValidator.java
index 84e7933..8109f3b 100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/schema/DataValidator.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/schema/DataValidator.java
@@ -20,5 +20,5 @@ package org.apache.curator.framework.schema;
public interface DataValidator
{
- boolean isValid(byte[] data);
+ boolean isValid(String path, byte[] data);
}
http://git-wip-us.apache.org/repos/asf/curator/blob/450976f3/curator-framework/src/main/java/org/apache/curator/framework/schema/DefaultDataValidator.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/schema/DefaultDataValidator.java b/curator-framework/src/main/java/org/apache/curator/framework/schema/DefaultDataValidator.java
index afc38d5..404c389 100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/schema/DefaultDataValidator.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/schema/DefaultDataValidator.java
@@ -24,7 +24,7 @@ package org.apache.curator.framework.schema;
public class DefaultDataValidator implements DataValidator
{
@Override
- public boolean isValid(byte[] data)
+ public boolean isValid(String path, byte[] data)
{
return true;
}
http://git-wip-us.apache.org/repos/asf/curator/blob/450976f3/curator-framework/src/main/java/org/apache/curator/framework/schema/Schema.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/main/java/org/apache/curator/framework/schema/Schema.java b/curator-framework/src/main/java/org/apache/curator/framework/schema/Schema.java
index d7e9be7..6d08244 100644
--- a/curator-framework/src/main/java/org/apache/curator/framework/schema/Schema.java
+++ b/curator-framework/src/main/java/org/apache/curator/framework/schema/Schema.java
@@ -140,18 +140,20 @@ public class Schema
throw new SchemaViolation(this, "Must be sequential");
}
- validateData(data);
+ validateData(path, data);
}
/**
* Validate that this schema validates the data
*
+ *
+ * @param path the znode full path
* @param data data being set
* @throws SchemaViolation if data is invalid
*/
- public void validateData(byte[] data)
+ public void validateData(String path, byte[] data)
{
- if ( !dataValidator.isValid(data) )
+ if ( !dataValidator.isValid(path, data) )
{
throw new SchemaViolation(this, "Data is not valid");
}
http://git-wip-us.apache.org/repos/asf/curator/blob/450976f3/curator-framework/src/test/java/org/apache/curator/framework/schema/TestSchema.java
----------------------------------------------------------------------
diff --git a/curator-framework/src/test/java/org/apache/curator/framework/schema/TestSchema.java b/curator-framework/src/test/java/org/apache/curator/framework/schema/TestSchema.java
index 7f29148..eadae80 100644
--- a/curator-framework/src/test/java/org/apache/curator/framework/schema/TestSchema.java
+++ b/curator-framework/src/test/java/org/apache/curator/framework/schema/TestSchema.java
@@ -35,7 +35,7 @@ public class TestSchema extends BaseClassForTests
@Test
public void testBasics() throws Exception
{
- SchemaSet schemaSet = loadSchemaSet("schema1.json");
+ SchemaSet schemaSet = loadSchemaSet("schema1.json", null);
CuratorFramework client = newClient(schemaSet);
try
{
@@ -60,9 +60,52 @@ public class TestSchema extends BaseClassForTests
}
@Test
+ public void testDataValidator() throws Exception
+ {
+ final DataValidator dataValidator = new DataValidator()
+ {
+ @Override
+ public boolean isValid(String path, byte[] data)
+ {
+ return data.length > 0;
+ }
+ };
+ SchemaSetLoader.DataValidatorMapper dataValidatorMapper = new SchemaSetLoader.DataValidatorMapper()
+ {
+ @Override
+ public DataValidator getDataValidator(String name)
+ {
+ return dataValidator;
+ }
+ };
+ SchemaSet schemaSet = loadSchemaSet("schema3.json", dataValidatorMapper);
+ CuratorFramework client = newClient(schemaSet);
+ try
+ {
+ client.start();
+
+ try
+ {
+ client.create().forPath("/test", new byte[0]);
+ Assert.fail("Should've violated schema");
+ }
+ catch ( SchemaViolation dummy )
+ {
+ // expected
+ }
+
+ client.create().forPath("/test", "good".getBytes());
+ }
+ finally
+ {
+ CloseableUtils.closeQuietly(client);
+ }
+ }
+
+ @Test
public void testMulti() throws Exception
{
- SchemaSet schemaSet = loadSchemaSet("schema2.json");
+ SchemaSet schemaSet = loadSchemaSet("schema2.json", null);
CuratorFramework client = newClient(schemaSet);
try
{
@@ -94,6 +137,12 @@ public class TestSchema extends BaseClassForTests
}
}
+ @Override
+ protected boolean enabledSessionExpiredStateAware()
+ {
+ return true;
+ }
+
private CuratorFramework newClient(SchemaSet schemaSet)
{
return CuratorFrameworkFactory.builder()
@@ -103,9 +152,9 @@ public class TestSchema extends BaseClassForTests
.build();
}
- private SchemaSet loadSchemaSet(String name) throws IOException
+ private SchemaSet loadSchemaSet(String name, SchemaSetLoader.DataValidatorMapper dataValidatorMapper) throws IOException
{
String json = Resources.toString(Resources.getResource(name), Charsets.UTF_8);
- return new SchemaSetLoader(json, null).toSchemaSet(true);
+ return new SchemaSetLoader(json, dataValidatorMapper).toSchemaSet(true);
}
}
http://git-wip-us.apache.org/repos/asf/curator/blob/450976f3/curator-framework/src/test/resources/schema3.json
----------------------------------------------------------------------
diff --git a/curator-framework/src/test/resources/schema3.json b/curator-framework/src/test/resources/schema3.json
new file mode 100644
index 0000000..e777a11
--- /dev/null
+++ b/curator-framework/src/test/resources/schema3.json
@@ -0,0 +1,7 @@
+[
+ {
+ "name": "test",
+ "path": "/test",
+ "dataValidator": "test"
+ }
+]
\ No newline at end of file