Oops, the "TestOnly" annotation can be ommited.  Otherwise, here is
the definition:

@CopyRightApache
@Documented
@Inherited
@Retention(RetentionPolicy.RUNTIME)
public @interface TestOnly {
    String value() default "";
}

H

On Fri, 21 Jan 2005 16:23:03 +1100, Hanson Char <[EMAIL PROTECTED]> wrote:
> Conceivably, this makes it unnecessary to copy and paste the Apache
> Copyright at the top of every java source files.
> 
> Instead, simply annotate:
> 
> @CopyRightApache
> public class Foo {...}
> 
> This copyright info then becomes available both at source, class and
> runtime level, plus the compiler will verify it for you in case of
> typo.
> 
> H
> 
> On Fri, 21 Jan 2005 16:17:43 +1100, Hanson Char <[EMAIL PROTECTED]> wrote:
> > An idea on preserving copyright on objects via jdk1.5 annotation and enum.
> >
> > 1)  Creates a enum CopyRightType with one value APACHE, which has the
> > toString method to return the Apache software license.
> > 2) Creates an annotation CopyRightApache that has a value that returns
> > the above CopyRightType, with the default set to CopyRightType.APACHE.
> > 3) Annotates every class with @CopyRightApache.
> >
> > Now the copyright of any object can be accessed in the JVM during runtime 
> > by:
> >
> >   object.getClass().getAnnotation(CopyRightApache.class).toString()
> >
> > Sample code:
> >
> > // Enum Definition for the Apache Copyright
> > @CopyRightApache
> > public enum CopyRightType {
> >     APACHE {
> >         @Override public String toString() {
> >             return "\n"
> >             + "/*
> > ========================================================================\n"
> >             + " * Copyright 2004 The Apache Software Foundation\n"
> >             + " *\n"
> >             + " * Licensed under the Apache License, Version 2.0 (the
> > \"License\");\n"
> >             + " * you may not use this file except in compliance with
> > the License.\n"
> >             + " * You may obtain a copy of the License at\n"
> >             + " *\n"
> >             + " *     http://www.apache.org/licenses/LICENSE-2.0\n";
> >             + " *\n"
> >             + " * Unless required by applicable law or agreed to in
> > writing, software\n"
> >             + " * distributed under the License is distributed on an
> > \"AS IS\" BASIS,\n"
> >             + " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
> > express or implied.\n"
> >             + " * See the License for the specific language governing
> > permissions and\n"
> >             + " * limitations under the License.\n"
> >             + " *
> > ========================================================================\n"
> >             + " */\n"
> >             ;
> >         }
> >     };
> > }
> >
> > // Annotation Type Definition for the Apache Copyright
> > @CopyRightApache
> > @Documented
> > @Retention(RetentionPolicy.RUNTIME)
> > public @interface CopyRightApache {
> >     CopyRightType value() default CopyRightType.APACHE;
> > }
> >
> > // JUnit test case for the Apache Copyright artifacts.
> > import junit.framework.TestCase;
> > import org.apache.commons.logging.Log;
> > import org.apache.commons.logging.LogFactory;
> >
> > @CopyRightApache
> > @TestOnly
> > public class CopyRightApacheTest extends TestCase {
> >     private Log log = LogFactory.getLog(this.getClass());
> >
> >     public void test() {
> >         log.debug(this.getClass().getAnnotation(CopyRightApache.class));
> >     }
> > }
> >
> > An interesting result is that the enum and annotation are themselves
> > recursively annotated by the same copyright they define.
> >
> > H
> >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to