Author: jbellis
Date: Wed Nov 9 18:29:30 2011
New Revision: 1199909
URL: http://svn.apache.org/viewvc?rev=1199909&view=rev
Log:
update Descriptor to use a regexp for validation
patch by ymorishita; reviewed by jbellis for CASSANDRA-3470
Modified:
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/io/sstable/Descriptor.java
cassandra/branches/cassandra-1.0/test/unit/org/apache/cassandra/io/sstable/DescriptorTest.java
Modified:
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/io/sstable/Descriptor.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/io/sstable/Descriptor.java?rev=1199909&r1=1199908&r2=1199909&view=diff
==============================================================================
---
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/io/sstable/Descriptor.java
(original)
+++
cassandra/branches/cassandra-1.0/src/java/org/apache/cassandra/io/sstable/Descriptor.java
Wed Nov 9 18:29:30 2011
@@ -51,6 +51,7 @@ public class Descriptor
public static final String CURRENT_VERSION = "h";
public final File directory;
+ /** version has the following format: <code>[a-z]+</code> */
public final String version;
public final String ksname;
public final String cfname;
@@ -242,16 +243,12 @@ public class Descriptor
/**
* @param ver SSTable version
- * @return True if the given version string is not empty, and
- * contains all lowercase letters, as defined by java.lang.Character.
+ * @return True if the given version string matches the format.
+ * @see #version
*/
static boolean versionValidate(String ver)
{
- if (ver.length() < 1) return false;
- for (char ch : ver.toCharArray())
- if (!Character.isLetter(ch) || !Character.isLowerCase(ch))
- return false;
- return true;
+ return ver != null && ver.matches("[a-z]+");
}
public boolean isFromTheFuture()
Modified:
cassandra/branches/cassandra-1.0/test/unit/org/apache/cassandra/io/sstable/DescriptorTest.java
URL:
http://svn.apache.org/viewvc/cassandra/branches/cassandra-1.0/test/unit/org/apache/cassandra/io/sstable/DescriptorTest.java?rev=1199909&r1=1199908&r2=1199909&view=diff
==============================================================================
---
cassandra/branches/cassandra-1.0/test/unit/org/apache/cassandra/io/sstable/DescriptorTest.java
(original)
+++
cassandra/branches/cassandra-1.0/test/unit/org/apache/cassandra/io/sstable/DescriptorTest.java
Wed Nov 9 18:29:30 2011
@@ -49,6 +49,25 @@ public class DescriptorTest
assertKeyspace("Keyspace11", dirPath);
}
+ @Test
+ public void testVersion()
+ {
+ // letter only
+ Descriptor desc = Descriptor.fromFilename(new File("Keyspace1"),
"Standard1-h-1-Data.db").left;
+ assert "h".equals(desc.version);
+ assert desc.tracksMaxTimestamp;
+
+ // multiple letters
+ desc = Descriptor.fromFilename(new File("Keyspace1"),
"Standard1-ha-1-Data.db").left;
+ assert "ha".equals(desc.version);
+ assert desc.tracksMaxTimestamp;
+
+ // hypothetical two-letter g version
+ desc = Descriptor.fromFilename(new File("Keyspace1"),
"Standard1-gz-1-Data.db").left;
+ assert "gz".equals(desc.version);
+ assert !desc.tracksMaxTimestamp;
+ }
+
private void assertKeyspace(String expectedKsName, String dirPath) {
File dir = new File(dirPath);
dir.deleteOnExit();