/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.kie.workbench.common.services.datamodeller.codegen;
import java.io.InputStream;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import org.kie.workbench.common.services.datamodeller.core.Annotation;
import org.kie.workbench.common.services.datamodeller.core.AnnotationDefinition;
import org.kie.workbench.common.services.datamodeller.core.DataModel;
import org.kie.workbench.common.services.datamodeller.core.DataObject;
import org.kie.workbench.common.services.datamodeller.core.Method;
import org.kie.workbench.common.services.datamodeller.core.ObjectProperty;
import org.kie.workbench.common.services.datamodeller.core.Parameter;
import org.kie.workbench.common.services.datamodeller.core.Type;
import org.kie.workbench.common.services.datamodeller.core.Visibility;
import org.kie.workbench.common.services.datamodeller.core.impl.AnnotationImpl;
import org.kie.workbench.common.services.datamodeller.core.impl.MethodImpl;
import org.kie.workbench.common.services.datamodeller.core.impl.ObjectPropertyImpl;
import org.kie.workbench.common.services.datamodeller.core.impl.ParameterImpl;
import org.kie.workbench.common.services.datamodeller.core.impl.TypeImpl;
import org.kie.workbench.common.services.datamodeller.driver.impl.DataModelOracleModelDriver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.junit.Assert.*;
public class GenerationEngineTest {
private static final Logger logger = LoggerFactory.getLogger(GenerationEngineTest.class);
private GenerationEngine engine;
private DataModelOracleModelDriver dataModelOracleDriver;
private Map<String, AnnotationDefinition> annotationDefinitions;
Properties results = new Properties();
@Before
public void setup() {
try {
InputStream in = this.getClass().getResourceAsStream( "GenerationTestResults.properties" );
results.load(in);
in.close();
Set<String> propertyNames = results.stringPropertyNames();
for (String property : propertyNames) {
String newProperty = results.getProperty(property).replaceAll("\n",
System.getProperty("line.separator"));
results.setProperty(property,
newProperty);
}
engine = GenerationEngine.getInstance();
dataModelOracleDriver = DataModelOracleModelDriver.getInstance();
annotationDefinitions = new HashMap<String, AnnotationDefinition>(5);
List<AnnotationDefinition> configuredAnnotations = dataModelOracleDriver.getConfiguredAnnotations();
for ( AnnotationDefinition annotationDefinition : configuredAnnotations ) {
annotationDefinitions.put( annotationDefinition.getClassName(), annotationDefinition );
}
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Test
public void testClassAnnotationStringGeneration() {
Annotation classReactive = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.ClassReactive.class.getName() ) );
Annotation propReactive = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.PropertyReactive.class.getName() ) );
Annotation role = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Role.class.getName() ) );
role.setValue( "value", org.kie.api.definition.type.Role.Type.EVENT.name() );
GenerationContext generationContext = new GenerationContext( dataModelOracleDriver.createModel() );
try {
String result = engine.generateAnnotationString(generationContext, classReactive);
assertEquals( results.getProperty( "testClassAnnotationStringGeneration1" ), result );
result = engine.generateAnnotationString(generationContext, propReactive);
assertEquals( results.getProperty( "testClassAnnotationStringGeneration2" ), result );
result = engine.generateAnnotationString(generationContext, role);
assertEquals( results.getProperty( "testClassAnnotationStringGeneration3" ), result );
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Test
public void testDefaultConstructorStringGeneration() {
DataModel dataModel = dataModelOracleDriver.createModel();
DataObject object = dataModel.addDataObject("com.test.Object1");
GenerationContext generationContext = new GenerationContext( dataModel );
try {
String result = engine.generateDefaultConstructorString(generationContext, object);
assertEquals( results.getProperty( "testDefaultConstructorStringGeneration" ), result );
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Test
public void testAllFieldsConstructorStringGeneration() {
DataModel dataModel = dataModelOracleDriver.createModel();
DataObject object1 = dataModel.addDataObject("com.test.Object1");
DataObject object2 = dataModel.addDataObject("com.test.sub.Object2");
object1.addProperty("attribute1", "java.lang.String");
object1.addProperty("attribute2", "java.lang.Boolean");
object1.addProperty("attribute3", object2.getClassName());
GenerationContext generationContext = new GenerationContext( dataModel );
try {
String result = engine.generateAllFieldsConstructorString(generationContext, object1);
assertEquals( results.getProperty( "testAllFieldsConstructorStringGeneration" ), result );
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Test
public void testKeyFieldsConstructorStringGeneration() {
DataModel dataModel = dataModelOracleDriver.createModel();
DataObject object1 = dataModel.addDataObject("com.test.Object1");
DataObject object2 = dataModel.addDataObject("com.test.sub.Object2");
ObjectProperty prop1 = object1.addProperty("attribute1", "java.lang.String");
(( ObjectPropertyImpl ) prop1 ).setFileOrder( 1 );
ObjectProperty prop2 = object1.addProperty("attribute2", "java.lang.Boolean");
(( ObjectPropertyImpl ) prop2 ).setFileOrder( 2 );
ObjectProperty prop3 = object1.addProperty("attribute3", object2.getClassName());
(( ObjectPropertyImpl ) prop3 ).setFileOrder( 0);
ObjectProperty prop4 = object1.addProperty("attribute4", "long");
(( ObjectPropertyImpl ) prop4 ).setFileOrder( 3 );
Annotation key = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Key.class.getName() ) );
Annotation position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
prop3.addAnnotation( key );
prop1.addAnnotation( key );
prop2.addAnnotation( key );
GenerationContext generationContext = new GenerationContext( dataModel );
try {
String result = engine.generateKeyFieldsConstructorString(generationContext, object1);
assertEquals( results.getProperty( "testKeyFieldsConstructorStringGeneration" ), result );
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Test
public void testAllConstructorsStringGeneration() {
DataModel dataModel = dataModelOracleDriver.createModel();
DataObject object1 = dataModel.addDataObject("com.test.Object1");
DataObject object2 = dataModel.addDataObject("com.test.sub.Object2");
ObjectProperty prop1 = object1.addProperty("attribute1", "java.lang.String");
(( ObjectPropertyImpl ) prop1 ).setFileOrder( 0 );
ObjectProperty prop2 = object1.addProperty("attribute2", "java.lang.Boolean");
(( ObjectPropertyImpl ) prop2 ).setFileOrder( 1 );
ObjectProperty prop3 = object1.addProperty("attribute3", object2.getClassName());
(( ObjectPropertyImpl ) prop3 ).setFileOrder( 2 );
ObjectProperty prop4 = object1.addProperty("attribute4", "long");
(( ObjectPropertyImpl ) prop4 ).setFileOrder( 3 );
Annotation key = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Key.class.getName() ) );
Annotation position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
position.setValue( "value", "0" );
prop3.addAnnotation( key );
prop3.addAnnotation( position );
position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
position.setValue( "value", "1" );
prop1.addAnnotation( key );
prop1.addAnnotation( position );
position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
position.setValue( "value", "2" );
prop2.addAnnotation( key );
prop2.addAnnotation( position );
position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
position.setValue("value", "3");
prop4.addAnnotation( position );
GenerationContext generationContext = new GenerationContext( dataModel );
try {
String result = engine.generateAllConstructorsString(generationContext, object1);
assertEquals( results.getProperty( "testAllConstructorsStringGeneration" ), result );
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Test
public void testMaxFieldsForConstructorsStringGeneration1() {
DataModel dataModel = dataModelOracleDriver.createModel();
DataObject object1 = dataModel.addDataObject("com.test.MaxFieldsForConstructor1");
ObjectProperty prop1;
//The constructor for this data object should be generated, since we don't reach the limit.
for (int i = 0; i < GenerationTools.MAX_FIELDS_FOR_DEFAULT_CONSTRUCTOR-1; i++) {
prop1 = object1.addProperty("attribute"+normalize(i), "java.lang.String");
((ObjectPropertyImpl)prop1).setFileOrder( i );
}
GenerationContext generationContext = new GenerationContext( dataModel );
try {
String result = engine.generateAllConstructorsString(generationContext, object1);
assertEquals( results.getProperty( "testMaxFieldsForConstructorsStringGeneration1" ), result );
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Test
public void testMaxFieldsForConstructorsStringGeneration2() {
DataModel dataModel = dataModelOracleDriver.createModel();
DataObject object1 = dataModel.addDataObject("com.test.MaxFieldsForConstructor2");
ObjectProperty prop1;
//The constructor for this data object should be generated, since we don't reach the limit.
for (int i = 0; i < GenerationTools.MAX_FIELDS_FOR_DEFAULT_CONSTRUCTOR; i++) {
prop1 = object1.addProperty("attribute"+normalize(i), "java.lang.String");
}
GenerationContext generationContext = new GenerationContext( dataModel );
try {
String result = engine.generateAllConstructorsString(generationContext, object1);
assertEquals( results.getProperty( "testMaxFieldsForConstructorsStringGeneration2" ), result );
} catch ( Exception e ) {
e.printStackTrace();
}
}
private String normalize(int i) {
if ( i < 10 ) return "000"+i;
if ( i < 100 ) return "00"+i;
if ( i < 1000 ) return "0"+i;
return i+"";
}
@Test
public void testFieldAnnotationStringGeneration() {
Annotation label = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Label.class.getName() ) );
label.setValue( "value", "Attribute 1" );
Annotation desc = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Description.class.getName() ) );
desc.setValue( "value", "Description for Attribute 1" );
Annotation key = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Key.class.getName() ) );
Annotation position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
position.setValue("value", "0");
GenerationContext generationContext = new GenerationContext( dataModelOracleDriver.createModel() );
try {
String result = engine.generateAnnotationString(generationContext, label);
assertEquals( results.getProperty( "testFieldAnnotationStringGeneration1" ), result );
result = engine.generateAnnotationString(generationContext, desc);
assertEquals( results.getProperty( "testFieldAnnotationStringGeneration2" ), result );
result = engine.generateAnnotationString(generationContext, key);
assertEquals( results.getProperty( "testFieldAnnotationStringGeneration3" ), result );
result = engine.generateAnnotationString(generationContext, position);
assertEquals( results.getProperty( "testFieldAnnotationStringGeneration4" ), result );
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Test
public void testAllFieldAnnotationsStringGeneration() {
DataModel dataModel = dataModelOracleDriver.createModel();
DataObject object1 = dataModel.addDataObject("com.test.Object1");
ObjectProperty prop1 = object1.addProperty("attribute1", "java.lang.String");
Annotation label = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Label.class.getName() ) );
label.setValue( "value", "Attribute 1" );
Annotation desc = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Description.class.getName() ) );
desc.setValue( "value", "Description for Attribute 1" );
Annotation key = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Key.class.getName() ) );
Annotation position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
position.setValue( "value", "0" );
prop1.addAnnotation( label );
prop1.addAnnotation( desc );
prop1.addAnnotation( key );
prop1.addAnnotation( position );
GenerationContext generationContext = new GenerationContext( dataModelOracleDriver.createModel() );
try {
String result = engine.generateAllAnnotationsString(generationContext, prop1);
assertEquals( results.getProperty( "testAllFieldAnnotationsStringGeneration" ), result );
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Test
public void testFieldStringGeneration() {
DataModel dataModel = dataModelOracleDriver.createModel();
DataObject object = dataModel.addDataObject("com.test.Object1");
ObjectProperty property = object.addProperty("attribute1", "java.lang.String");
GenerationContext generationContext = new GenerationContext( dataModel );
try {
String result = engine.generateFieldString(generationContext, property);
assertEquals( results.getProperty( "testFieldStringGeneration" ), result );
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Test
public void testMethodStringGeneration() {
DataModel dataModel = dataModelOracleDriver.createModel();
Parameter parameter1 = new ParameterImpl( new TypeImpl( "com.test.Object1" ), "o1" );
Parameter parameter2 = new ParameterImpl( new TypeImpl( "com.test.Object1" ), "o2" );
Type returnType = new TypeImpl( "com.test.Object1" );
Method method = new MethodImpl( "test", Arrays.asList( parameter1, parameter2 ), "return o1;", returnType, Visibility.PUBLIC );
DataObject object = dataModel.addDataObject( "com.test.Object1" );
object.addMethod( method );
GenerationContext generationContext = new GenerationContext( dataModel );
try {
String result = engine.generateMethodString( generationContext, method );
assertEquals( results.getProperty( "testMethodStringGeneration" ), results.getProperty( "testMethodStringGeneration" ), result );
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Test
public void testClassWithNestedClassStringGeneration() {
DataModel dataModel = dataModelOracleDriver.createModel();
DataObject object = dataModel.addDataObject("com.test.Object1");
GenerationContext generationContext = new GenerationContext( dataModel );
try {
String result = engine.generateNestedClassString(generationContext, object);
assertEquals( results.getProperty( "testNestedClassStringGeneration" ), results.getProperty( "testNestedClassStringGeneration" ), result );
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Test
// Return field definition + annotations
public void testCompleteFieldStringGeneration() {
DataModel dataModel = dataModelOracleDriver.createModel();
DataObject object1 = dataModel.addDataObject("com.test.Object1");
ObjectProperty prop1 = object1.addProperty("attribute1", "java.lang.String");
Annotation label = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Label.class.getName() ) );
label.setValue( "value", "Attribute 1" );
Annotation desc = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Description.class.getName() ) );
desc.setValue( "value", "Description for Attribute 1" );
Annotation key = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Key.class.getName() ) );
Annotation position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
position.setValue( "value", "0" );
prop1.addAnnotation( label );
prop1.addAnnotation( desc );
prop1.addAnnotation( key );
prop1.addAnnotation( position );
GenerationContext generationContext = new GenerationContext( dataModelOracleDriver.createModel() );
try {
String result = engine.generateCompleteFieldString(generationContext, prop1);
assertEquals( results.getProperty( "testCompleteFieldStringGeneration" ), result );
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Test
public void testFieldAccessorStringGeneration() {
DataModel dataModel = dataModelOracleDriver.createModel();
DataObject object = dataModel.addDataObject("com.test.Object1");
ObjectProperty property = object.addProperty("attribute1", "java.lang.String");
GenerationContext generationContext = new GenerationContext( dataModel );
try {
String result = engine.generateFieldGetterString(generationContext, property);
assertEquals( results.getProperty( "testFieldAccessorStringGeneration" ), result );
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Test
public void testFieldMutatorStringGeneration() {
DataModel dataModel = dataModelOracleDriver.createModel();
DataObject object = dataModel.addDataObject("com.test.Object1");
ObjectProperty property = object.addProperty("attribute1", "java.lang.String");
GenerationContext generationContext = new GenerationContext( dataModel );
try {
String result = engine.generateFieldSetterString(generationContext, property);
assertEquals( results.getProperty( "testFieldMutatorStringGeneration" ), result );
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Test
public void testFieldAccessorMutatorStringGeneration() {
testFieldAccessorStringGeneration();
testFieldMutatorStringGeneration();
}
@Test
public void testEqualsStringGeneration() {
DataModel dataModel = dataModelOracleDriver.createModel();
DataObject object1 = dataModel.addDataObject("com.test.Object1");
DataObject object2 = dataModel.addDataObject("com.test.sub.Object2");
ObjectPropertyImpl prop1 = (ObjectPropertyImpl) object1.addProperty("attribute1", "java.lang.String");
prop1.setFileOrder( 0 );
ObjectPropertyImpl prop2 = (ObjectPropertyImpl) object1.addProperty("attribute2", "java.lang.Boolean");
prop2.setFileOrder( 1 );
ObjectPropertyImpl prop3 = (ObjectPropertyImpl) object1.addProperty("attribute3", object2.getClassName());
prop3.setFileOrder( 2 );
ObjectPropertyImpl prop4 = (ObjectPropertyImpl) object1.addProperty("attribute4", "long");
prop4.setFileOrder( 3 );
Annotation key = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Key.class.getName() ) );
Annotation position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
position.setValue( "value", "0" );
prop4.addAnnotation( key );
prop4.addAnnotation( position );
position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
position.setValue( "value", "1" );
prop1.addAnnotation( key );
prop1.addAnnotation( position );
position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
position.setValue( "value", "2" );
prop2.addAnnotation( key );
prop2.addAnnotation( position );
position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
position.setValue("value", "3");
prop3.addAnnotation( position );
GenerationContext generationContext = new GenerationContext( dataModel );
try {
String result = engine.generateEqualsString(generationContext, object1);
assertEquals( results.getProperty( "testEqualsStringGeneration" ), result );
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Test
public void testHashCodeStringGeneration() {
DataModel dataModel = dataModelOracleDriver.createModel();
DataObject object1 = dataModel.addDataObject("com.test.Object1");
DataObject object2 = dataModel.addDataObject("com.test.sub.Object2");
ObjectProperty prop1 = object1.addProperty("attribute1", "java.lang.String");
(( ObjectPropertyImpl ) prop1 ).setFileOrder( 0 );
ObjectProperty prop2 = object1.addProperty("attribute2", "java.lang.Boolean");
(( ObjectPropertyImpl ) prop2 ).setFileOrder( 1 );
ObjectProperty prop3 = object1.addProperty("attribute3", object2.getClassName());
(( ObjectPropertyImpl ) prop3 ).setFileOrder( 2 );
ObjectProperty prop4 = object1.addProperty("attribute4", "long");
(( ObjectPropertyImpl ) prop4 ).setFileOrder( 3 );
Annotation key = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Key.class.getName() ) );
Annotation position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
position.setValue( "value", "0" );
prop4.addAnnotation( key );
prop4.addAnnotation( position );
position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
position.setValue( "value", "1" );
prop1.addAnnotation( key );
prop1.addAnnotation( position );
position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
position.setValue( "value", "2" );
prop2.addAnnotation( key );
prop2.addAnnotation( position );
position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
position.setValue("value", "3");
prop3.addAnnotation( position );
GenerationContext generationContext = new GenerationContext( dataModel );
try {
String result = engine.generateHashCodeString(generationContext, object1);
assertEquals( results.getProperty( "testHashCodeStringGeneration" ), result );
} catch ( Exception e ) {
e.printStackTrace();
}
}
@Test
public void testJavaClassStringGeneration() {
DataModel dataModel = dataModelOracleDriver.createModel();
DataObject object1 = dataModel.addDataObject("com.test.Object1");
DataObject object2 = dataModel.addDataObject("com.test.sub.Object2");
Annotation label = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Label.class.getName() ) );
label.setValue( "value", "Object1 Label" );
object1.addAnnotation( label );
Annotation classReactive = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.ClassReactive.class.getName() ) );
object1.addAnnotation( classReactive );
Annotation propReactive = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.PropertyReactive.class.getName() ) );
object1.addAnnotation( propReactive );
Annotation role = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Role.class.getName() ) );
role.setValue( "value", org.kie.api.definition.type.Role.Type.EVENT.name() );
object1.addAnnotation( role );
ObjectProperty prop1 = object1.addProperty("attribute1", "java.lang.String");
ObjectProperty prop2 = object1.addProperty("attribute2", "java.lang.Boolean");
ObjectProperty prop3 = object1.addProperty("attribute3", object2.getClassName());
ObjectProperty prop4 = object1.addProperty("attribute4", "long");
Annotation key = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Key.class.getName() ) );
Annotation position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
position.setValue( "value", "0" );
prop4.addAnnotation( key );
prop4.addAnnotation( position );
position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
position.setValue( "value", "1" );
prop1.addAnnotation( key );
prop1.addAnnotation( position );
position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
position.setValue( "value", "2" );
prop2.addAnnotation( key );
prop2.addAnnotation( position );
position = new AnnotationImpl( annotationDefinitions.get( org.kie.api.definition.type.Position.class.getName() ) );
position.setValue("value", "3");
prop3.addAnnotation(position);
GenerationContext generationContext = new GenerationContext( dataModel );
try {
String result = engine.generateJavaClassString(generationContext, object1);
logger.debug( result );
} catch ( Exception e ) {
e.printStackTrace();
}
}
}