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();