/** * Ctor. * * @param beanEventType target type * @param properties written properties * @param classpathImportService for resolving write methods * @throws EventBeanManufactureException if the write method lookup fail */ public EventBeanManufacturerBeanForge(BeanEventType beanEventType, WriteablePropertyDescriptor[] properties, ClasspathImportService classpathImportService ) throws EventBeanManufactureException { this.beanEventType = beanEventType; this.properties = properties; this.classpathImportService = classpathImportService; beanInstantiator = BeanInstantiatorFactory.makeInstantiator(beanEventType, classpathImportService); writeMethodsReflection = new Method[properties.length]; boolean primitiveTypeCheck = false; primitiveType = new boolean[properties.length]; for (int i = 0; i < properties.length; i++) { writeMethodsReflection[i] = properties[i].getWriteMethod(); primitiveType[i] = properties[i].getType().isPrimitive(); primitiveTypeCheck |= primitiveType[i]; } hasPrimitiveTypes = primitiveTypeCheck; }
/** * Ctor. * * @param beanEventType target type * @param service factory for events * @param properties written properties * @param classpathImportService for resolving write methods * @throws EventBeanManufactureException if the write method lookup fail */ public EventBeanManufacturerBean(BeanEventType beanEventType, EventBeanTypedEventFactory service, WriteablePropertyDescriptor[] properties, ClasspathImportService classpathImportService ) throws EventBeanManufactureException { this.beanEventType = beanEventType; this.service = service; beanInstantiator = BeanInstantiatorFactory.makeInstantiator(beanEventType, classpathImportService).getBeanInstantiator(); writeMethodsReflection = new Method[properties.length]; boolean primitiveTypeCheck = false; primitiveType = new boolean[properties.length]; for (int i = 0; i < properties.length; i++) { writeMethodsReflection[i] = properties[i].getWriteMethod(); primitiveType[i] = properties[i].getType().isPrimitive(); primitiveTypeCheck |= primitiveType[i]; } hasPrimitiveTypes = primitiveTypeCheck; }
Object coerceProperty = coerceProperty(propertyName, applicableClass, property.getValue(), descriptor.getType(), exprNodeOrigin, exprValidationContext, false, true);
Object coerceProperty = coerceProperty(propertyName, applicableClass, property.getValue(), descriptor.getType(), exprNodeOrigin, exprValidationContext, false, true);
private void initializeWriters() { Set<WriteablePropertyDescriptor> writables = PropertyHelper.getWritableProperties(stem.getClazz()); EventPropertyDescriptor[] desc = new EventPropertyDescriptor[writables.size()]; Map<String, Pair<EventPropertyDescriptor, BeanEventPropertyWriter>> writers = new HashMap<String, Pair<EventPropertyDescriptor, BeanEventPropertyWriter>>(); int count = 0; for (final WriteablePropertyDescriptor writable : writables) { EventPropertyDescriptor propertyDesc = new EventPropertyDescriptor(writable.getPropertyName(), writable.getType(), null, false, false, false, false, false); desc[count++] = propertyDesc; writers.put(writable.getPropertyName(), new Pair<>(propertyDesc, new BeanEventPropertyWriter(stem.getClazz(), writable.getWriteMethod()))); } writerMap = writers; writeablePropertyDescriptors = desc; }
widener = TypeWidenerFactory.getCheckPropertyAssignType(streamNames[i], streamTypes[i].getUnderlyingType(), desc.getType(), desc.getPropertyName(), false, typeWidenerCustomizer, statementName); } catch (TypeWidenerException ex) { throw new ExprValidationException(ex.getMessage(), ex);
private FileBeginEndProcessor getBeginEndProcessor(DataFlowOpInitializeContext context, int outputPort) { EventType portEventType = factory.getOutputPortTypes()[outputPort]; Set<WriteablePropertyDescriptor> writeables = EventTypeUtility.getWriteableProperties(portEventType, false, false); List<WriteablePropertyDescriptor> writeableList = new ArrayList<WriteablePropertyDescriptor>(); EventBeanManufacturer manufacturer; if (propertyNameFile != null) { WriteablePropertyDescriptor writeableFile = EventTypeUtility.findWritable(propertyNameFile, writeables); if (writeableFile == null || writeableFile.getType() != String.class) { throw new EPException("Failed to find writable String-type property '" + propertyNameFile + "', is the property read-only?"); } writeableList.add(writeableFile); } try { manufacturer = EventTypeUtility.getManufacturer(portEventType, writeableList.toArray(new WriteablePropertyDescriptor[writeableList.size()]), context.getAgentInstanceContext().getClasspathImportServiceRuntime(), false, context.getAgentInstanceContext().getEventTypeAvroHandler()).getManufacturer(context.getAgentInstanceContext().getEventBeanTypedEventFactory()); } catch (EventBeanManufactureException e) { throw new EPException("Event type '" + portEventType.getName() + "' cannot be written to: " + e.getMessage(), e); } return new FileBeginEndProcessorGeneralPurpose(manufacturer); }
TypeWidenerCustomizer typeWidenerCustomizer = args.getEventTypeAvroHandler().getTypeWidenerCustomizer(targetType); for (int i = 0; i < written.size(); i++) { Class expected = written.get(i).getType(); Map.Entry<String, Object> provided = writtenOffered.get(i); if (provided.getValue() instanceof Class) {
private FileBeginEndProcessor getBeginEndProcessor(DataFlowOpInitializeContext context, int outputPort) { EventType portEventType = factory.getOutputPortTypes()[outputPort]; Set<WriteablePropertyDescriptor> writeables = EventTypeUtility.getWriteableProperties(portEventType, false); List<WriteablePropertyDescriptor> writeableList = new ArrayList<WriteablePropertyDescriptor>(); EventBeanManufacturer manufacturer; if (propertyNameFile != null) { WriteablePropertyDescriptor writeableFile = EventTypeUtility.findWritable(propertyNameFile, writeables); if (writeableFile == null || writeableFile.getType() != String.class) { throw new EPException("Failed to find writable String-type property '" + propertyNameFile + "', is the property read-only?"); } writeableList.add(writeableFile); } try { manufacturer = EventTypeUtility.getManufacturer(portEventType, writeableList.toArray(new WriteablePropertyDescriptor[writeableList.size()]), context.getAgentInstanceContext().getClasspathImportServiceRuntime(), false, context.getAgentInstanceContext().getEventTypeAvroHandler()).getManufacturer(context.getAgentInstanceContext().getEventBeanTypedEventFactory()); } catch (EventBeanManufactureException e) { throw new EPException("Event type '" + portEventType.getName() + "' cannot be written to: " + e.getMessage(), e); } return new FileBeginEndProcessorGeneralPurpose(manufacturer); }
if (columnType == null) { try { TypeWidenerFactory.getCheckPropertyAssignType(columnNames[i], null, desc.getType(), desc.getPropertyName(), false, typeWidenerCustomizer, statementName); } catch (TypeWidenerException ex) { throw new ExprValidationException(ex.getMessage(), ex); final Class returnType = columnEventType.getUnderlyingType(); try { widener = TypeWidenerFactory.getCheckPropertyAssignType(columnNames[i], columnEventType.getUnderlyingType(), desc.getType(), desc.getPropertyName(), false, typeWidenerCustomizer, statementName); } catch (TypeWidenerException ex) { throw new ExprValidationException(ex.getMessage(), ex); if (JavaClassHelper.isSubclassOrImplementsInterface(returnType, desc.getType())) { selectedWritable = desc; widener = new TypeWidenerSPI() { widener = TypeWidenerFactory.getCheckPropertyAssignType(columnNames[i], arrayReturnType, desc.getType(), desc.getPropertyName(), allowObjectArrayToCollectionConversion, typeWidenerCustomizer, statementName); } catch (TypeWidenerException ex) { throw new ExprValidationException(ex.getMessage(), ex); "' of type '" + columnType + "' to event property '" + desc.getPropertyName() + "' typed as '" + desc.getType().getName() + "', column and parameter types mismatch"; throw new ExprValidationException(message); } else { try { widener = TypeWidenerFactory.getCheckPropertyAssignType(columnNames[i], (Class) columnType, desc.getType(), desc.getPropertyName(), false, typeWidenerCustomizer, statementName); } catch (TypeWidenerException ex) {
try { widener = TypeWidenerFactory.getCheckPropertyAssignType(ExprNodeUtilityPrint.toExpressionStringMinPrecedenceSafe(exprNode), exprNode.getForge().getEvaluationType(), writable.getType(), columnName, false, null, statementName); } catch (TypeWidenerException ex) { throw new ExprValidationException(ex.getMessage(), ex);
writable.getType(), columnName, false, null, statementName); items.add(new Item(count, null, exprNode.getForge(), widener)); written.add(writable);
try { widener = TypeWidenerFactory.getCheckPropertyAssignType(ExprNodeUtilityPrint.toExpressionStringMinPrecedenceSafe(exprNode), exprNode.getForge().getEvaluationType(), writable.getType(), columnName, false, typeWidenerCustomizer, statementName); } catch (TypeWidenerException ex) { throw new ExprValidationException(ex.getMessage(), ex);
try { widener = TypeWidenerFactory.getCheckPropertyAssignType(ExprNodeUtilityPrint.toExpressionStringMinPrecedenceSafe(validated), validated.getForge().getEvaluationType(), writable.getType(), writable.getPropertyName(), false, typeWidenerCustomizer, context.getBase().getStatementName()); } catch (TypeWidenerException e) { throw new ExprValidationException("Failed for property '" + writable.getPropertyName() + "'"); evaluatorForges[index] = new ExprEvalWithTypeWidener(widener, validated, writable.getType()); } else { evaluatorForges[index] = validated.getForge();
if (writeableFile == null || writeableFile.getType() != String.class) { throw new EPException("Failed to find writable String-type property '" + propertyNameFile + "', is the property read-only?");
if (writeableFile == null || writeableFile.getType() != String.class) { throw new EPException("Failed to find writable String-type property '" + propertyNameFile + "', is the property read-only?");