diff options
author | Jesse Wilson <jessewilson@google.com> | 2009-12-10 17:45:56 -0800 |
---|---|---|
committer | Jesse Wilson <jessewilson@google.com> | 2009-12-10 18:00:27 -0800 |
commit | 66e84b9ff30de7c75b510cb9117205368cf5bd25 (patch) | |
tree | 9b49377f14e9eea01d15986f3b091a2a8bb80ca1 /sampleUses | |
parent | b0ccf1cf90b52ec3866bf436a66b208d5aff21d2 (diff) | |
download | android_external_jsr305-66e84b9ff30de7c75b510cb9117205368cf5bd25.tar.gz android_external_jsr305-66e84b9ff30de7c75b510cb9117205368cf5bd25.tar.bz2 android_external_jsr305-66e84b9ff30de7c75b510cb9117205368cf5bd25.zip |
Initial checkin. JSR 305 r49
Diffstat (limited to 'sampleUses')
-rw-r--r-- | sampleUses/.classpath | 7 | ||||
-rw-r--r-- | sampleUses/.project | 17 | ||||
-rw-r--r-- | sampleUses/pom.xml | 26 | ||||
-rw-r--r-- | sampleUses/src/main/java/CreditCardNumber.java | 27 | ||||
-rw-r--r-- | sampleUses/src/main/java/FixedLengthString.java | 26 | ||||
-rw-r--r-- | sampleUses/src/main/java/LuhnVerification.java | 26 | ||||
-rw-r--r-- | sampleUses/src/main/java/SocialSecurityNumber.java | 14 | ||||
-rw-r--r-- | sampleUses/src/main/java/edu/umd/cs/findbugs/DottedClassName.java | 14 | ||||
-rw-r--r-- | sampleUses/src/main/java/edu/umd/cs/findbugs/SlashedClassName.java | 15 | ||||
-rw-r--r-- | sampleUses/src/main/java/edu/umd/cs/findbugs/examples/ParametersAreSlashedByDefault.java | 13 | ||||
-rw-r--r-- | sampleUses/src/main/java/edu/umd/cs/findbugs/examples/Test.java | 31 | ||||
-rw-r--r-- | sampleUses/src/main/java/edu/umd/cs/findbugs/examples/TestDefaults.java | 19 | ||||
-rw-r--r-- | sampleUses/src/main/java/java/sql/ResultSetConcurrency.java | 14 | ||||
-rw-r--r-- | sampleUses/src/main/java/java/sql/ResultSetHoldability.java | 14 | ||||
-rw-r--r-- | sampleUses/src/main/java/java/sql/ResultSetType.java | 14 |
15 files changed, 277 insertions, 0 deletions
diff --git a/sampleUses/.classpath b/sampleUses/.classpath new file mode 100644 index 0000000..f508c72 --- /dev/null +++ b/sampleUses/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src/main/java"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry combineaccessrules="false" kind="src" path="/JSR305-ri"/> + <classpathentry kind="output" path="build/classes"/> +</classpath> diff --git a/sampleUses/.project b/sampleUses/.project new file mode 100644 index 0000000..bfe32bc --- /dev/null +++ b/sampleUses/.project @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>JSR305-uses</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + </natures> +</projectDescription> diff --git a/sampleUses/pom.xml b/sampleUses/pom.xml new file mode 100644 index 0000000..0199223 --- /dev/null +++ b/sampleUses/pom.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.jsr-305</groupId>
+ <artifactId>jsr-305</artifactId>
+ <version>0.1-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.jsr-305</groupId>
+ <artifactId>sampleUses</artifactId>
+ <packaging>jar</packaging>
+ <name>JSR 305 Sample Use Cases</name>
+ <version>0.1-SNAPSHOT</version>
+ <description>Use Cases for JSR-305</description>
+ <dependencies>
+ <dependency>
+ <groupId>org.jsr-305</groupId>
+ <artifactId>ri</artifactId>
+ <version>0.1-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+
+</project>
diff --git a/sampleUses/src/main/java/CreditCardNumber.java b/sampleUses/src/main/java/CreditCardNumber.java new file mode 100644 index 0000000..ef5f711 --- /dev/null +++ b/sampleUses/src/main/java/CreditCardNumber.java @@ -0,0 +1,27 @@ +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +import javax.annotation.MatchesPattern; +import javax.annotation.meta.TypeQualifier; +import javax.annotation.meta.TypeQualifierValidator; +import javax.annotation.meta.When; + +@Documented +@TypeQualifier +@MatchesPattern("[0-9]{16}") +@Retention(RetentionPolicy.RUNTIME) +public @interface CreditCardNumber { + class Checker implements TypeQualifierValidator<CreditCardNumber> { + + public When forConstantValue(CreditCardNumber annotation, Object v) { + if (!(v instanceof String)) + return When.NEVER; + String s = (String) v; + if (LuhnVerification.checkNumber(s)) + return When.ALWAYS; + return When.NEVER; + } + } +} diff --git a/sampleUses/src/main/java/FixedLengthString.java b/sampleUses/src/main/java/FixedLengthString.java new file mode 100644 index 0000000..bf7ba44 --- /dev/null +++ b/sampleUses/src/main/java/FixedLengthString.java @@ -0,0 +1,26 @@ +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +import javax.annotation.meta.TypeQualifier; +import javax.annotation.meta.TypeQualifierValidator; +import javax.annotation.meta.When; + +@Documented +@TypeQualifier(applicableTo=String.class) +@Retention(RetentionPolicy.RUNTIME) +public @interface FixedLengthString { + int value(); + + class Checker implements TypeQualifierValidator<FixedLengthString> { + + public When forConstantValue(FixedLengthString annotation, Object v) { + if (!(v instanceof String)) + return When.NEVER; + String s = (String) v; + if (s.length() == annotation.value()) + return When.ALWAYS; + return When.NEVER; + } + } +}
\ No newline at end of file diff --git a/sampleUses/src/main/java/LuhnVerification.java b/sampleUses/src/main/java/LuhnVerification.java new file mode 100644 index 0000000..f9ad241 --- /dev/null +++ b/sampleUses/src/main/java/LuhnVerification.java @@ -0,0 +1,26 @@ +public class LuhnVerification { + + static boolean checkNumber(String value) { + int result = 0; + boolean special = false; + for (int i = value.length() - 1; i >= 0; i--) { + int v = value.charAt(i) - '0'; + if (v < 0 || v > 9) + return false; + if (special) { + v = v * 2; + if (v > 9) + v = v - 10 + 1; + } + result += v; + special = !special; + } + System.out.println(result); + return result % 10 == 0; + } + + public static void main(String args[]) { + System.out.println(checkNumber("")); + } + +} diff --git a/sampleUses/src/main/java/SocialSecurityNumber.java b/sampleUses/src/main/java/SocialSecurityNumber.java new file mode 100644 index 0000000..a20c21b --- /dev/null +++ b/sampleUses/src/main/java/SocialSecurityNumber.java @@ -0,0 +1,14 @@ +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +import javax.annotation.MatchesPattern; +import javax.annotation.meta.TypeQualifierNickname; + +@Documented +@TypeQualifierNickname +@MatchesPattern("[0-9]{3}-[0-9]{2}-[0-9]{4}") +@Retention(RetentionPolicy.RUNTIME) +public @interface SocialSecurityNumber { +} diff --git a/sampleUses/src/main/java/edu/umd/cs/findbugs/DottedClassName.java b/sampleUses/src/main/java/edu/umd/cs/findbugs/DottedClassName.java new file mode 100644 index 0000000..f8779d0 --- /dev/null +++ b/sampleUses/src/main/java/edu/umd/cs/findbugs/DottedClassName.java @@ -0,0 +1,14 @@ +package edu.umd.cs.findbugs; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +import javax.annotation.meta.TypeQualifierNickname; +import javax.annotation.meta.When; + +@Documented +@SlashedClassName(when=When.NEVER) +@TypeQualifierNickname +@Retention(RetentionPolicy.RUNTIME) +public @interface DottedClassName { }
\ No newline at end of file diff --git a/sampleUses/src/main/java/edu/umd/cs/findbugs/SlashedClassName.java b/sampleUses/src/main/java/edu/umd/cs/findbugs/SlashedClassName.java new file mode 100644 index 0000000..cc06384 --- /dev/null +++ b/sampleUses/src/main/java/edu/umd/cs/findbugs/SlashedClassName.java @@ -0,0 +1,15 @@ +package edu.umd.cs.findbugs; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +import javax.annotation.meta.TypeQualifier; +import javax.annotation.meta.When; + +@Documented +@TypeQualifier(applicableTo=CharSequence.class) +@Retention(RetentionPolicy.RUNTIME) +public @interface SlashedClassName { + When when() default When.ALWAYS; +} diff --git a/sampleUses/src/main/java/edu/umd/cs/findbugs/examples/ParametersAreSlashedByDefault.java b/sampleUses/src/main/java/edu/umd/cs/findbugs/examples/ParametersAreSlashedByDefault.java new file mode 100644 index 0000000..28e30e8 --- /dev/null +++ b/sampleUses/src/main/java/edu/umd/cs/findbugs/examples/ParametersAreSlashedByDefault.java @@ -0,0 +1,13 @@ +package edu.umd.cs.findbugs.examples; + +import java.lang.annotation.ElementType; + +import javax.annotation.meta.TypeQualifierDefault; + +import edu.umd.cs.findbugs.SlashedClassName; + +@SlashedClassName +@TypeQualifierDefault(ElementType.PARAMETER) +public @interface ParametersAreSlashedByDefault { + +} diff --git a/sampleUses/src/main/java/edu/umd/cs/findbugs/examples/Test.java b/sampleUses/src/main/java/edu/umd/cs/findbugs/examples/Test.java new file mode 100644 index 0000000..1246131 --- /dev/null +++ b/sampleUses/src/main/java/edu/umd/cs/findbugs/examples/Test.java @@ -0,0 +1,31 @@ +package edu.umd.cs.findbugs.examples; + +import javax.annotation.meta.When; + +import edu.umd.cs.findbugs.DottedClassName; +import edu.umd.cs.findbugs.SlashedClassName; + +public class Test { + + + public void foo(@SlashedClassName String foo) {} + + public void foo2(@DottedClassName String foo) { + foo(foo); // should get warning here + } + + public void foo3(String foo) { + foo(foo); + } + public void foo4(@DottedClassName String foo) { + foo3(foo); + } + + public void foo5(@SlashedClassName(when=When.MAYBE) String foo) { + foo(foo); + } + public void foo6(@SlashedClassName(when=When.UNKNOWN) String foo) { + foo(foo); + } +} + diff --git a/sampleUses/src/main/java/edu/umd/cs/findbugs/examples/TestDefaults.java b/sampleUses/src/main/java/edu/umd/cs/findbugs/examples/TestDefaults.java new file mode 100644 index 0000000..c6e8013 --- /dev/null +++ b/sampleUses/src/main/java/edu/umd/cs/findbugs/examples/TestDefaults.java @@ -0,0 +1,19 @@ +package edu.umd.cs.findbugs.examples; + +import javax.annotation.meta.When; + +import edu.umd.cs.findbugs.DottedClassName; +import edu.umd.cs.findbugs.SlashedClassName; + +@ParametersAreSlashedByDefault +public class TestDefaults { + public void foo(String c) {} + + public void foo2(@DottedClassName String c) { + foo(c); + } + + public void foo3(@SlashedClassName(when=When.UNKNOWN) String c) { + foo(c); + } +} diff --git a/sampleUses/src/main/java/java/sql/ResultSetConcurrency.java b/sampleUses/src/main/java/java/sql/ResultSetConcurrency.java new file mode 100644 index 0000000..418fa9e --- /dev/null +++ b/sampleUses/src/main/java/java/sql/ResultSetConcurrency.java @@ -0,0 +1,14 @@ +package java.sql; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +import javax.annotation.meta.TypeQualifier; + +@Documented +@TypeQualifier(applicableTo=Integer.class) +@Retention(RetentionPolicy.RUNTIME) +public @interface ResultSetConcurrency { + +} diff --git a/sampleUses/src/main/java/java/sql/ResultSetHoldability.java b/sampleUses/src/main/java/java/sql/ResultSetHoldability.java new file mode 100644 index 0000000..4bfdce2 --- /dev/null +++ b/sampleUses/src/main/java/java/sql/ResultSetHoldability.java @@ -0,0 +1,14 @@ +package java.sql; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +import javax.annotation.meta.TypeQualifier; + +@Documented +@TypeQualifier(applicableTo=Integer.class) +@Retention(RetentionPolicy.RUNTIME) +public @interface ResultSetHoldability { + +} diff --git a/sampleUses/src/main/java/java/sql/ResultSetType.java b/sampleUses/src/main/java/java/sql/ResultSetType.java new file mode 100644 index 0000000..888db2c --- /dev/null +++ b/sampleUses/src/main/java/java/sql/ResultSetType.java @@ -0,0 +1,14 @@ +package java.sql; + +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +import javax.annotation.meta.TypeQualifier; + +@Documented +@TypeQualifier(applicableTo=Integer.class) +@Retention(RetentionPolicy.RUNTIME) +public @interface ResultSetType { + +} |