Author: kentam
Date: Tue Apr 26 16:08:07 2005
New Revision: 164906
URL: http://svn.apache.org/viewcvs?rev=164906&view=rev
Log:
BEEHIVE-272: Replace usages of ControlAssemblyContext.createJavaOutputFile()
with getSrcOutputDir()
BEEHIVE-209: Need ability to log warnings, errors etc for controls assembly
Removed the deprecated createJavaOutputFile() API, and replaced its usages with
getSrcOutputDir().
Added a getMessager() API to the ControlAssemblyContext, which returns an apt
Messager object impl
that control assemblers can use to log diagnostics.
Modified:
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/assembly/ControlAssemblyContext.java
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/BaseAssemblyContext.java
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/assembly/AssemblyTestAssembler.java
Modified:
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/assembly/ControlAssemblyContext.java
URL:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/assembly/ControlAssemblyContext.java?rev=164906&r1=164905&r2=164906&view=diff
==============================================================================
---
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/assembly/ControlAssemblyContext.java
(original)
+++
incubator/beehive/trunk/controls/src/api/org/apache/beehive/controls/api/assembly/ControlAssemblyContext.java
Tue Apr 26 16:08:07 2005
@@ -24,6 +24,8 @@
import java.util.Map;
import java.util.Set;
+import com.sun.mirror.apt.Messager;
+
/**
* Control assemblers are passed a ControlAssemblyContext at the time they are
* invoked; the context allows the assemblers to interact with their external
@@ -137,15 +139,6 @@
String getDefaultImplClassName();
/**
- * @deprecated
- * @return a File into which Java source can be written.
- * Results in a file called <className>.java (in the
- * directory given by <packageName>).
- */
- File createJavaOutputFile(String packageName,
- String className);
-
- /**
* @return the output directory into which "compilable" source should be
output.
*/
File getSrcOutputDir();
@@ -164,4 +157,15 @@
* @return the set of clients (by class name) which use the control type
*/
Set<String> getClients();
+
+ /**
+ * @return a Messager implementation that can be used to emit diagnostics
during the
+ * assembly process.
+ */
+ Messager getMessager();
+
+ /**
+ * @return true if the assembly process reported errors via the Messager
+ */
+ boolean hasErrors();
}
Modified:
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/BaseAssemblyContext.java
URL:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/BaseAssemblyContext.java?rev=164906&r1=164905&r2=164906&view=diff
==============================================================================
---
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/BaseAssemblyContext.java
(original)
+++
incubator/beehive/trunk/controls/src/runtime/org/apache/beehive/controls/runtime/assembly/BaseAssemblyContext.java
Tue Apr 26 16:08:07 2005
@@ -28,6 +28,9 @@
import java.lang.reflect.Method;
import java.util.*;
+import com.sun.mirror.apt.Messager;
+import com.sun.mirror.util.SourcePosition;
+
/**
* Base ControlAssemblyContext implementation
*/
@@ -44,6 +47,7 @@
_moduleRoot = moduleRoot;
_moduleName = moduleName;
_srcOutputRoot = srcOutputRoot;
+ _messager = new DefaultAssemblyMessager();
// Compute and cache "most derived ControlInterface"
Queue<Class> q = new LinkedList<Class>();
@@ -107,23 +111,6 @@
return ControlBeanContext.resolveDefaultBinding( a.defaultBinding(),
ci.getName() );
}
- public File createJavaOutputFile(String packageName, String className)
- {
- File dir = null;
- if (packageName != null && packageName != "")
- {
- dir = new File(_srcOutputRoot,
- packageName.replace('/', File.separatorChar));
- dir.mkdirs();
- }
- else
- {
- dir = _srcOutputRoot;
- }
-
- return new File(dir, className + ".java");
- }
-
public File getSrcOutputDir()
{
return _srcOutputRoot;
@@ -144,12 +131,71 @@
return _clients;
}
+ public Messager getMessager()
+ {
+ return _messager;
+ }
+
+ public boolean hasErrors()
+ {
+ return _nErrors > 0;
+ }
+
+ private class DefaultAssemblyMessager implements Messager
+ {
+ public void printError( SourcePosition pos, String msg )
+ {
+ printDiagnostic( "Error", pos, msg );
+ _nErrors++;
+ }
+ public void printError( String msg )
+ {
+ printError( null, msg );
+ }
+
+ public void printNotice( SourcePosition pos, String msg )
+ {
+ printDiagnostic( "Notice", pos, msg );
+ }
+ public void printNotice( String msg )
+ {
+ printNotice( null, msg );
+ }
+
+ public void printWarning( SourcePosition pos, String msg )
+ {
+ printDiagnostic( "Warning", pos, msg );
+ }
+ public void printWarning( String msg )
+ {
+ printWarning( null, msg );
+ }
+
+ protected void printDiagnostic( String type, SourcePosition pos,
String msg )
+ {
+ String fn = "<not available>";
+ int line = 0;
+ int column = 0;
+
+ if ( pos != null )
+ {
+ fn = pos.file().getName();
+ line = pos.line();
+ column = pos.column();
+ }
+
+ System.out.println( type + ": (" + fn + ":" + line + ":" + column
+ ") " + msg );
+ }
+ }
+
private File _moduleRoot;
private String _moduleName;
private File _srcOutputRoot;
private Class _controlIntfOrExt;
private Map<String,String> _bindings;
private Set<String> _clients;
+ private Messager _messager;
+ private int _nErrors = 0;
private Class _controlMostDerivedIntf;
}
Modified:
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/assembly/AssemblyTestAssembler.java
URL:
http://svn.apache.org/viewcvs/incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/assembly/AssemblyTestAssembler.java?rev=164906&r1=164905&r2=164906&view=diff
==============================================================================
---
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/assembly/AssemblyTestAssembler.java
(original)
+++
incubator/beehive/trunk/controls/test/src/controls/org/apache/beehive/controls/test/controls/assembly/AssemblyTestAssembler.java
Tue Apr 26 16:08:07 2005
@@ -18,8 +18,10 @@
/* Write basic class structure out for later
compiliation and then finally instantiation in a test */
try {
- FileWriter fw = new
FileWriter(cac.createJavaOutputFile(genPackageName.replace(".",File.separator),
-
genClassName));
+ File dir = new File( cac.getSrcOutputDir(),
genPackageName.replace(".",File.separator) );
+ dir.mkdirs();
+
+ FileWriter fw = new FileWriter( new File( dir, genClassName +
".java" ) );
fw.write("package " + genPackageName + ";" +
"public class " + genClassName + "{ }");
fw.close();