It wouldn't be available at source time would it?

If I goto CVS, grab the TestOnly.java file and copy it, I'll have never seen a copyright notice.

Hen

On Fri, 21 Jan 2005, Hanson Char wrote:

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]



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



Reply via email to