Refactored programs related to TemplateBuilder.java

This commit is contained in:
Muga Nishizawa
2011-04-08 16:13:29 +09:00
parent b50ff920f0
commit 4f3d9a1ded
29 changed files with 126 additions and 616 deletions

View File

@@ -22,7 +22,6 @@ import java.io.InputStream;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import org.msgpack.template.TemplateRegistry; import org.msgpack.template.TemplateRegistry;
import org.msgpack.template.TemplateClassWriter;
import org.msgpack.template.FieldList; import org.msgpack.template.FieldList;
public class MessagePack { public class MessagePack {
@@ -146,10 +145,6 @@ public class MessagePack {
} }
} }
public static void write(Class<?> target, String directoryName) {
TemplateClassWriter.write(target, directoryName);
}
public static void register(Class<?> target) { public static void register(Class<?> target) {
TemplateRegistry.register(target); TemplateRegistry.register(target);
} }

View File

@@ -1,7 +1,7 @@
// //
// MessagePack for Java // MessagePack for Java
// //
// Copyright (C) 2009-2010 FURUHASHI Sadayuki // Copyright (C) 2009-2011 FURUHASHI Sadayuki
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.
@@ -18,6 +18,5 @@
package org.msgpack; package org.msgpack;
public interface MessagePackTemplateProvider { public interface MessagePackTemplateProvider {
Template getTemplate(); Template getTemplate();
} }

View File

@@ -1,7 +1,7 @@
// //
// MessagePack for Java // MessagePack for Java
// //
// Copyright (C) 2009-2010 FURUHASHI Sadayuki // Copyright (C) 2009-2011 FURUHASHI Sadayuki
// //
// Licensed under the Apache License, Version 2.0 (the "License"); // Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. // you may not use this file except in compliance with the License.

View File

@@ -22,34 +22,33 @@ import java.lang.reflect.Type;
import org.msgpack.annotation.MessagePackMessage; import org.msgpack.annotation.MessagePackMessage;
public class MessagePackMessageBuilderSelector implements BuilderSelector{ public class AnnotationTemplateBuilderSelector implements BuilderSelector{
public static final String NAME = "MessagePackMessageTemplateBuilder"; public static final String NAME = "AnnotationTemplateBuilder";
TemplateBuilder builder; TemplateBuilder builder;
public MessagePackMessageBuilderSelector(TemplateBuilder builder){
public AnnotationTemplateBuilderSelector(TemplateBuilder builder){
this.builder = builder; this.builder = builder;
} }
public String getName(){ @Override
public String getName(){
return NAME; return NAME;
} }
@Override @Override
public boolean matchType(Type targetType) { public boolean matchType(Type targetType) {
Class<?> target = (Class<?>)targetType; Class<?> targetClass = (Class<?>)targetType;
return isAnnotated(target, MessagePackMessage.class); return isAnnotated(targetClass, MessagePackMessage.class);
} }
@Override @Override
public TemplateBuilder getTemplateBuilder(Type targetType) { public TemplateBuilder getTemplateBuilder(Type targetType) {
return builder; return builder;
} }
private boolean isAnnotated(Class<?> ao, Class<? extends Annotation> with) { public static boolean isAnnotated(Class<?> targetClass, Class<? extends Annotation> with) {
return ao.getAnnotation(with) != null; return targetClass.getAnnotation(with) != null;
} }
} }

View File

@@ -22,8 +22,6 @@ import java.lang.reflect.Array;
import java.lang.reflect.GenericArrayType; import java.lang.reflect.GenericArrayType;
import java.lang.reflect.ParameterizedType; import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
import org.msgpack.AbstractTemplate; import org.msgpack.AbstractTemplate;
import org.msgpack.MessagePackObject; import org.msgpack.MessagePackObject;
@@ -34,17 +32,12 @@ import org.msgpack.Unpacker;
import org.msgpack.template.BooleanArrayTemplate; import org.msgpack.template.BooleanArrayTemplate;
import org.msgpack.template.DoubleArrayTemplate; import org.msgpack.template.DoubleArrayTemplate;
import org.msgpack.template.FloatArrayTemplate; import org.msgpack.template.FloatArrayTemplate;
import org.msgpack.template.IFieldEntry;
import org.msgpack.template.IFieldEntryReader;
import org.msgpack.template.IntArrayTemplate; import org.msgpack.template.IntArrayTemplate;
import org.msgpack.template.LongArrayTemplate; import org.msgpack.template.LongArrayTemplate;
import org.msgpack.template.ShortArrayTemplate; import org.msgpack.template.ShortArrayTemplate;
import org.msgpack.template.TemplateRegistry; import org.msgpack.template.TemplateRegistry;
public class ArrayTemplateBuilder extends TemplateBuilder { public class ArrayTemplateBuilder implements TemplateBuilder {
static class ReflectionObjectArrayTemplate extends AbstractTemplate { static class ReflectionObjectArrayTemplate extends AbstractTemplate {
private Class<?> componentClass; private Class<?> componentClass;
@@ -128,6 +121,7 @@ public class ArrayTemplateBuilder extends TemplateBuilder {
return array; return array;
} }
} }
@Override @Override
public Template buildTemplate(Type arrayType) { public Template buildTemplate(Type arrayType) {
Type baseType; Type baseType;

View File

@@ -20,18 +20,17 @@ package org.msgpack.template.builder;
import java.lang.reflect.GenericArrayType; import java.lang.reflect.GenericArrayType;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import org.msgpack.Template;
public class ArrayTemplateBuilderSelector implements BuilderSelector { public class ArrayTemplateBuilderSelector implements BuilderSelector {
public static final String NAME = "ArrayTemplateBuilder"; public static final String NAME = "ArrayTemplateBuilder";
ArrayTemplateBuilder templateBuilder = new ArrayTemplateBuilder();
@Override @Override
public String getName(){ public String getName(){
return NAME; return NAME;
} }
@Override @Override
public boolean matchType(Type targetType) { public boolean matchType(Type targetType) {
if(targetType instanceof GenericArrayType){ if(targetType instanceof GenericArrayType){
@@ -41,8 +40,6 @@ public class ArrayTemplateBuilderSelector implements BuilderSelector {
return targetClass.isArray(); return targetClass.isArray();
} }
ArrayTemplateBuilder templateBuilder = new ArrayTemplateBuilder();
@Override @Override
public TemplateBuilder getTemplateBuilder(Type target) { public TemplateBuilder getTemplateBuilder(Type target) {
return templateBuilder; return templateBuilder;

View File

@@ -15,33 +15,19 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
// //
package org.msgpack.template.javassist; package org.msgpack.template.builder;
import java.io.IOException;
import java.lang.reflect.Array;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Type;
import java.lang.Thread;
import org.msgpack.*; import org.msgpack.*;
import org.msgpack.template.*; import org.msgpack.template.*;
import javassist.CannotCompileException; import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass; import javassist.CtClass;
import javassist.CtConstructor; import javassist.CtConstructor;
import javassist.CtMethod;
import javassist.CtNewConstructor; import javassist.CtNewConstructor;
import javassist.CtNewMethod;
import javassist.LoaderClassPath;
import javassist.NotFoundException; import javassist.NotFoundException;
import javassist.ClassClassPath;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class BeansBuildContext extends BuildContextBase<BeansFieldEntry> { public class BeansBuildContext extends BuildContextBase<BeansFieldEntry> {
protected BeansFieldEntry[] entries; protected BeansFieldEntry[] entries;

View File

@@ -15,10 +15,9 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
// //
package org.msgpack.template; package org.msgpack.template.builder;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Field;
import org.msgpack.AbstractTemplate; import org.msgpack.AbstractTemplate;
import org.msgpack.MessagePackObject; import org.msgpack.MessagePackObject;
@@ -26,27 +25,22 @@ import org.msgpack.MessageTypeException;
import org.msgpack.Packer; import org.msgpack.Packer;
import org.msgpack.Template; import org.msgpack.Template;
import org.msgpack.Unpacker; import org.msgpack.Unpacker;
import org.msgpack.template.ReflectionTemplateBuilder.BooleanFieldEntry; import org.msgpack.template.BeansFieldEntry;
import org.msgpack.template.ReflectionTemplateBuilder.ByteFieldEntry; import org.msgpack.template.BeansFieldEntryReader;
import org.msgpack.template.ReflectionTemplateBuilder.DoubleFieldEntry; import org.msgpack.template.IFieldEntry;
import org.msgpack.template.ReflectionTemplateBuilder.FloatFieldEntry; import org.msgpack.template.IFieldEntryReader;
import org.msgpack.template.ReflectionTemplateBuilder.IntFieldEntry; import org.msgpack.template.TemplateRegistry;
import org.msgpack.template.ReflectionTemplateBuilder.LongFieldEntry;
import org.msgpack.template.ReflectionTemplateBuilder.NullFieldEntry;
import org.msgpack.template.ReflectionTemplateBuilder.ObjectFieldEntry;
import org.msgpack.template.ReflectionTemplateBuilder.ShortFieldEntry;
import org.msgpack.template.builder.CustomTemplateBuilder;
/** /**
* Class for building java reflection template builder for java beans class. * Class for building java reflection template builder for java beans class.
* @author takeshita * @author takeshita
* *
*/ */
public class BeansReflectionTemplateBuilder extends CustomTemplateBuilder{ public class BeansTemplateBuilder extends CustomTemplateBuilder{
IFieldEntryReader reader = new BeansFieldEntryReader(); IFieldEntryReader reader = new BeansFieldEntryReader();
public BeansReflectionTemplateBuilder(){} public BeansTemplateBuilder(){}
@Override @Override
public IFieldEntryReader getFieldEntryReader(){ public IFieldEntryReader getFieldEntryReader(){

View File

@@ -17,41 +17,33 @@
// //
package org.msgpack.template.builder; package org.msgpack.template.builder;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import org.msgpack.annotation.MessagePackBeans; import org.msgpack.annotation.MessagePackBeans;
import org.msgpack.annotation.MessagePackMessage;
public class MessagePackBeansBuilderSelector implements BuilderSelector{ public class BeansTemplateBuilderSelector implements BuilderSelector{
public static final String NAME = "MessagePackBeansTemplateBuilder"; public static final String NAME = "BeansTemplateBuilder";
TemplateBuilder builder; TemplateBuilder builder;
public MessagePackBeansBuilderSelector(TemplateBuilder builder){
public BeansTemplateBuilderSelector(TemplateBuilder builder){
this.builder = builder; this.builder = builder;
} }
@Override
public String getName(){ public String getName(){
return NAME; return NAME;
} }
@Override @Override
public boolean matchType(Type targetType) { public boolean matchType(Type targetType) {
Class<?> target = (Class<?>)targetType; Class<?> targetClass = (Class<?>)targetType;
return isAnnotated(target, MessagePackBeans.class); return AnnotationTemplateBuilderSelector.isAnnotated(targetClass, MessagePackBeans.class);
} }
@Override @Override
public TemplateBuilder getTemplateBuilder(Type targetType) { public TemplateBuilder getTemplateBuilder(Type targetType) {
return builder; return builder;
} }
private boolean isAnnotated(Class<?> ao, Class<? extends Annotation> with) {
return ao.getAnnotation(with) != null;
}
} }

View File

@@ -15,33 +15,19 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
// //
package org.msgpack.template.javassist; package org.msgpack.template.builder;
import java.io.IOException;
import java.lang.reflect.Array;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Type;
import java.lang.Thread;
import org.msgpack.*; import org.msgpack.*;
import org.msgpack.template.*; import org.msgpack.template.*;
import javassist.CannotCompileException; import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass; import javassist.CtClass;
import javassist.CtConstructor; import javassist.CtConstructor;
import javassist.CtMethod;
import javassist.CtNewConstructor; import javassist.CtNewConstructor;
import javassist.CtNewMethod;
import javassist.LoaderClassPath;
import javassist.NotFoundException; import javassist.NotFoundException;
import javassist.ClassClassPath;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class BuildContext extends BuildContextBase<FieldEntry> { public class BuildContext extends BuildContextBase<FieldEntry> {
protected IFieldEntry[] entries; protected IFieldEntry[] entries;

View File

@@ -15,37 +15,26 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
// //
package org.msgpack.template.javassist; package org.msgpack.template.builder;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Type;
import java.lang.Thread;
import org.msgpack.*; import org.msgpack.*;
import org.msgpack.template.*; import org.msgpack.template.*;
import javassist.CannotCompileException; import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass; import javassist.CtClass;
import javassist.CtConstructor;
import javassist.CtMethod; import javassist.CtMethod;
import javassist.CtNewConstructor;
import javassist.CtNewMethod; import javassist.CtNewMethod;
import javassist.LoaderClassPath;
import javassist.NotFoundException; import javassist.NotFoundException;
import javassist.ClassClassPath;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
public abstract class BuildContextBase<T extends IFieldEntry> { public abstract class BuildContextBase<T extends IFieldEntry> {
private static Logger LOG = LoggerFactory.getLogger(JavassistTemplateBuilder.class); private static Logger LOG = LoggerFactory.getLogger(JavassistTemplateBuilder.class);
protected JavassistTemplateBuilder director; protected JavassistTemplateBuilder director;
@@ -70,10 +59,8 @@ public abstract class BuildContextBase<T extends IFieldEntry> {
public BuildContextBase(JavassistTemplateBuilder director) { public BuildContextBase(JavassistTemplateBuilder director) {
this.director = director; this.director = director;
} }
public abstract Template buildTemplate(Class<?> targetClass, T[] entries, Template[] templates);
public abstract Template buildTemplate(Class<?> targetClass, T[] entries, Template[] templates);
protected Template build(final String className) { protected Template build(final String className) {
try { try {

View File

@@ -15,9 +15,8 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
// //
package org.msgpack.template.javassist; package org.msgpack.template.builder;
import org.msgpack.template.JavassistTemplateBuilder;
public interface BuildContextFactory { public interface BuildContextFactory {

View File

@@ -25,20 +25,9 @@ import java.lang.reflect.Type;
* *
*/ */
public interface BuilderSelector { public interface BuilderSelector {
String getName();
/**
* Name of this.
* @return
*/
public String getName();
public abstract boolean matchType(Type targetType);
public abstract TemplateBuilder getTemplateBuilder(Type targetType);
boolean matchType(Type targetType);
TemplateBuilder getTemplateBuilder(Type targetType);
} }

View File

@@ -22,13 +22,6 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import org.msgpack.template.BeansFieldEntryReader; import org.msgpack.template.BeansFieldEntryReader;
import org.msgpack.template.BeansReflectionTemplateBuilder;
import org.msgpack.template.JavassistTemplateBuilder;
import org.msgpack.template.ReflectionTemplateBuilder;
import org.msgpack.template.javassist.BeansBuildContext;
import org.msgpack.template.javassist.BuildContext;
import org.msgpack.template.javassist.BuildContextBase;
import org.msgpack.template.javassist.BuildContextFactory;
/** /**
* Registry for BuilderSelectors. * Registry for BuilderSelectors.
@@ -38,8 +31,9 @@ import org.msgpack.template.javassist.BuildContextFactory;
* *
*/ */
public class BuilderSelectorRegistry { public class BuilderSelectorRegistry {
private static BuilderSelectorRegistry instance = new BuilderSelectorRegistry(); private static BuilderSelectorRegistry instance = new BuilderSelectorRegistry();
static{ static{
initForJava(); initForJava();
} }
@@ -50,26 +44,25 @@ public class BuilderSelectorRegistry {
TemplateBuilder forceBuilder; TemplateBuilder forceBuilder;
List<BuilderSelector> builderSelectors = new LinkedList<BuilderSelector>(); List<BuilderSelector> builderSelectors = new LinkedList<BuilderSelector>();
private BuilderSelectorRegistry(){ private BuilderSelectorRegistry(){
} }
/** /**
* initialize BuilderSelectors for basic java enviroment. * initialize BuilderSelectors for basic java enviroment.
*/ */
private static void initForJava(){ private static void initForJava(){
instance.append(new ArrayTemplateBuilderSelector()); instance.append(new ArrayTemplateBuilderSelector());
if(isSupportJavassist()){ if(isSupportJavassist()){
instance.append( instance.append(
new MessagePackMessageBuilderSelector( new AnnotationTemplateBuilderSelector(
new JavassistTemplateBuilder())); new JavassistTemplateBuilder()));
instance.forceBuilder = new JavassistTemplateBuilder(); instance.forceBuilder = new JavassistTemplateBuilder();
//Java beans //Java beans
instance.append(new MessagePackBeansBuilderSelector( instance.append(new BeansTemplateBuilderSelector(
new JavassistTemplateBuilder( new JavassistTemplateBuilder(
new BeansFieldEntryReader(), new BeansFieldEntryReader(),
new BuildContextFactory() { new BuildContextFactory() {
@@ -81,17 +74,17 @@ public class BuilderSelectorRegistry {
))); )));
}else{ }else{
instance.append( instance.append(
new MessagePackMessageBuilderSelector( new AnnotationTemplateBuilderSelector(
new ReflectionTemplateBuilder())); new ReflectionTemplateBuilder()));
instance.forceBuilder = new ReflectionTemplateBuilder(); instance.forceBuilder = new ReflectionTemplateBuilder();
//Java beans //Java beans
instance.append(new MessagePackBeansBuilderSelector( instance.append(new BeansTemplateBuilderSelector(
new BeansReflectionTemplateBuilder())); new BeansTemplateBuilder()));
} }
instance.append(new MessagePackOrdinalEnumBuilderSelector()); instance.append(new OrdinalEnumTemplateBuilderSelector());
instance.append(new EnumBuilderSelector()); instance.append(new EnumTemplateBuilderSelector());
} }
public static boolean isSupportJavassist(){ public static boolean isSupportJavassist(){
try { try {

View File

@@ -25,14 +25,11 @@ import org.msgpack.template.FieldOption;
import org.msgpack.template.IFieldEntry; import org.msgpack.template.IFieldEntry;
import org.msgpack.template.IFieldEntryReader; import org.msgpack.template.IFieldEntryReader;
import org.msgpack.template.TemplateBuildException; import org.msgpack.template.TemplateBuildException;
import org.msgpack.template.javassist.BuildContextFactory;
public abstract class CustomTemplateBuilder extends TemplateBuilder {
public abstract class CustomTemplateBuilder implements TemplateBuilder {
public abstract IFieldEntryReader getFieldEntryReader(); public abstract IFieldEntryReader getFieldEntryReader();
public abstract Template buildTemplate(Class<?> targetClass , IFieldEntry[] entries); public abstract Template buildTemplate(Class<?> targetClass , IFieldEntry[] entries);
public Template buildTemplate(Class<?> targetClass ,FieldOption implicitOption ){ public Template buildTemplate(Class<?> targetClass ,FieldOption implicitOption ){

View File

@@ -19,25 +19,24 @@ package org.msgpack.template.builder;
import java.lang.reflect.Type; import java.lang.reflect.Type;
public class EnumBuilderSelector implements BuilderSelector { public class EnumTemplateBuilderSelector implements BuilderSelector {
public static final String NAME = "EnumTemplateBuilder"; public static final String NAME = "EnumTemplateBuilder";
OrdinalEnumTemplateBuilder builder = new OrdinalEnumTemplateBuilder();
@Override
public String getName(){ public String getName(){
return NAME; return NAME;
} }
@Override @Override
public boolean matchType(Type targetType) { public boolean matchType(Type targetType) {
return ((Class<?>)targetType).isEnum(); return ((Class<?>)targetType).isEnum();
} }
OrdinalEnumTemplateBuilder builder = new OrdinalEnumTemplateBuilder();
@Override @Override
public TemplateBuilder getTemplateBuilder(Type targetType) { public TemplateBuilder getTemplateBuilder(Type targetType) {
return builder; return builder;
} }
} }

View File

@@ -15,31 +15,10 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
// //
package org.msgpack.template.javassist; package org.msgpack.template.builder;
import java.io.IOException; import org.msgpack.AbstractTemplate;
import java.lang.reflect.Array; import org.msgpack.Template;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Type;
import java.lang.Thread;
import org.msgpack.*;
import org.msgpack.template.*;
import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtConstructor;
import javassist.CtMethod;
import javassist.CtNewConstructor;
import javassist.CtNewMethod;
import javassist.LoaderClassPath;
import javassist.NotFoundException;
import javassist.ClassClassPath;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public abstract class JavassistTemplate extends AbstractTemplate { public abstract class JavassistTemplate extends AbstractTemplate {
public Class<?> targetClass; public Class<?> targetClass;

View File

@@ -15,7 +15,7 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
// //
package org.msgpack.template; package org.msgpack.template.builder;
import java.lang.Thread; import java.lang.Thread;
@@ -28,8 +28,10 @@ import javassist.NotFoundException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.msgpack.template.builder.CustomTemplateBuilder; import org.msgpack.template.FieldEntryReader;
import org.msgpack.template.javassist.*; import org.msgpack.template.IFieldEntry;
import org.msgpack.template.IFieldEntryReader;
import org.msgpack.template.TemplateRegistry;
public class JavassistTemplateBuilder extends CustomTemplateBuilder { public class JavassistTemplateBuilder extends CustomTemplateBuilder {
private static Logger LOG = LoggerFactory.getLogger(JavassistTemplateBuilder.class); private static Logger LOG = LoggerFactory.getLogger(JavassistTemplateBuilder.class);

View File

@@ -30,7 +30,7 @@ import org.msgpack.Template;
import org.msgpack.Unpacker; import org.msgpack.Unpacker;
import org.msgpack.template.TemplateBuildException; import org.msgpack.template.TemplateBuildException;
public class OrdinalEnumTemplateBuilder extends TemplateBuilder{ public class OrdinalEnumTemplateBuilder implements TemplateBuilder{
static class ReflectionOrdinalEnumTemplate extends AbstractTemplate { static class ReflectionOrdinalEnumTemplate extends AbstractTemplate {
protected Enum<?>[] entries; protected Enum<?>[] entries;
@@ -68,6 +68,7 @@ public class OrdinalEnumTemplateBuilder extends TemplateBuilder{
return entries[ord]; return entries[ord];
} }
} }
@Override @Override
public Template buildTemplate(Type targetType) { public Template buildTemplate(Type targetType) {
Class<?> targetClass = (Class<?>)targetType; Class<?> targetClass = (Class<?>)targetType;

View File

@@ -17,35 +17,29 @@
// //
package org.msgpack.template.builder; package org.msgpack.template.builder;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import org.msgpack.annotation.MessagePackOrdinalEnum; import org.msgpack.annotation.MessagePackOrdinalEnum;
public class MessagePackOrdinalEnumBuilderSelector implements BuilderSelector { public class OrdinalEnumTemplateBuilderSelector implements BuilderSelector {
public static final String NAME = "MessagePackOrdinalEnumBuilderTemplate"; public static final String NAME = "OrdinalEnumBuilder";
OrdinalEnumTemplateBuilder builder = new OrdinalEnumTemplateBuilder();
@Override
public String getName(){ public String getName(){
return NAME; return NAME;
} }
@Override @Override
public boolean matchType(Type targetType) { public boolean matchType(Type targetType) {
Class<?> target = (Class<?>)targetType; Class<?> targetClass = (Class<?>)targetType;
return isAnnotated(target, MessagePackOrdinalEnum.class); return AnnotationTemplateBuilderSelector.isAnnotated(targetClass, MessagePackOrdinalEnum.class);
} }
OrdinalEnumTemplateBuilder builder = new OrdinalEnumTemplateBuilder();
@Override @Override
public TemplateBuilder getTemplateBuilder(Type targetType) { public TemplateBuilder getTemplateBuilder(Type targetType) {
return builder; return builder;
} }
private boolean isAnnotated(Class<?> ao, Class<? extends Annotation> with) {
return ao.getAnnotation(with) != null;
}
} }

View File

@@ -15,14 +15,18 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
// //
package org.msgpack.template; package org.msgpack.template.builder;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;
import org.msgpack.*; import org.msgpack.*;
import org.msgpack.template.builder.CustomTemplateBuilder; import org.msgpack.template.FieldEntry;
import org.msgpack.template.FieldEntryReader;
import org.msgpack.template.IFieldEntry;
import org.msgpack.template.IFieldEntryReader;
import org.msgpack.template.TemplateRegistry;
public class ReflectionTemplateBuilder extends CustomTemplateBuilder { public class ReflectionTemplateBuilder extends CustomTemplateBuilder {
IFieldEntryReader reader = new FieldEntryReader(); IFieldEntryReader reader = new FieldEntryReader();

View File

@@ -17,392 +17,11 @@
// //
package org.msgpack.template.builder; package org.msgpack.template.builder;
import java.io.IOException; import java.lang.reflect.Type;
import java.lang.reflect.*;
import java.lang.annotation.*;
import java.util.List;
import java.util.ArrayList;
import java.util.EnumSet;
import org.msgpack.*;
import org.msgpack.annotation.*;
import org.msgpack.template.FieldList;
import org.msgpack.template.FieldOption;
import org.msgpack.template.IFieldEntry;
import org.msgpack.template.IFieldEntryReader;
import org.msgpack.template.JavassistTemplateBuilder;
import org.msgpack.template.ReflectionTemplateBuilder;
public abstract class TemplateBuilder { import org.msgpack.Template;
public abstract Template buildTemplate(Type targetType); public interface TemplateBuilder {
/* Template buildTemplate(Type targetType);
// Override this method
<<<<<<< HEAD:java/src/main/java/org/msgpack/template/TemplateBuilder.java
public abstract Class<?> loadTemplateClass(Class<?> targetClass);
// Override this method
public abstract Template initializeTemplate(Class<?> targetClass, Class<?> tmplClass, FieldEntry[] entries);
// Override this method
public abstract void writeTemplateClass(Class<?> targetClass, FieldEntry[] entries, String directoryName);
// Override this method
public abstract Template buildTemplate(Class<?> targetClass, FieldEntry[] entries);
=======
public abstract Template buildTemplate(Class<?> targetClass, IFieldEntry[] entries);
>>>>>>> 21f0d0bfc47ddc6d9092621705047f3bef385ba5:java/src/main/java/org/msgpack/template/builder/TemplateBuilder.java
// Override this method
public abstract void writeOrdinalEnumTemplateClass(Class<?> targetClass, Enum<?>[] entires, String directoryName);
// Override this method
public abstract Template buildOrdinalEnumTemplate(Class<?> targetClass, Enum<?>[] entries);
// Override this method
public abstract void writeArrayTemplateClass(Type arrayType, Type genericBaseType,
Class<?> baseClass, int dim, String directoryName);
// Override this method
public abstract Template buildArrayTemplate(Type arrayType, Type genericBaseType, Class<?> baseClass, int dim);
<<<<<<< HEAD:java/src/main/java/org/msgpack/template/TemplateBuilder.java
public Template initializeTemplate(Class<?> targetClass, Class<?> tmplClass) {
return initializeTemplate(targetClass, tmplClass, readFieldEntries(targetClass, readImplicitFieldOption(targetClass)));
}
public void writeTemplateClass(Class<?> targetClass, FieldList fList, String directoryName) throws NoSuchFieldException {
checkValidation(targetClass);
writeTemplateClass(targetClass, convertFieldEntries(targetClass, fList), directoryName);
}
=======
public abstract IFieldEntryReader getFieldEntryReader();
>>>>>>> 21f0d0bfc47ddc6d9092621705047f3bef385ba5:java/src/main/java/org/msgpack/template/builder/TemplateBuilder.java
public Template buildTemplate(Class<?> targetClass, FieldList flist) throws NoSuchFieldException {
checkValidation(targetClass);
return buildTemplate(targetClass, getFieldEntryReader().convertFieldEntries(targetClass, flist));
}
public void writeTemplateClass(Class<?> targetClass, FieldOption implicitOption, String directoryName) {
checkValidation(targetClass);
writeTemplateClass(targetClass, readFieldEntries(targetClass, implicitOption), directoryName);
}
public Template buildTemplate(Class<?> targetClass, FieldOption implicitOption) {
checkValidation(targetClass);
return buildTemplate(targetClass, getFieldEntryReader().readFieldEntries(targetClass, implicitOption));
}
public void writeTemplateClass(Class<?> targetClass, final String directoryName) {
FieldOption implicitOption = readImplicitFieldOption(targetClass);
writeTemplateClass(targetClass, implicitOption, directoryName);
}
public Template buildTemplate(Class<?> targetClass) {
FieldOption implicitOption = getFieldEntryReader().readImplicitFieldOption(targetClass);
return buildTemplate(targetClass, implicitOption);
}
public void writeOrdinalEnumTemplateClass(Class<?> targetClass, String directoryName) {
checkOrdinalEnumValidation(targetClass);
Enum<?>[] entries = (Enum<?>[])targetClass.getEnumConstants();
writeOrdinalEnumTemplateClass(targetClass, entries, directoryName);
}
public Template buildOrdinalEnumTemplate(Class<?> targetClass) {
checkOrdinalEnumValidation(targetClass);
Enum<?>[] entries = (Enum<?>[])targetClass.getEnumConstants();
return buildOrdinalEnumTemplate(targetClass, entries);
}
public void writeArrayTemplateClass(Type arrayType, String directoryName) {
throw new UnsupportedOperationException("not supported yet.");// TODO
}
public Template buildArrayTemplate(Type arrayType) {
Type baseType;
Class<?> baseClass;
int dim = 1;
if(arrayType instanceof GenericArrayType) {
GenericArrayType type = (GenericArrayType)arrayType;
baseType = type.getGenericComponentType();
while(baseType instanceof GenericArrayType) {
baseType = ((GenericArrayType)baseType).getGenericComponentType();
dim += 1;
}
if(baseType instanceof ParameterizedType) {
baseClass = (Class<?>)((ParameterizedType)baseType).getRawType();
} else {
baseClass = (Class<?>)baseType;
}
} else {
Class<?> type = (Class<?>)arrayType;
baseClass = type.getComponentType();
while(baseClass.isArray()) {
baseClass = baseClass.getComponentType();
dim += 1;
}
baseType = baseClass;
}
return buildArrayTemplate(arrayType, baseType, baseClass, dim);
}
private static Type getComponentType(Type arrayType) {
if(arrayType instanceof GenericArrayType) {
return ((GenericArrayType)arrayType).getGenericComponentType();
} else {
return ((Class<?>)arrayType).getComponentType();
}
}
private void checkValidation(Class<?> targetClass) {
if(targetClass.isInterface()) {
throw new TemplateBuildException("cannot build template of interface");
}
if(targetClass.isArray()) {
throw new TemplateBuildException("cannot build template of array class");
}
if(targetClass.isPrimitive()) {
throw new TemplateBuildException("cannot build template of primitive type");
}
}
private void checkOrdinalEnumValidation(Class<?> targetClass) {
if(!targetClass.isEnum()) {
throw new TemplateBuildException("tried to build ordinal enum template of non-enum class");
}
}
private static TemplateBuilder instance;
static {
instance = selectDefaultTemplateBuilder();
}
private static TemplateBuilder selectDefaultTemplateBuilder() {
try {
// FIXME JavassistTemplateBuilder doesn't work on DalvikVM
if(System.getProperty("java.vm.name").equals("Dalvik")) {
return ReflectionTemplateBuilder.getInstance();
}
} catch (Exception e) {
}
return JavassistTemplateBuilder.getInstance();
}
public synchronized static void setInstance(TemplateBuilder builder) {
instance = builder;
}
public static Class<?> load(Class<?> targetClass) {
return instance.loadTemplateClass(targetClass);
}
public static Template initialize(Class<?> targetClass, Class<?> tmplClass) {
return instance.initializeTemplate(targetClass, tmplClass);
}
public static void writeClass(Class<?> targetClass, String directoryName) {
instance.writeTemplateClass(targetClass, directoryName);
}
public static Template build(Class<?> targetClass) {
return instance.buildTemplate(targetClass);
}
public static void writeClass(Class<?> targetClass, FieldOption implicitOption, String directoryName) {
instance.writeTemplateClass(targetClass, implicitOption, directoryName);
}
public static Template build(Class<?> targetClass, FieldOption implicitOption) {
return instance.buildTemplate(targetClass, implicitOption);
}
public static void writeClass(Class<?> targetClass, FieldList fList, String directoryName)
throws NoSuchFieldException {
instance.writeTemplateClass(targetClass, fList, directoryName);
}
public static Template build(Class<?> targetClass, FieldList fList) throws NoSuchFieldException {
return instance.buildTemplate(targetClass, fList);
}
public static void writeOrdinalEnumClass(Class<?> targetClass, String directoryName) {
instance.writeOrdinalEnumTemplateClass(targetClass, directoryName);
}
public static Template buildOrdinalEnum(Class<?> targetClass) {
return instance.buildOrdinalEnumTemplate(targetClass);
}
public static void writeArrayClass(Type arrayType, String directoryName) {
throw new UnsupportedOperationException("not supported yet.");// TODO
}
public static Template buildArray(Type arrayType) {
return instance.buildArrayTemplate(arrayType);
}*/
/*
private static void checkValidation(Class<?> targetClass) {
if(targetClass.isInterface()) {
throw new TemplateBuildException("cannot build template of interface");
}
if(targetClass.isArray()) {
throw new TemplateBuildException("cannot build template of array class");
}
if(targetClass.isPrimitive()) {
throw new TemplateBuildException("cannot build template of primitive type");
}
}
private static void checkOrdinalEnumValidation(Class<?> targetClass) {
if(!targetClass.isEnum()) {
throw new TemplateBuildException("tried to build ordinal enum template of non-enum class");
}
}*/
/*
static IFieldEntry[] convertFieldEntries(Class<?> targetClass, FieldList flist) throws NoSuchFieldException {
List<FieldList.Entry> src = flist.getList();
FieldEntry[] result = new FieldEntry[src.size()];
for(int i=0; i < src.size(); i++) {
FieldList.Entry s = src.get(i);
if(s.isAvailable()) {
result[i] = new FieldEntry(targetClass.getDeclaredField(s.getName()), s.getOption());
} else {
result[i] = new FieldEntry();
}
}
return result;
}*/
/*static IFieldEntry[] readFieldEntries(Class<?> targetClass, FieldOption implicitOption) {
Field[] allFields = readAllFields(targetClass);
/* index:
* @Index(0) int field_a; // 0
* int field_b; // 1
* @Index(3) int field_c; // 3
* int field_d; // 4
* @Index(2) int field_e; // 2
* int field_f; // 5
*//*
List<FieldEntry> indexed = new ArrayList<FieldEntry>();
int maxIndex = -1;
for(Field f : allFields) {
FieldOption opt = readFieldOption(f, implicitOption);
if(opt == FieldOption.IGNORE) {
// skip
continue;
}
int index = readFieldIndex(f, maxIndex);
if(indexed.size() > index && indexed.get(index) != null) {
throw new TemplateBuildException("duplicated index: "+index);
}
if(index < 0) {
throw new TemplateBuildException("invalid index: "+index);
}
while(indexed.size() <= index) {
indexed.add(null);
}
indexed.set(index, new FieldEntry(f, opt));
if(maxIndex < index) {
maxIndex = index;
}
}
FieldEntry[] result = new FieldEntry[maxIndex+1];
for(int i=0; i < indexed.size(); i++) {
FieldEntry e = indexed.get(i);
if(e == null) {
result[i] = new FieldEntry();
} else {
result[i] = e;
}
}
return result;
}*/
/*
private static Field[] readAllFields(Class<?> targetClass) {
// order: [fields of super class, ..., fields of this class]
List<Field[]> succ = new ArrayList<Field[]>();
int total = 0;
for(Class<?> c = targetClass; c != Object.class; c = c.getSuperclass()) {
Field[] fields = c.getDeclaredFields();
total += fields.length;
succ.add(fields);
}
Field[] result = new Field[total];
int off = 0;
for(int i=succ.size()-1; i >= 0; i--) {
Field[] fields = succ.get(i);
System.arraycopy(fields, 0, result, off, fields.length);
off += fields.length;
}
return result;
}
private static FieldOption readImplicitFieldOption(Class<?> targetClass) {
MessagePackMessage a = targetClass.getAnnotation(MessagePackMessage.class);
if(a == null) {
return FieldOption.DEFAULT;
}
return a.value();
}
private static FieldOption readFieldOption(Field field, FieldOption implicitOption) {
int mod = field.getModifiers();
if(Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
return FieldOption.IGNORE;
}
if(isAnnotated(field, Ignore.class)) {
return FieldOption.IGNORE;
} else if(isAnnotated(field, Required.class)) {
return FieldOption.REQUIRED;
} else if(isAnnotated(field, Optional.class)) {
return FieldOption.OPTIONAL;
} else if(isAnnotated(field, Nullable.class)) {
if(field.getDeclaringClass().isPrimitive()) {
return FieldOption.REQUIRED;
} else {
return FieldOption.NULLABLE;
}
}
if(implicitOption != FieldOption.DEFAULT) {
return implicitOption;
}
// default mode:
// transient : Ignore
// public : Required
// others : Ignore
if(Modifier.isTransient(mod)) {
return FieldOption.IGNORE;
} else if(Modifier.isPublic(mod)) {
return FieldOption.REQUIRED;
} else {
return FieldOption.IGNORE;
}
}
private static int readFieldIndex(Field field, int maxIndex) {
Index a = field.getAnnotation(Index.class);
if(a == null) {
return maxIndex + 1;
} else {
return a.value();
}
}
private static boolean isAnnotated(AccessibleObject ao, Class<? extends Annotation> with) {
return ao.getAnnotation(with) != null;
}*/
} }

View File

@@ -15,13 +15,14 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
// //
package org.msgpack.template; package org.msgpack.util;
import org.msgpack.template.TemplateBuildException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
public class TemplateClassWriter { public class TemplatePrecompiler {
private static final Logger LOG = LoggerFactory.getLogger(TemplateClassWriter.class); private static final Logger LOG = LoggerFactory.getLogger(TemplatePrecompiler.class);
public static void write(Class<?> target, String directoryName) { public static void write(Class<?> target, String directoryName) {
if (target.isEnum()) { if (target.isEnum()) {
@@ -36,7 +37,7 @@ public class TemplateClassWriter {
private String[] classNames; private String[] classNames;
private TemplateClassWriter() { private TemplatePrecompiler() {
} }
private void parseOpts(final String[] args) {// TODO private void parseOpts(final String[] args) {// TODO
@@ -64,7 +65,7 @@ public class TemplateClassWriter {
} }
public static void main(final String[] args) throws Exception { public static void main(final String[] args) throws Exception {
TemplateClassWriter writer = new TemplateClassWriter(); TemplatePrecompiler writer = new TemplatePrecompiler();
writer.parseOpts(args); writer.parseOpts(args);
writer.writeTemplateClasses(); writer.writeTemplateClasses();
} }

View File

@@ -30,9 +30,11 @@ import org.msgpack.annotation.MessagePackMessage;
import org.msgpack.annotation.MessagePackOrdinalEnum; import org.msgpack.annotation.MessagePackOrdinalEnum;
import org.msgpack.annotation.Optional; import org.msgpack.annotation.Optional;
import org.msgpack.template.TestTemplateBuilderPackConvert.SampleInterface; import org.msgpack.template.TestTemplateBuilderPackConvert.SampleInterface;
import org.msgpack.template.builder.BeansTemplateBuilder;
import org.msgpack.template.builder.BuilderSelectorRegistry; import org.msgpack.template.builder.BuilderSelectorRegistry;
import org.msgpack.template.builder.MessagePackBeansBuilderSelector; import org.msgpack.template.builder.BeansTemplateBuilderSelector;
import org.msgpack.template.builder.MessagePackMessageBuilderSelector; import org.msgpack.template.builder.AnnotationTemplateBuilderSelector;
import org.msgpack.template.builder.ReflectionTemplateBuilder;
import org.msgpack.template.builder.TemplateBuilder; import org.msgpack.template.builder.TemplateBuilder;
import org.junit.Assert; import org.junit.Assert;
@@ -46,11 +48,11 @@ public class TestReflectionTemplateBuilderJavaBeansPackUnpack extends TestCase {
BuilderSelectorRegistry instance = BuilderSelectorRegistry.getInstance(); BuilderSelectorRegistry instance = BuilderSelectorRegistry.getInstance();
instance.replace( instance.replace(
new MessagePackMessageBuilderSelector( new AnnotationTemplateBuilderSelector(
new ReflectionTemplateBuilder())); new ReflectionTemplateBuilder()));
instance.setForceBuilder( new ReflectionTemplateBuilder()); instance.setForceBuilder( new ReflectionTemplateBuilder());
instance.replace(new MessagePackBeansBuilderSelector( instance.replace(new BeansTemplateBuilderSelector(
new BeansReflectionTemplateBuilder())); new BeansTemplateBuilder()));
MessagePack.register(PrimitiveTypeFieldsClass.class); MessagePack.register(PrimitiveTypeFieldsClass.class);
MessagePack.register(OptionalPrimitiveTypeFieldsClass.class); MessagePack.register(OptionalPrimitiveTypeFieldsClass.class);

View File

@@ -24,9 +24,11 @@ import org.msgpack.Unpacker;
import org.msgpack.annotation.MessagePackMessage; import org.msgpack.annotation.MessagePackMessage;
import org.msgpack.annotation.MessagePackOrdinalEnum; import org.msgpack.annotation.MessagePackOrdinalEnum;
import org.msgpack.annotation.Optional; import org.msgpack.annotation.Optional;
import org.msgpack.template.builder.BeansTemplateBuilder;
import org.msgpack.template.builder.BuilderSelectorRegistry; import org.msgpack.template.builder.BuilderSelectorRegistry;
import org.msgpack.template.builder.MessagePackBeansBuilderSelector; import org.msgpack.template.builder.BeansTemplateBuilderSelector;
import org.msgpack.template.builder.MessagePackMessageBuilderSelector; import org.msgpack.template.builder.AnnotationTemplateBuilderSelector;
import org.msgpack.template.builder.ReflectionTemplateBuilder;
import org.msgpack.template.builder.TemplateBuilder; import org.msgpack.template.builder.TemplateBuilder;
import junit.framework.Assert; import junit.framework.Assert;
@@ -38,11 +40,11 @@ public class TestReflectionTemplateBuilderPackConvert extends TestCase {
BuilderSelectorRegistry instance = BuilderSelectorRegistry.getInstance(); BuilderSelectorRegistry instance = BuilderSelectorRegistry.getInstance();
instance.replace( instance.replace(
new MessagePackMessageBuilderSelector( new AnnotationTemplateBuilderSelector(
new ReflectionTemplateBuilder())); new ReflectionTemplateBuilder()));
instance.setForceBuilder( new ReflectionTemplateBuilder()); instance.setForceBuilder( new ReflectionTemplateBuilder());
instance.replace(new MessagePackBeansBuilderSelector( instance.replace(new BeansTemplateBuilderSelector(
new BeansReflectionTemplateBuilder())); new BeansTemplateBuilder()));
MessagePack.register(PrimitiveTypeFieldsClass.class); MessagePack.register(PrimitiveTypeFieldsClass.class);
MessagePack.register(OptionalPrimitiveTypeFieldsClass.class); MessagePack.register(OptionalPrimitiveTypeFieldsClass.class);

View File

@@ -25,9 +25,11 @@ import org.msgpack.annotation.MessagePackMessage;
import org.msgpack.annotation.MessagePackOrdinalEnum; import org.msgpack.annotation.MessagePackOrdinalEnum;
import org.msgpack.annotation.Optional; import org.msgpack.annotation.Optional;
import org.msgpack.template.TestTemplateBuilderPackConvert.SampleInterface; import org.msgpack.template.TestTemplateBuilderPackConvert.SampleInterface;
import org.msgpack.template.builder.BeansTemplateBuilder;
import org.msgpack.template.builder.BuilderSelectorRegistry; import org.msgpack.template.builder.BuilderSelectorRegistry;
import org.msgpack.template.builder.MessagePackBeansBuilderSelector; import org.msgpack.template.builder.BeansTemplateBuilderSelector;
import org.msgpack.template.builder.MessagePackMessageBuilderSelector; import org.msgpack.template.builder.AnnotationTemplateBuilderSelector;
import org.msgpack.template.builder.ReflectionTemplateBuilder;
import org.msgpack.template.builder.TemplateBuilder; import org.msgpack.template.builder.TemplateBuilder;
import junit.framework.Assert; import junit.framework.Assert;
@@ -41,11 +43,11 @@ public class TestReflectionTemplateBuilderPackUnpack extends TestCase {
BuilderSelectorRegistry instance = BuilderSelectorRegistry.getInstance(); BuilderSelectorRegistry instance = BuilderSelectorRegistry.getInstance();
instance.replace( instance.replace(
new MessagePackMessageBuilderSelector( new AnnotationTemplateBuilderSelector(
new ReflectionTemplateBuilder())); new ReflectionTemplateBuilder()));
instance.setForceBuilder( new ReflectionTemplateBuilder()); instance.setForceBuilder( new ReflectionTemplateBuilder());
instance.replace(new MessagePackBeansBuilderSelector( instance.replace(new BeansTemplateBuilderSelector(
new BeansReflectionTemplateBuilder())); new BeansTemplateBuilder()));
MessagePack.register(PrimitiveTypeFieldsClass.class); MessagePack.register(PrimitiveTypeFieldsClass.class);

View File

@@ -7,7 +7,7 @@ import java.lang.Class
import collection.immutable.{ListMap, TreeMap} import collection.immutable.{ListMap, TreeMap}
import java.lang.reflect.{Type, Modifier, Method, Field} import java.lang.reflect.{Type, Modifier, Method, Field}
import java.lang.annotation.{Annotation => JavaAnnotation} import java.lang.annotation.{Annotation => JavaAnnotation}
import javassist.{JavassistTemplate, BuildContextBase, BuildContext} import builder.{JavassistTemplateBuilder, JavassistTemplate, BuildContextBase, BuildContext}
import scala.collection.JavaConverters._ import scala.collection.JavaConverters._
; ;
/* /*

View File

@@ -1,10 +1,9 @@
package org.msgpack package org.msgpack
import template._ import template._
import builder.{MessagePackMessageBuilderSelector, BuilderSelectorRegistry} import builder.{AnnotationTemplateBuilderSelector, BuilderSelectorRegistry, BuildContextFactory}
import template.javassist.BuildContextFactory
import collection.mutable.{MutableList, LinkedList} import collection.mutable.{MutableList, LinkedList}
import collection.mutable.{Map => MMap,HashMap => MHashMap} import collection.mutable.{Map => MMap, HashMap => MHashMap}
; ;
/* /*
* Created by IntelliJ IDEA. * Created by IntelliJ IDEA.
@@ -18,7 +17,7 @@ object ScalaMessagePack {
{ {
// for scala object // for scala object
BuilderSelectorRegistry.getInstance.insertBefore( BuilderSelectorRegistry.getInstance.insertBefore(
MessagePackMessageBuilderSelector.NAME, AnnotationTemplateBuilderSelector.NAME,
new ScalaTemplateBuilderSelector) new ScalaTemplateBuilderSelector)
// register scala's list classes // register scala's list classes

View File

@@ -3,8 +3,7 @@ package org.msgpack
import annotation.MessagePackMessage import annotation.MessagePackMessage
import template.builder.BuilderSelector import template.builder.BuilderSelector
import java.lang.reflect.Type import java.lang.reflect.Type
import template.javassist.BuildContextFactory import template.builder.{JavassistTemplateBuilder, BuildContextFactory}
import template.JavassistTemplateBuilder
import java.lang.annotation.{Annotation => JAnnotation} import java.lang.annotation.{Annotation => JAnnotation}
; ;
/* /*