Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/src/main/java/org/apache/commons/lang3/annotation/concurrent/clazz/GuardedBy.java b/src/main/java/org/apache/commons/lang3/annotation/concurrent/clazz/GuardedBy.java
- new file mode 100644
- index 0000000..74d3492
- --- /dev/null
- +++ b/src/main/java/org/apache/commons/lang3/annotation/concurrent/clazz/GuardedBy.java
- @@ -0,0 +1,59 @@
- +package org.apache.commons.lang3.annotation.concurrent.clazz;
- +
- +import java.lang.annotation.ElementType;
- +import java.lang.annotation.Retention;
- +import java.lang.annotation.RetentionPolicy;
- +import java.lang.annotation.Target;
- +
- +/*
- + * Copyright (c) 2005 Brian Goetz
- + * Released under the Creative Commons Attribution License
- + * (http://creativecommons.org/licenses/by/2.5)
- + * Official home: http://www.jcip.net
- + */
- +
- +/**
- + * GuardedBy
- + *
- + * The field or method to which this annotation is applied can only be accessed
- + * when holding a particular lock, which may be a built-in (synchronization)
- + * lock, or may be an explicit java.util.concurrent.Lock.
- + *
- + * The argument determines which lock guards the annotated field or method: this
- + * : The string literal "this" means that this field is guarded by the class in
- + * which it is defined. class-name.this : For inner classes, it may be necessary
- + * to disambiguate 'this'; the class-name.this designation allows you to specify
- + * which 'this' reference is intended itself : For reference fields only; the
- + * object to which the field refers. field-name : The lock object is referenced
- + * by the (instance or static) field specified by field-name.
- + * class-name.field-name : The lock object is reference by the static field
- + * specified by class-name.field-name. method-name() : The lock object is
- + * returned by calling the named nil-ary method. class-name.class : The Class
- + * object for the specified class should be used as the lock object.
- + */
- +@Target({ ElementType.FIELD, ElementType.METHOD })
- +@Retention(RetentionPolicy.CLASS)
- +public @interface GuardedBy {
- +
- + /**
- + * The field or method to which this annotation is applied can only be
- + * accessed when holding a particular lock, which may be a built-in
- + * (synchronization) lock, or may be an explicit java.util.concurrent.Lock.
- + *
- + * The argument determines which lock guards the annotated field or method:
- + * this : The string literal "this" means that this field is guarded by the
- + * class in which it is defined. class-name.this : For inner classes, it may
- + * be necessary to disambiguate 'this'; the class-name.this designation
- + * allows you to specify which 'this' reference is intended itself : For
- + * reference fields only; the object to which the field refers. field-name :
- + * The lock object is referenced by the (instance or static) field specified
- + * by field-name. class-name.field-name : The lock object is reference by
- + * the static field specified by class-name.field-name. method-name() : The
- + * lock object is returned by calling the named nil-ary method.
- + * class-name.class : The Class object for the specified class should be
- + * used as the lock object.
- + *
- + * @return see description
- + */
- + String value();
- +}
- diff --git a/src/main/java/org/apache/commons/lang3/annotation/concurrent/clazz/Immutable.java b/src/main/java/org/apache/commons/lang3/annotation/concurrent/clazz/Immutable.java
- new file mode 100644
- index 0000000..129d7fb
- --- /dev/null
- +++ b/src/main/java/org/apache/commons/lang3/annotation/concurrent/clazz/Immutable.java
- @@ -0,0 +1,38 @@
- +package org.apache.commons.lang3.annotation.concurrent.clazz;
- +
- +
- +import java.lang.annotation.Documented;
- +import java.lang.annotation.ElementType;
- +import java.lang.annotation.Retention;
- +import java.lang.annotation.RetentionPolicy;
- +import java.lang.annotation.Target;
- +
- +/*
- + * Copyright (c) 2005 Brian Goetz
- + * Released under the Creative Commons Attribution License
- + * (http://creativecommons.org/licenses/by/2.5)
- + * Official home: http://www.jcip.net
- + */
- +
- +/**
- + * Immutable
- + *
- + * The class to which this annotation is applied is immutable. This means that
- + * its state cannot be seen to change by callers. Of necessity this means that
- + * all public fields are final, and that all public final reference fields refer
- + * to other immutable objects, and that methods do not publish references to any
- + * internal state which is mutable by implementation even if not by design.
- + * Immutable objects may still have internal mutable state for purposes of
- + * performance optimization; some state variables may be lazily computed, so
- + * long as they are computed from immutable state and that callers cannot tell
- + * the difference.
- + *
- + * Immutable objects are inherently thread-safe; they may be passed between
- + * threads or published without synchronization.
- + */
- +@Documented
- +@Target(ElementType.TYPE)
- +@Retention(RetentionPolicy.CLASS)
- +public @interface Immutable {
- + // marker annotation, empty body
- +}
- diff --git a/src/main/java/org/apache/commons/lang3/annotation/concurrent/clazz/NotThreadSafe.java b/src/main/java/org/apache/commons/lang3/annotation/concurrent/clazz/NotThreadSafe.java
- new file mode 100644
- index 0000000..26552af
- --- /dev/null
- +++ b/src/main/java/org/apache/commons/lang3/annotation/concurrent/clazz/NotThreadSafe.java
- @@ -0,0 +1,31 @@
- +package org.apache.commons.lang3.annotation.concurrent.clazz;
- +
- +import java.lang.annotation.Documented;
- +import java.lang.annotation.ElementType;
- +import java.lang.annotation.Retention;
- +import java.lang.annotation.RetentionPolicy;
- +import java.lang.annotation.Target;
- +
- +/*
- + * Copyright (c) 2005 Brian Goetz
- + * Released under the Creative Commons Attribution License
- + * (http://creativecommons.org/licenses/by/2.5)
- + * Official home: http://www.jcip.net
- + */
- +
- +/**
- + * NotThreadSafe
- + *
- + * The class to which this annotation is applied is not thread-safe. This
- + * annotation primarily exists for clarifying the non-thread-safety of a class
- + * that might otherwise be assumed to be thread-safe, despite the fact that it
- + * is a bad idea to assume a class is thread-safe without good reason.
- + *
- + * @see ThreadSafe
- + */
- +@Documented
- +@Target(ElementType.TYPE)
- +@Retention(RetentionPolicy.CLASS)
- +public @interface NotThreadSafe {
- + // marker annotation, empty body
- +}
- diff --git a/src/main/java/org/apache/commons/lang3/annotation/concurrent/clazz/ThreadSafe.java b/src/main/java/org/apache/commons/lang3/annotation/concurrent/clazz/ThreadSafe.java
- new file mode 100644
- index 0000000..f0f0ef4
- --- /dev/null
- +++ b/src/main/java/org/apache/commons/lang3/annotation/concurrent/clazz/ThreadSafe.java
- @@ -0,0 +1,31 @@
- +package org.apache.commons.lang3.annotation.concurrent.clazz;
- +
- +import java.lang.annotation.Documented;
- +import java.lang.annotation.ElementType;
- +import java.lang.annotation.Retention;
- +import java.lang.annotation.RetentionPolicy;
- +import java.lang.annotation.Target;
- +
- +/*
- + * Copyright (c) 2005 Brian Goetz and Tim Peierls
- + * Released under the Creative Commons Attribution License
- + * (http://creativecommons.org/licenses/by/2.5)
- + * Official home: http://www.jcip.net
- + *
- + * Any republication or derived work distributed in source code form
- + * must include this copyright and license notice.
- + */
- +
- +/**
- + * The class to which this annotation is applied is thread-safe. This means that
- + * no sequences of accesses (reads and writes to public fields, calls to public methods)
- + * may put the object into an invalid state, regardless of the interleaving of those actions
- + * by the runtime, and without requiring any additional synchronization or coordination on the
- + * part of the caller.
- + */
- +@Documented
- +@Target(ElementType.TYPE)
- +@Retention(RetentionPolicy.CLASS)
- +public @interface ThreadSafe {
- + // marker annotation, empty body
- +}
- diff --git a/src/main/java/org/apache/commons/lang3/annotation/concurrent/runtime/GuardedBy.java b/src/main/java/org/apache/commons/lang3/annotation/concurrent/runtime/GuardedBy.java
- new file mode 100644
- index 0000000..41a90ac
- --- /dev/null
- +++ b/src/main/java/org/apache/commons/lang3/annotation/concurrent/runtime/GuardedBy.java
- @@ -0,0 +1,59 @@
- +package org.apache.commons.lang3.annotation.concurrent.runtime;
- +
- +import java.lang.annotation.ElementType;
- +import java.lang.annotation.Retention;
- +import java.lang.annotation.RetentionPolicy;
- +import java.lang.annotation.Target;
- +
- +/*
- + * Copyright (c) 2005 Brian Goetz
- + * Released under the Creative Commons Attribution License
- + * (http://creativecommons.org/licenses/by/2.5)
- + * Official home: http://www.jcip.net
- + */
- +
- +/**
- + * GuardedBy
- + *
- + * The field or method to which this annotation is applied can only be accessed
- + * when holding a particular lock, which may be a built-in (synchronization)
- + * lock, or may be an explicit java.util.concurrent.Lock.
- + *
- + * The argument determines which lock guards the annotated field or method: this
- + * : The string literal "this" means that this field is guarded by the class in
- + * which it is defined. class-name.this : For inner classes, it may be necessary
- + * to disambiguate 'this'; the class-name.this designation allows you to specify
- + * which 'this' reference is intended itself : For reference fields only; the
- + * object to which the field refers. field-name : The lock object is referenced
- + * by the (instance or static) field specified by field-name.
- + * class-name.field-name : The lock object is reference by the static field
- + * specified by class-name.field-name. method-name() : The lock object is
- + * returned by calling the named nil-ary method. class-name.class : The Class
- + * object for the specified class should be used as the lock object.
- + */
- +@Target({ ElementType.FIELD, ElementType.METHOD })
- +@Retention(RetentionPolicy.RUNTIME)
- +public @interface GuardedBy {
- +
- + /**
- + * The field or method to which this annotation is applied can only be
- + * accessed when holding a particular lock, which may be a built-in
- + * (synchronization) lock, or may be an explicit java.util.concurrent.Lock.
- + *
- + * The argument determines which lock guards the annotated field or method:
- + * this : The string literal "this" means that this field is guarded by the
- + * class in which it is defined. class-name.this : For inner classes, it may
- + * be necessary to disambiguate 'this'; the class-name.this designation
- + * allows you to specify which 'this' reference is intended itself : For
- + * reference fields only; the object to which the field refers. field-name :
- + * The lock object is referenced by the (instance or static) field specified
- + * by field-name. class-name.field-name : The lock object is reference by
- + * the static field specified by class-name.field-name. method-name() : The
- + * lock object is returned by calling the named nil-ary method.
- + * class-name.class : The Class object for the specified class should be
- + * used as the lock object.
- + *
- + * @return see description
- + */
- + String value();
- +}
- diff --git a/src/main/java/org/apache/commons/lang3/annotation/concurrent/runtime/Immutable.java b/src/main/java/org/apache/commons/lang3/annotation/concurrent/runtime/Immutable.java
- new file mode 100644
- index 0000000..74b89e7
- --- /dev/null
- +++ b/src/main/java/org/apache/commons/lang3/annotation/concurrent/runtime/Immutable.java
- @@ -0,0 +1,38 @@
- +package org.apache.commons.lang3.annotation.concurrent.runtime;
- +
- +
- +import java.lang.annotation.Documented;
- +import java.lang.annotation.ElementType;
- +import java.lang.annotation.Retention;
- +import java.lang.annotation.RetentionPolicy;
- +import java.lang.annotation.Target;
- +
- +/*
- + * Copyright (c) 2005 Brian Goetz
- + * Released under the Creative Commons Attribution License
- + * (http://creativecommons.org/licenses/by/2.5)
- + * Official home: http://www.jcip.net
- + */
- +
- +/**
- + * Immutable
- + *
- + * The class to which this annotation is applied is immutable. This means that
- + * its state cannot be seen to change by callers. Of necessity this means that
- + * all public fields are final, and that all public final reference fields refer
- + * to other immutable objects, and that methods do not publish references to any
- + * internal state which is mutable by implementation even if not by design.
- + * Immutable objects may still have internal mutable state for purposes of
- + * performance optimization; some state variables may be lazily computed, so
- + * long as they are computed from immutable state and that callers cannot tell
- + * the difference.
- + *
- + * Immutable objects are inherently thread-safe; they may be passed between
- + * threads or published without synchronization.
- + */
- +@Documented
- +@Target(ElementType.TYPE)
- +@Retention(RetentionPolicy.RUNTIME)
- +public @interface Immutable {
- + // marker annotation, empty body
- +}
- diff --git a/src/main/java/org/apache/commons/lang3/annotation/concurrent/runtime/NotThreadSafe.java b/src/main/java/org/apache/commons/lang3/annotation/concurrent/runtime/NotThreadSafe.java
- new file mode 100644
- index 0000000..cc5d018
- --- /dev/null
- +++ b/src/main/java/org/apache/commons/lang3/annotation/concurrent/runtime/NotThreadSafe.java
- @@ -0,0 +1,31 @@
- +package org.apache.commons.lang3.annotation.concurrent.runtime;
- +
- +import java.lang.annotation.Documented;
- +import java.lang.annotation.ElementType;
- +import java.lang.annotation.Retention;
- +import java.lang.annotation.RetentionPolicy;
- +import java.lang.annotation.Target;
- +
- +/*
- + * Copyright (c) 2005 Brian Goetz
- + * Released under the Creative Commons Attribution License
- + * (http://creativecommons.org/licenses/by/2.5)
- + * Official home: http://www.jcip.net
- + */
- +
- +/**
- + * NotThreadSafe
- + *
- + * The class to which this annotation is applied is not thread-safe. This
- + * annotation primarily exists for clarifying the non-thread-safety of a class
- + * that might otherwise be assumed to be thread-safe, despite the fact that it
- + * is a bad idea to assume a class is thread-safe without good reason.
- + *
- + * @see ThreadSafe
- + */
- +@Documented
- +@Target(ElementType.TYPE)
- +@Retention(RetentionPolicy.RUNTIME)
- +public @interface NotThreadSafe {
- + // marker annotation, empty body
- +}
- diff --git a/src/main/java/org/apache/commons/lang3/annotation/concurrent/runtime/ThreadSafe.java b/src/main/java/org/apache/commons/lang3/annotation/concurrent/runtime/ThreadSafe.java
- new file mode 100644
- index 0000000..927111a
- --- /dev/null
- +++ b/src/main/java/org/apache/commons/lang3/annotation/concurrent/runtime/ThreadSafe.java
- @@ -0,0 +1,31 @@
- +package org.apache.commons.lang3.annotation.concurrent.runtime;
- +
- +import java.lang.annotation.Documented;
- +import java.lang.annotation.ElementType;
- +import java.lang.annotation.Retention;
- +import java.lang.annotation.RetentionPolicy;
- +import java.lang.annotation.Target;
- +
- +/*
- + * Copyright (c) 2005 Brian Goetz and Tim Peierls
- + * Released under the Creative Commons Attribution License
- + * (http://creativecommons.org/licenses/by/2.5)
- + * Official home: http://www.jcip.net
- + *
- + * Any republication or derived work distributed in source code form
- + * must include this copyright and license notice.
- + */
- +
- +/**
- + * The class to which this annotation is applied is thread-safe. This means that
- + * no sequences of accesses (reads and writes to public fields, calls to public methods)
- + * may put the object into an invalid state, regardless of the interleaving of those actions
- + * by the runtime, and without requiring any additional synchronization or coordination on the
- + * part of the caller.
- + */
- +@Documented
- +@Target(ElementType.TYPE)
- +@Retention(RetentionPolicy.RUNTIME)
- +public @interface ThreadSafe {
- + // marker annotation, empty body
- +}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement