You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by ms...@apache.org on 2006/11/29 17:48:49 UTC
svn commit: r480619 - in /incubator/ode/trunk/jacob-ap: ./ src/ src/main/
src/main/java/ src/main/java/org/ src/main/java/org/apache/
src/main/java/org/apache/ode/ src/main/java/org/apache/ode/jacob/
src/main/java/org/apache/ode/jacob/ap/ src/main/reso...
Author: mszefler
Date: Wed Nov 29 08:48:47 2006
New Revision: 480619
URL: http://svn.apache.org/viewvc?view=rev&rev=480619
Log:
Added JACOB annotation processor to repository.
Added:
incubator/ode/trunk/jacob-ap/
incubator/ode/trunk/jacob-ap/.classpath (with props)
incubator/ode/trunk/jacob-ap/.project (with props)
incubator/ode/trunk/jacob-ap/pom.xml (with props)
incubator/ode/trunk/jacob-ap/src/
incubator/ode/trunk/jacob-ap/src/main/
incubator/ode/trunk/jacob-ap/src/main/java/
incubator/ode/trunk/jacob-ap/src/main/java/org/
incubator/ode/trunk/jacob-ap/src/main/java/org/apache/
incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/
incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/
incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/ap/
incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/ap/ChannelType.java (with props)
incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/ap/ChannelTypeAnnotationProcessor.java (with props)
incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/ap/JacobAnnotationProcessorFactory.java (with props)
incubator/ode/trunk/jacob-ap/src/main/resources/
incubator/ode/trunk/jacob-ap/src/main/resources/META-INF/
incubator/ode/trunk/jacob-ap/src/main/resources/META-INF/services/
incubator/ode/trunk/jacob-ap/src/main/resources/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
incubator/ode/trunk/jacob-ap/src/main/resources/org/
incubator/ode/trunk/jacob-ap/src/main/resources/org/apache/
incubator/ode/trunk/jacob-ap/src/main/resources/org/apache/ode/
incubator/ode/trunk/jacob-ap/src/main/resources/org/apache/ode/jacob/
incubator/ode/trunk/jacob-ap/src/main/resources/org/apache/ode/jacob/ap/
Added: incubator/ode/trunk/jacob-ap/.classpath
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/jacob-ap/.classpath?view=auto&rev=480619
==============================================================================
--- incubator/ode/trunk/jacob-ap/.classpath (added)
+++ incubator/ode/trunk/jacob-ap/.classpath Wed Nov 29 08:48:47 2006
@@ -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 kind="src" path="src/main/resources"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
Propchange: incubator/ode/trunk/jacob-ap/.classpath
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/ode/trunk/jacob-ap/.project
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/jacob-ap/.project?view=auto&rev=480619
==============================================================================
--- incubator/ode/trunk/jacob-ap/.project (added)
+++ incubator/ode/trunk/jacob-ap/.project Wed Nov 29 08:48:47 2006
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>jacob-ap</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>
Propchange: incubator/ode/trunk/jacob-ap/.project
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/ode/trunk/jacob-ap/pom.xml
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/jacob-ap/pom.xml?view=auto&rev=480619
==============================================================================
--- incubator/ode/trunk/jacob-ap/pom.xml (added)
+++ incubator/ode/trunk/jacob-ap/pom.xml Wed Nov 29 08:48:47 2006
@@ -0,0 +1,65 @@
+<?xml version="1.0"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+
+<project>
+ <groupId>org.apache.ode</groupId>
+ <artifactId>ode-jacob-ap</artifactId>
+ <name>ODE :: Java Concurrent Objects (JACOB) Annotation Processor</name>
+
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.ode</groupId>
+ <artifactId>ode</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </parent>
+ <version>2.0-SNAPSHOT</version>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.ode</groupId>
+ <artifactId>ode-utils</artifactId>
+ </dependency>
+ </dependencies>
+
+<!-- Question: How does one add tools.jar to the maven classpath?
+ Answer: Why its sooooo simple: -->
+
+<profiles>
+ <profile>
+ <id>default-tools.jar</id>
+ <activation>
+ <property>
+ <name>java.vendor</name>
+ <value>Sun Microsystems Inc.</value>
+ </property>
+ </activation>
+ <dependencies>
+ <dependency>
+ <groupId>com.sun</groupId>
+ <artifactId>tools</artifactId>
+ <version>1.4.2</version>
+ <scope>system</scope>
+ <systemPath>${java.home}/../lib/tools.jar</systemPath>
+ </dependency>
+ </dependencies>
+ </profile>
+ </profiles>
+
+
+</project>
Propchange: incubator/ode/trunk/jacob-ap/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/ap/ChannelType.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/ap/ChannelType.java?view=auto&rev=480619
==============================================================================
--- incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/ap/ChannelType.java (added)
+++ incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/ap/ChannelType.java Wed Nov 29 08:48:47 2006
@@ -0,0 +1,9 @@
+package org.apache.ode.jacob.ap;
+
+/**
+ * Annotation used to indicate that an interface is a JACOB channel interface.
+ * @author Maciej Szefler <mszefler at gmail dot com>
+ */
+public @interface ChannelType {
+
+}
Propchange: incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/ap/ChannelType.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/ap/ChannelTypeAnnotationProcessor.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/ap/ChannelTypeAnnotationProcessor.java?view=auto&rev=480619
==============================================================================
--- incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/ap/ChannelTypeAnnotationProcessor.java (added)
+++ incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/ap/ChannelTypeAnnotationProcessor.java Wed Nov 29 08:48:47 2006
@@ -0,0 +1,121 @@
+package org.apache.ode.jacob.ap;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Collection;
+import java.util.Date;
+
+import com.sun.mirror.apt.AnnotationProcessor;
+import com.sun.mirror.apt.AnnotationProcessorEnvironment;
+import com.sun.mirror.declaration.AnnotationTypeDeclaration;
+import com.sun.mirror.declaration.InterfaceDeclaration;
+import com.sun.mirror.type.InterfaceType;
+import com.sun.mirror.util.DeclarationFilter;
+
+class ChannelTypeAnnotationProcessor implements AnnotationProcessor {
+
+ AnnotationProcessorEnvironment _env;
+ AnnotationTypeDeclaration _atd;
+
+ ChannelTypeAnnotationProcessor(AnnotationTypeDeclaration atd, AnnotationProcessorEnvironment env) {
+ _atd = atd;
+ _env = env;
+ }
+
+ public void process() {
+ Collection<InterfaceDeclaration> channels = DeclarationFilter.getFilter(InterfaceDeclaration.class).filter(_env.getDeclarationsAnnotatedWith(_atd),InterfaceDeclaration.class);
+ for (InterfaceDeclaration c : channels) {
+ PrintWriter pw = null;
+ try {
+ pw = _env.getFiler().createSourceFile(c.getQualifiedName() + "Channel");
+ writeChannelClass(pw, c);
+ } catch (IOException e) {
+ _env.getMessager().printError(c.getPosition(), "IO Error: " + e.getMessage());
+ } finally {
+ if (pw != null) pw.close();
+ pw = null;
+ }
+
+ try {
+ pw = _env.getFiler().createSourceFile(c.getQualifiedName() + "ChannelListener");
+ writeChannelListenerClass(pw, c);
+ } catch (IOException e) {
+ _env.getMessager().printError(c.getPosition(), "IO Error: " + e.getMessage());
+ } finally {
+ if (pw != null) pw.close();
+ pw = null;
+ }
+
+ }
+ }
+
+
+ private void writeChannelClass(PrintWriter pw, InterfaceDeclaration c) {
+ pw.println("/*");
+ pw.println(" * SOURCE FILE GENERATATED BY JACOB CHANNEL CLASS GENERATOR");
+ pw.println(" * ");
+ pw.println(" * !!! DO NOT EDIT !!!! ");
+ pw.println(" * ");
+ pw.println(" * Generated On : " + new Date());
+ pw.println(" * For Interface : " + c.getQualifiedName());
+ pw.println(" */");
+ pw.println();
+ pw.println("package " + c.getPackage().getQualifiedName() + ";");
+ pw.println();
+
+ pw.println("/**");
+ pw.println(" * An auto-generated channel interface for the channel type");
+ pw.println(" * {@link " + c.getQualifiedName() + "}.");
+ pw.println(" * @see " + c.getQualifiedName() );
+ pw.println(" * @see " + c.getQualifiedName() + "ChannelListener");
+ pw.println(" */");
+ pw.println("public interface " + c.getSimpleName() + "Channel");
+
+ Collection<InterfaceType> supers = c.getSuperinterfaces();
+ if (supers.isEmpty()) {
+ pw.println(" extends org.apache.ode.jacob.Channel, ");
+ } else {
+ pw.print(" extends ");
+ for (InterfaceType s : supers)
+ pw.println(" "+ s.getDeclaration().getQualifiedName() + "Channel, ");
+ pw.println (" org.apache.ode.jacob.Channel, ");
+ }
+
+ pw.println(" " + c.getQualifiedName());
+ pw.println("{}");
+ pw.flush();
+ }
+
+ private void writeChannelListenerClass(PrintWriter pw, InterfaceDeclaration c) {
+ pw.println("/*");
+ pw.println(" * SOURCE FILE GENERATATED BY JACOB CHANNEL CLASS GENERATOR");
+ pw.println(" * ");
+ pw.println(" * !!! DO NOT EDIT !!!! ");
+ pw.println(" * ");
+ pw.println(" * Generated On : " + new Date());
+ pw.println(" * For Interface : " + c.getQualifiedName());
+ pw.println(" */");
+ pw.println();
+ pw.println("package " + c.getPackage().getQualifiedName() + ";");
+ pw.println();
+ pw.println("import org.apache.commons.logging.LogFactory;");
+ pw.println("import org.apache.commons.logging.Log;");
+ pw.println();
+ pw.println("/**");
+ pw.println(" * An auto-generated channel listener abstract class for the ");
+ pw.println(" * {@link " + c.getQualifiedName() + "} channel type. ");
+ pw.println(" * @see " + c.getQualifiedName() );
+ pw.println(" * @see " + c.getQualifiedName() + "Channel");
+ pw.println(" */");
+ pw.println("public abstract class " + c.getSimpleName() + "ChannelListener");
+ pw.println(" extends org.apache.ode.jacob.ChannelListener<" + c.getQualifiedName() + "Channel>" );
+ pw.println(" implements " + c.getQualifiedName());
+ pw.println("{");
+ pw.println(" protected " + c.getSimpleName() + "ChannelListener(" + c.getQualifiedName() + "Channel channel) {");
+ pw.println(" super(channel);");
+ pw.println(" }");
+ pw.println("}");
+ pw.flush();
+ }
+
+}
Propchange: incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/ap/ChannelTypeAnnotationProcessor.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/ap/JacobAnnotationProcessorFactory.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/ap/JacobAnnotationProcessorFactory.java?view=auto&rev=480619
==============================================================================
--- incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/ap/JacobAnnotationProcessorFactory.java (added)
+++ incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/ap/JacobAnnotationProcessorFactory.java Wed Nov 29 08:48:47 2006
@@ -0,0 +1,40 @@
+package org.apache.ode.jacob.ap;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+import com.sun.mirror.apt.AnnotationProcessor;
+import com.sun.mirror.apt.AnnotationProcessorEnvironment;
+import com.sun.mirror.apt.AnnotationProcessorFactory;
+import com.sun.mirror.apt.AnnotationProcessors;
+import com.sun.mirror.declaration.AnnotationTypeDeclaration;
+
+public class JacobAnnotationProcessorFactory implements AnnotationProcessorFactory {
+
+ private static final List<String> __supported = Arrays.asList(
+ new String[] { ChannelType.class.getName() });
+
+ public Collection<String> supportedOptions() {
+ return Collections.emptyList();
+ }
+
+ public Collection<String> supportedAnnotationTypes() {
+ return __supported;
+ }
+
+ public AnnotationProcessor getProcessorFor(Set<AnnotationTypeDeclaration> atd, AnnotationProcessorEnvironment ape) {
+
+ if (atd.isEmpty())
+ return AnnotationProcessors.NO_OP;
+
+ for (AnnotationTypeDeclaration a: atd) {
+ if (a.getQualifiedName().equals(ChannelType.class.getName()))
+ return new ChannelTypeAnnotationProcessor(a,ape);
+ }
+ return AnnotationProcessors.NO_OP;
+ }
+
+}
Propchange: incubator/ode/trunk/jacob-ap/src/main/java/org/apache/ode/jacob/ap/JacobAnnotationProcessorFactory.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/ode/trunk/jacob-ap/src/main/resources/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/jacob-ap/src/main/resources/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory?view=auto&rev=480619
==============================================================================
--- incubator/ode/trunk/jacob-ap/src/main/resources/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory (added)
+++ incubator/ode/trunk/jacob-ap/src/main/resources/META-INF/services/com.sun.mirror.apt.AnnotationProcessorFactory Wed Nov 29 08:48:47 2006
@@ -0,0 +1 @@
+org.apache.ode.jacob.ap.JacobAnnotationProcessorFactory