Skip to content

Commit

Permalink
Remove Internal read accessors
Browse files Browse the repository at this point in the history
  • Loading branch information
sotty committed Nov 10, 2013
1 parent cf49fb1 commit c3880e0
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 38 deletions.
Expand Up @@ -283,8 +283,6 @@ private void bindAccessors( Class<T> proxyClass, ClassDefinition tdef, ClassDefi
try {
if ( ( cdef.isFullTraiting() && ( ! traitField.getType().isPrimitive() || field.getType().equals( traitField.getType() ) ) )
|| field.getType().isAssignableFrom( traitField.getType() ) ) {
staticField = proxyClass.getField( traitField.getName() + "_reader" );
staticField.set( null, field.getFieldAccessor().getReadAccessor() );

staticField = proxyClass.getField( traitField.getName() + "_writer" );
staticField.set( null, field.getFieldAccessor().getWriteAccessor() );
Expand All @@ -302,8 +300,6 @@ private void bindCoreAccessors( Class<T> wrapperClass, ClassDefinition cdef ) {
for ( FieldDefinition field : cdef.getFieldsDefinitions() ) {
Field staticField;
try {
staticField = wrapperClass.getField(field.getName() + "_reader");
staticField.set(null, field.getFieldAccessor().getReadAccessor() );

staticField = wrapperClass.getField(field.getName() + "_writer");
staticField.set(null, field.getFieldAccessor().getWriteAccessor() );
Expand Down Expand Up @@ -481,23 +477,21 @@ public static void primitiveValue( MethodVisitor mv, String fieldType ) {


public static void invokeExtractor( MethodVisitor mv, String masterName, ClassDefinition trait, ClassDefinition core, FieldDefinition field ) {
String fieldType = field.getTypeName();
mv.visitFieldInsn( GETSTATIC,
BuildUtils.getInternalType( masterName ),
field.getName() + "_reader",
Type.getDescriptor( InternalReadAccessor.class ) );
FieldDefinition tgtField = core.getFieldByAlias( field.resolveAlias() );
String fieldType = tgtField.getTypeName();
String fieldName = tgtField.getName();
String returnType = BuildUtils.getTypeDescriptor( fieldType );

mv.visitVarInsn( ALOAD, 0 );
mv.visitFieldInsn( GETFIELD,
BuildUtils.getInternalType( masterName ),
"object",
BuildUtils.getTypeDescriptor( core.getClassName() ) );

String returnType = BuildUtils.isPrimitive( fieldType ) ? BuildUtils.getTypeDescriptor( fieldType ) : Type.getDescriptor( Object.class );
mv.visitMethodInsn( INVOKEINTERFACE,
Type.getInternalName( InternalReadAccessor.class ),
BuildUtils.extractor( fieldType ),
Type.getMethodDescriptor( Type.getType( returnType ), new Type[] { Type.getType( Object.class ) } ) );
mv.visitMethodInsn( INVOKEVIRTUAL,
Type.getInternalName( core.getDefinedClass() ),
BuildUtils.getterName( fieldName, fieldType ),
Type.getMethodDescriptor( Type.getType( returnType ), new Type[] {} ) );


}
Expand Down
Expand Up @@ -19,9 +19,13 @@
import org.drools.factmodel.BuildUtils;
import org.drools.factmodel.ClassDefinition;
import org.drools.factmodel.FieldDefinition;
import org.drools.spi.InternalReadAccessor;
import org.drools.spi.WriteAccessor;
import org.mvel2.asm.*;
import org.mvel2.asm.ClassVisitor;
import org.mvel2.asm.ClassWriter;
import org.mvel2.asm.FieldVisitor;
import org.mvel2.asm.Label;
import org.mvel2.asm.MethodVisitor;
import org.mvel2.asm.Type;

import java.beans.IntrospectionException;
import java.io.IOException;
Expand Down Expand Up @@ -86,8 +90,6 @@ public byte[] buildClass( ClassDefinition core ) throws IOException,


for ( FieldDefinition fld : core.getFieldsDefinitions() ) {
fv = cw.visitField( ACC_PUBLIC + ACC_STATIC, fld.getName()+"_reader", Type.getDescriptor( InternalReadAccessor.class ), null, null);
fv.visitEnd();
fv = cw.visitField( ACC_PUBLIC + ACC_STATIC, fld.getName()+"_writer", Type.getDescriptor( WriteAccessor.class ), null, null);
fv.visitEnd();
}
Expand Down
Expand Up @@ -21,11 +21,16 @@
import org.drools.factmodel.BuildUtils;
import org.drools.factmodel.ClassDefinition;
import org.drools.factmodel.FieldDefinition;
import org.drools.spi.InternalReadAccessor;
import org.drools.spi.WriteAccessor;
import org.drools.util.ExternalizableLinkedHashMap;
import org.mvel2.MVEL;
import org.mvel2.asm.*;
import org.mvel2.asm.ClassVisitor;
import org.mvel2.asm.ClassWriter;
import org.mvel2.asm.FieldVisitor;
import org.mvel2.asm.Label;
import org.mvel2.asm.MethodVisitor;
import org.mvel2.asm.Opcodes;
import org.mvel2.asm.Type;

import java.beans.IntrospectionException;
import java.io.IOException;
Expand Down Expand Up @@ -438,8 +443,6 @@ public byte[] buildClass( ClassDefinition core ) throws IOException,

boolean hardField = ! TraitRegistry.isSoftField( field, j++, mask );
if ( hardField ) {
fv = cw.visitField( ACC_PUBLIC + ACC_STATIC, field.getName() + "_reader", Type.getDescriptor( InternalReadAccessor.class ), null, null );
fv.visitEnd();
fv = cw.visitField( ACC_PUBLIC + ACC_STATIC, field.getName() + "_writer", Type.getDescriptor( WriteAccessor.class ), null, null );
fv.visitEnd();
}
Expand Down
Expand Up @@ -22,9 +22,13 @@
import org.drools.factmodel.BuildUtils;
import org.drools.factmodel.ClassDefinition;
import org.drools.factmodel.FieldDefinition;
import org.drools.spi.InternalReadAccessor;
import org.drools.spi.WriteAccessor;
import org.mvel2.asm.*;
import org.mvel2.asm.ClassVisitor;
import org.mvel2.asm.ClassWriter;
import org.mvel2.asm.FieldVisitor;
import org.mvel2.asm.Label;
import org.mvel2.asm.MethodVisitor;
import org.mvel2.asm.Type;

import java.beans.IntrospectionException;
import java.io.IOException;
Expand All @@ -33,7 +37,6 @@
import java.util.ArrayList;
import java.util.BitSet;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
Expand Down Expand Up @@ -97,13 +100,7 @@ public byte[] buildClass( ClassDefinition core ) throws IOException,


for ( FieldDefinition fld : core.getFieldsDefinitions() ) {
fv = cw.visitField( ACC_PUBLIC + ACC_STATIC,
fld.getName() + "_reader",
Type.getDescriptor( InternalReadAccessor.class ),
null,
null );
fv.visitEnd();
fv = cw.visitField( ACC_PUBLIC + ACC_STATIC,
fv = cw.visitField( ACC_PUBLIC + ACC_STATIC,
fld.getName() + "_writer",
Type.getDescriptor( WriteAccessor.class ),
null,
Expand Down
Expand Up @@ -24,16 +24,22 @@
import org.drools.factmodel.BuildUtils;
import org.drools.factmodel.ClassDefinition;
import org.drools.factmodel.FieldDefinition;
import org.drools.spi.InternalReadAccessor;
import org.drools.spi.WriteAccessor;
import org.mvel2.MVEL;
import org.mvel2.asm.*;
import org.mvel2.asm.ClassVisitor;
import org.mvel2.asm.ClassWriter;
import org.mvel2.asm.FieldVisitor;
import org.mvel2.asm.Label;
import org.mvel2.asm.MethodVisitor;
import org.mvel2.asm.Opcodes;
import org.mvel2.asm.Type;

import java.beans.IntrospectionException;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
Expand All @@ -46,8 +52,6 @@
import java.util.Map;
import java.util.Set;

import java.io.Serializable;

public class TraitTripleProxyClassBuilderImpl implements TraitProxyClassBuilder, Serializable {


Expand Down Expand Up @@ -576,8 +580,6 @@ protected void buildProxyAccessor( BitSet mask, ClassWriter cw, String masterNam
FieldVisitor fv;

if ( ! isSoftField ) {
fv = cw.visitField( ACC_PUBLIC + ACC_STATIC, field.getName() + "_reader", Type.getDescriptor( InternalReadAccessor.class ), null, null );
fv.visitEnd();
fv = cw.visitField( ACC_PUBLIC + ACC_STATIC, field.getName() + "_writer", Type.getDescriptor( WriteAccessor.class ), null, null );
fv.visitEnd();
}
Expand Down

0 comments on commit c3880e0

Please sign in to comment.