Update of
/cvsroot/xdoclet-plugins/xdoclet-plugins/plugin-actionscript/src/main/java/org/xdoclet/plugin/actionscript
In directory
sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9614/plugin-actionscript/src/main/java/org/xdoclet/plugin/actionscript
Added Files:
ActionScript3Plugin.java ActionScript3Plugin.vm
ActionScriptPlugin.java ActionScriptPlugin.vm
ActionScriptPluginBase.java DependencyFragmentPlugin.java
DependencyFragmentPlugin.vm
Log Message:
XDP-136 : adding Joe Berkovitz's contribution : Actionscript plugin
--- NEW FILE: DependencyFragmentPlugin.vm ---
##
## Template for static dependencies citing generated AS value objects.
##
## Author: Joe Berkovitz
##
// ${dontedit}
// Generated by ${plugin.class.name} from ${class.fullyQualifiedName}
// Static Dependencies on generated ActionScript Beans
#foreach( $class in $metadata )
private static var _dep_${class.name}:Function =
${class.fullyQualifiedName};
#end
--- NEW FILE: DependencyFragmentPlugin.java ---
package org.xdoclet.plugin.actionscript;
import com.thoughtworks.qdox.model.DocletTag;
import com.thoughtworks.qdox.model.JavaClass;
import org.generama.QDoxCapableMetadataProvider;
import org.generama.VelocityTemplateEngine;
import org.generama.WriterMapper;
import org.generama.defaults.QDoxPlugin;
import org.xdoclet.plugin.actionscript.qtags.ActionScriptClassTagImpl;
import org.xdoclet.plugin.actionscript.qtags.ActionScriptPropertyTagImpl;
/**
* @author Joe Berkovitz
*/
public class DependencyFragmentPlugin extends QDoxPlugin {
/** Default name for generated file */
private String fileName = "StaticDependencies.as";
public DependencyFragmentPlugin(VelocityTemplateEngine
velocityTemplateEngine, QDoxCapableMetadataProvider metadataProvider,
WriterMapper writerMapper) {
super(velocityTemplateEngine, metadataProvider, writerMapper);
setMultioutput(false);
setFileregex("\\.java");
setFilereplace(fileName);
metadataProvider.getDocletTagFactory().registerTag(ActionScriptClassTagImpl.NAME,
ActionScriptClassTagImpl.class);
}
public String getDestinationFilename(Object metadata) {
return fileName;
}
public boolean shouldGenerate(Object metadata) {
JavaClass javaClass = (JavaClass) metadata;
DocletTag asTag = javaClass.getTagByName("actionscript.class");
return (asTag != null);
}
}
--- NEW FILE: ActionScriptPluginBase.java ---
package org.xdoclet.plugin.actionscript;
import com.thoughtworks.qdox.model.BeanProperty;
import com.thoughtworks.qdox.model.DocletTag;
import com.thoughtworks.qdox.model.JavaClass;
import com.thoughtworks.qdox.model.JavaField;
import com.thoughtworks.qdox.model.Type;
import org.generama.QDoxCapableMetadataProvider;
import org.generama.VelocityTemplateEngine;
import org.generama.WriterMapper;
import org.generama.defaults.JavaGeneratingPlugin;
import org.xdoclet.plugin.actionscript.qtags.ActionScriptClassTagImpl;
import org.xdoclet.plugin.actionscript.qtags.ActionScriptPropertyTagImpl;
/**
* @author Joe Berkovitz
*/
abstract public class ActionScriptPluginBase extends JavaGeneratingPlugin {
public ActionScriptPluginBase(VelocityTemplateEngine
velocityTemplateEngine, QDoxCapableMetadataProvider metadataProvider,
WriterMapper writerMapper) {
super(velocityTemplateEngine, metadataProvider, writerMapper);
setMultioutput(true);
setFileregex("\\.java");
setFilereplace(".as");
metadataProvider.getDocletTagFactory().registerTag(ActionScriptClassTagImpl.NAME,
ActionScriptClassTagImpl.class);
metadataProvider.getDocletTagFactory().registerTag(ActionScriptPropertyTagImpl.NAME,
ActionScriptPropertyTagImpl.class);
}
public boolean shouldGenerate(Object metadata) {
JavaClass javaClass = (JavaClass) metadata;
DocletTag asTag = javaClass.getTagByName("actionscript.class");
return (asTag != null);
}
// Callback methods from Velocity Template
public String getStaticFieldValue(JavaClass clazz, JavaField field)
throws Exception {
Class c = Class.forName(clazz.getFullyQualifiedName());
Object value = c.getField(field.getName()).get(null);
if (value instanceof String) {
return '"' + value.toString() + '"';
} else {
return value.toString();
}
}
public String getPropertyType(BeanProperty property) {
String type = getFullyQualifiedPropertyType(property);
int idx = type.lastIndexOf(".");
if (idx < 0) {
return type;
} else {
return type.substring(idx + 1);
}
}
public String getFullyQualifiedPropertyType(BeanProperty property) {
DocletTag propTag =
property.getAccessor().getTagByName("actionscript.property");
if (propTag != null
&& propTag.getNamedParameter("type") != null) {
return propTag.getNamedParameter("type");
} else {
return toActionScriptType(property.getType());
}
}
abstract public String toActionScriptType(Type type);
}
--- NEW FILE: ActionScriptPlugin.java ---
package org.xdoclet.plugin.actionscript;
import com.thoughtworks.qdox.model.Type;
import org.generama.QDoxCapableMetadataProvider;
import org.generama.VelocityTemplateEngine;
import org.generama.WriterMapper;
import org.xdoclet.plugin.actionscript.qtags.ActionScriptClassTagImpl;
import org.xdoclet.plugin.actionscript.qtags.ActionScriptPropertyTagImpl;
import java.util.HashMap;
/**
* @author Joe Berkovitz
*/
public class ActionScriptPlugin extends ActionScriptPluginBase {
public ActionScriptPlugin(VelocityTemplateEngine velocityTemplateEngine,
QDoxCapableMetadataProvider metadataProvider, WriterMapper writerMapper) {
super(velocityTemplateEngine, metadataProvider, writerMapper);
}
public String toActionScriptType(Type type) {
if (type.isArray()) {
return "Array";
}
String result = type.getValue();
if (actionScriptTypeMap.get(result) != null) {
return (String) actionScriptTypeMap.get(result);
}
return result;
}
private static final HashMap actionScriptTypeMap = new HashMap();
static {
actionScriptTypeMap.put("boolean", "Boolean");
actionScriptTypeMap.put("int", "Number");
actionScriptTypeMap.put("long", "Number");
actionScriptTypeMap.put("short", "Number");
actionScriptTypeMap.put("float", "Number");
actionScriptTypeMap.put("double", "Number");
actionScriptTypeMap.put("byte", "Number");
actionScriptTypeMap.put("java.lang.Boolean", "Boolean");
actionScriptTypeMap.put("java.lang.Integer", "Number");
actionScriptTypeMap.put("java.lang.Long", "Number");
actionScriptTypeMap.put("java.lang.Short", "Number");
actionScriptTypeMap.put("java.lang.Float", "Number");
actionScriptTypeMap.put("java.lang.Double", "Number");
actionScriptTypeMap.put("java.lang.Byte", "Number");
actionScriptTypeMap.put("java.lang.Number", "Number");
actionScriptTypeMap.put("java.lang.String", "String");
actionScriptTypeMap.put("java.util.List", "Array");
actionScriptTypeMap.put("java.util.Set", "Array");
actionScriptTypeMap.put("java.util.Collection", "Array");
}
}
--- NEW FILE: ActionScriptPlugin.vm ---
#set( $class = $metadata )
##
## Template for ActionScript value objects
##
## Author: Joe Berkovitz
##
// ${dontedit}
// Generated by ${plugin.class.name} from ${class.fullyQualifiedName}
#foreach( $beanProperty in $class.getBeanProperties() )
#if ($plugin.getFullyQualifiedPropertyType($beanProperty).indexOf(".") >= 0)
import ${plugin.getFullyQualifiedPropertyType($beanProperty)};
#end
#end
#if ($class.superClass.javaClass.fullyQualifiedName == "java.lang.Object")
class ${class.fullyQualifiedName}
#else
import ${class.superClass.javaClass.fullyQualifiedName};
class ${class.fullyQualifiedName} extends ${class.superClass.javaClass.name}
#end
{
private static var regClass =
Object.registerClass("${class.fullyQualifiedName}",
${class.fullyQualifiedName});
#foreach( $field in $class.getFields() )
#if ($field.static && $field.public && $field.final)
#if ($field.comment)
/** ${field.comment} */
#end
public static var ${field.name}:${plugin.toActionScriptType($field.type)} =
${plugin.getStaticFieldValue($class, $field)};
#end
#end
#foreach( $beanProperty in $class.getBeanProperties() )
#if ($beanProperty.accessor.comment)
/** ${beanProperty.accessor.comment} */
#end
public var ${beanProperty.name}:${plugin.getPropertyType($beanProperty)};
#end
}
--- NEW FILE: ActionScript3Plugin.java ---
package org.xdoclet.plugin.actionscript;
import com.thoughtworks.qdox.model.Type;
import org.generama.QDoxCapableMetadataProvider;
import org.generama.VelocityTemplateEngine;
import org.generama.WriterMapper;
import org.xdoclet.plugin.actionscript.qtags.ActionScriptClassTagImpl;
import org.xdoclet.plugin.actionscript.qtags.ActionScriptPropertyTagImpl;
import java.util.HashMap;
/**
* @author Joe Berkovitz
*/
public class ActionScript3Plugin extends ActionScriptPluginBase {
public ActionScript3Plugin(VelocityTemplateEngine velocityTemplateEngine,
QDoxCapableMetadataProvider metadataProvider, WriterMapper writerMapper) {
super(velocityTemplateEngine, metadataProvider, writerMapper);
}
public String toActionScriptType(Type type) {
if (type.isArray()) {
return "Array";
}
String result = type.getValue();
if (actionScriptTypeMap.get(result) != null) {
return (String) actionScriptTypeMap.get(result);
}
return result;
}
private static final HashMap actionScriptTypeMap = new HashMap();
static {
actionScriptTypeMap.put("boolean", "Boolean");
actionScriptTypeMap.put("int", "int");
actionScriptTypeMap.put("long", "Number");
actionScriptTypeMap.put("short", "Number");
actionScriptTypeMap.put("float", "Number");
actionScriptTypeMap.put("double", "Number");
actionScriptTypeMap.put("byte", "Number");
actionScriptTypeMap.put("java.lang.Boolean", "Boolean");
actionScriptTypeMap.put("java.lang.Integer", "int");
actionScriptTypeMap.put("java.lang.Long", "Number");
actionScriptTypeMap.put("java.lang.Short", "Number");
actionScriptTypeMap.put("java.lang.Float", "Number");
actionScriptTypeMap.put("java.lang.Double", "Number");
actionScriptTypeMap.put("java.lang.Byte", "Number");
actionScriptTypeMap.put("java.lang.Number", "Number");
actionScriptTypeMap.put("java.lang.String", "String");
actionScriptTypeMap.put("java.util.List", "Array");
actionScriptTypeMap.put("java.util.Set", "Array");
actionScriptTypeMap.put("java.util.Collection", "Array");
}
}
--- NEW FILE: ActionScript3Plugin.vm ---
#set( $class = $metadata )
##
## Template for ActionScript value objects
##
## Author: Joe Berkovitz
##
// ${dontedit}
// Generated by ${plugin.class.name} from ${class.fullyQualifiedName}
package ${class.package}
{
#foreach( $beanProperty in $class.getBeanProperties() )
#if ($plugin.getFullyQualifiedPropertyType($beanProperty).indexOf(".") >= 0)
import ${plugin.getFullyQualifiedPropertyType($beanProperty)};
#end
#end
#if ($class.superClass.javaClass.fullyQualifiedName == "java.lang.Object")
public class ${class.name}
#else
import ${class.superClass.javaClass.fullyQualifiedName};
public class ${class.name} extends ${class.superClass.javaClass.name}
#end
{
#foreach( $field in $class.getFields() )
#if ($field.static && $field.public && $field.final)
#if ($field.comment)
/** ${field.comment} */
#end
public static var ${field.name}:${plugin.toActionScriptType($field.type)} =
${plugin.getStaticFieldValue($class, $field)};
#end
#end
#foreach( $beanProperty in $class.getBeanProperties() )
#if ($beanProperty.accessor.comment)
/** ${beanProperty.accessor.comment} */
#end
#if
($beanProperty.accessor.getTagByName("actionscript.property").getNamedParameter("bindable"))
[Bindable]
#end
public var ${beanProperty.name}:${plugin.getPropertyType($beanProperty)};
#end
}
}
-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems? Stop! Download the new AJAX search engine that makes
searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click
_______________________________________________
xdoclet-plugins-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xdoclet-plugins-commits