public JavaBeanType(Class javaClass) { javaClass(javaClass); }
public JavaBeanTypeImpl() { super((T) new JavaBeanType()); }
public void registerJavaBeanType(Class<?> javaBeanClass) { JavaBeanType javaBeanTypeApi = new JavaBeanType().javaClass(javaBeanClass); JavaBeanTypeImpl javaBeanTypeImpl = new JavaBeanTypeImpl(javaBeanTypeApi); javaBeanTypeImpl.setConfiguration(configuration); javaBeanTypes.put(javaBeanClass, javaBeanTypeImpl); registerDataType(javaBeanTypeImpl); }
private DataType getTypeByCollection(Collection collection) { if (collection==null || collection.isEmpty()) { return null; } Iterator iterator = collection.iterator(); DataType commonDataType = getTypeByValue(iterator.next()); if (commonDataType instanceof JavaBeanType) { JavaBeanType javaBeanType = (JavaBeanType) commonDataType; while (iterator.hasNext()) { Object elementValue = iterator.next(); Class elementValueClass = elementValue.getClass(); Class javaBeanClass = javaBeanType.getJavaClass(); while (!javaBeanClass.isAssignableFrom(elementValueClass) && javaBeanClass!=Object.class) { javaBeanType.setJavaClass(javaBeanClass.getSuperclass()); } } } return new ListType(commonDataType); }
workflow.variable(new Variable().id("variable03").type(new DateType()).defaultValue(now)); workflow.variable(new Variable().id("variable04").type(EmailAddressType.INSTANCE).defaultValue("alice@example.org")); workflow.variable(new Variable().id("variable05").type(new JavaBeanType(Integer.class))); workflow.variable(new Variable().id("variable06").type(LinkType.INSTANCE).defaultValue("http://example.org/")); workflow.variable(new Variable().id("variable07").type(new ListType(NumberType.INSTANCE)).defaultValue(Lists.of(40, 41, 42))); assertEquals(Integer.class, ((JavaBeanType) workflow.getVariables().get(4).getType()).getJavaClass());
@Test public void testJavaBeanTypeExpression() { NumberBean numberBean = new NumberBean(); numberBean.number = 3; JavaBeanType javaBeanType = new JavaBeanType().javaClass(NumberBean.class); assertExpression("n", javaBeanType, numberBean, "n.number", 3); }
@Test public void testJavaBeanType() { ExecutableWorkflow workflow = new ExecutableWorkflow() .variable("v", new JavaBeanType().javaClass(MyBean.class)); deploy(workflow); MyBean myBean = new MyBean(); WorkflowInstance workflowInstance = start(createTriggerInstance(workflow) .data("v", myBean)); MyBean retrievedBean = workflowInstance.getVariableValue("v"); assertNotNull(retrievedBean); }
public JavaBeanType(Class javaClass) { javaClass(javaClass); }
public DataType getTypeByValue(Object value) { if (value==null) { return null; } if (value instanceof Collection) { return getTypeByCollection((Collection) value); } if (value instanceof Map) { return getTypeByMap((Map) value); } Class<?> clazz = value.getClass(); DataType dataType = dataTypesByValueClass.get(clazz); if (dataType!=null) { return dataType; } return new JavaBeanType(clazz); }
public DataType getTypeByValue(Object value) { if (value==null) { return null; } Class<?> valueClass = value.getClass(); if (String.class.isAssignableFrom(valueClass)) { return new TextType(); } if (Number.class.isAssignableFrom(valueClass)) { return new NumberType(); } if (Collection.class.isAssignableFrom(valueClass)) { ListType listType = new ListType(); Iterator iterator = ((Collection)value).iterator(); if (iterator.hasNext()) { Object elementValue = iterator.next(); DataType elementType = getTypeByValue(elementValue); listType.elementType(elementType); } return listType; } else if (javaBeanTypes.containsKey(valueClass)) { return new JavaBeanType(valueClass); } throw new RuntimeException("No data type found for value "+value+" ("+valueClass.getName()+")"); }