@Before public void init() { ProjectClassLoader loader = ProjectClassLoader.createProjectClassLoader(); factory = new StandaloneTraitFactory( loader ); }
final ClassLoader projectClassLoader = ProjectClassLoader.createProjectClassLoader(); final ClassLoader internalTypesClassLoader = (ClassLoader) ((ProjectClassLoader) projectClassLoader).makeClassLoader();
@Test public void testDon() { Entity entity = new Entity( "123" ); entity._setDynamicProperties( new HashMap( ) ); entity._getDynamicProperties().put( "prop", "hello" ); Klass klass = Klass_.donKlass( entity ) .setTraitFactory( new StandaloneTraitFactory( ProjectClassLoader.createProjectClassLoader() ) ) .call(); assertEquals( "hello", klass.getProp() ); }
@Test public void testIsNullValue() { try { assertFalse( this.extractor.isNullValue( null, this.person[0] ) ); MVELObjectClassFieldReader nullExtractor = ( MVELObjectClassFieldReader ) store.getMVELReader( Person.class.getPackage().getName(), Person.class.getName(), "addresses['business'].phone", true, String.class ); MVELDialectRuntimeData data = new MVELDialectRuntimeData(); data.addImport( Person.class.getSimpleName(), Person.class ); data.onAdd( null, ProjectClassLoader.createProjectClassLoader() ); nullExtractor.compile( data ); // // InternalReadAccessor nullExtractor = store.getReader( Person.class, // "addresses['business'].phone", // getClass().getClassLoader() ); assertTrue( nullExtractor.isNullValue( null, this.person[0] ) ); } catch ( final Exception e ) { fail( "Should not throw an exception" ); } }
MVELDialectRuntimeData data = new MVELDialectRuntimeData(); data.addImport( Person.class.getSimpleName(), Person.class ); data.onAdd( null, ProjectClassLoader.createProjectClassLoader() );
private Class build(ClassBuilder builder, ClassDefinition classDef) throws Exception { classLoader = new PackageClassLoader(data, ProjectClassLoader.createProjectClassLoader()); byte[] d = builder.buildClass( classDef, classLoader); data.write( convertClassToResourcePath(classDef.getClassName()), d ); this.store = new ClassFieldAccessorStore(); store.setClassFieldAccessorCache( new ClassFieldAccessorCache( classLoader ) ); store.setEagerWire( true ); Class clazz = classLoader.loadClass( classDef.getClassName() ); classDef.setDefinedClass( clazz ); return clazz; }
@Test public void testDonWithAttributes() { Entity entity = new Entity( "123" ); entity._setDynamicProperties( new HashMap() ); SubKlass klass = SubKlass_.donSubKlass( entity ) .setTraitFactory( new StandaloneTraitFactory( ProjectClassLoader.createProjectClassLoader() ) ) .prop( "hello" ).subProp( 32 ) .call(); assertEquals( "hello", klass.getProp() ); assertEquals( 32, (int) klass.getSubProp() ); }
private Class build(ClassBuilder builder, ClassDefinition classDef) throws Exception { ProjectClassLoader prjClassLoader = ProjectClassLoader.createProjectClassLoader(); byte[] d = builder.buildClass( classDef, prjClassLoader ); JavaDialectRuntimeData data = new JavaDialectRuntimeData(); data.write( convertClassToResourcePath(classDef.getClassName()), d ); ClassLoader classLoader = new PackageClassLoader(data, prjClassLoader); ClassFieldAccessorStore store = new ClassFieldAccessorStore(); store.setClassFieldAccessorCache( new ClassFieldAccessorCache( classLoader ) ); store.setEagerWire( true ); Class clazz = classLoader.loadClass( classDef.getClassName() ); classDef.setDefinedClass( clazz ); return clazz; }
@Test public void testTraitWithNonAccessorMethodShadowing() { StandaloneTraitFactory factory = new StandaloneTraitFactory( ProjectClassLoader.createProjectClassLoader() ); try { SomeInterface r = (SomeInterface) factory.don( new SomeClass(), SomeInterface.class ); r.prepare(); assertEquals( 42, r.getFoo() ); assertEquals( "I did that", r.doThis( "that" ) ); } catch ( LogicalTypeInconsistencyException e ) { e.printStackTrace(); fail( e.getMessage() ); } }
@Test public void shareNoStoreWithMapTest() { //prepare CompilerHelper helper = new CompilerHelper(); Map<String, Object> kieMap = new HashMap<>(); String compilationID = UUID.randomUUID().toString(); kieMap.put("compilation.ID", compilationID); ProjectClassLoader pcl = ProjectClassLoader.createProjectClassLoader(); //call the class under test helper.shareStoreWithMap(pcl, compilationID, kieMap, log); //verify StringBuilder sbTypes = new StringBuilder(compilationID).append(".").append("ProjectClassloaderStore"); kieMap.get(sbTypes.toString()); Map store = (Map) kieMap.get(sbTypes.toString()); assertThat(store).isNull(); }
@Test public void shareStoreWithMapTest() { //prepare CompilerHelper helper = new CompilerHelper(); Map<String, Object> kieMap = new HashMap<>(); String compilationID = UUID.randomUUID().toString(); kieMap.put("compilation.ID", compilationID); ProjectClassLoader pcl = ProjectClassLoader.createProjectClassLoader(); String hexContent = "e04fd020ea3a6910a2d808002b30309d"; String className = "org/my/Clazz"; //we store bytes of hexString for an easy compare pcl.storeClass(className, hexStringToByteArray(hexContent)); //call the class under test helper.shareStoreWithMap(pcl, compilationID, kieMap, log); //verify StringBuilder sbTypes = new StringBuilder(compilationID).append(".").append("ProjectClassloaderStore"); kieMap.get(sbTypes.toString()); Map store = (Map) kieMap.get(sbTypes.toString()); assertThat(store).isNotNull(); assertThat(store).hasSize(1); byte[] bytez = (byte[]) store.get(className + ".class"); assertThat(bytez).isNotNull(); String hex = toHexString(bytez); assertThat(hex).isEqualTo(hexContent); }