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]