public ExprNode validate(ExprValidationContext validationContext) throws ExprValidationException { if (validationContext.getContextDescriptor() == null) { throw new ExprValidationException("Context property '" + propertyName + "' cannot be used in the expression as provided"); } EventTypeSPI eventType = (EventTypeSPI) validationContext.getContextDescriptor().getContextPropertyRegistry().getContextEventType(); if (eventType == null) { throw new ExprValidationException("Context property '" + propertyName + "' cannot be used in the expression as provided"); } getter = eventType.getGetterSPI(propertyName); if (getter == null) { throw new ExprValidationException("Context property '" + propertyName + "' is not a known property, known properties are " + Arrays.toString(eventType.getPropertyNames())); } returnType = JavaClassHelper.getBoxedType(eventType.getPropertyType(propertyName)); return null; }
EventPropertyWriterSPI writer = spi.getWriter(subPropertyName); EventPropertyGetterSPI getter = spi.getGetterSPI(subPropertyName); Class getterType = spi.getPropertyType(subPropertyName); if (writer == null) { throw new ExprValidationException("Variable by name '" + variableName + "' the property '" + subPropertyName + "' is not writable"); variableTypes.put(fullVariableName, spi.getPropertyType(subPropertyName)); CopyMethodDesc writtenProps = eventTypeWrittenProps.get(spi); if (writtenProps == null) {
Class type = inputEventType.getPropertyType(chainElement.getName()); EventPropertyGetterSPI getter = inputEventType.getGetterSPI(chainElement.getName()); if (type != null && getter != null) {
if (contextPropertyName != null) { EventTypeSPI contextType = (EventTypeSPI) validationContext.getContextDescriptor().getContextPropertyRegistry().getContextEventType(); Class type = JavaClassHelper.getBoxedType(contextType.getPropertyType(contextPropertyName)); evaluator = new ExprIdentNodeEvaluatorContext(streamNum, type, contextType.getGetterSPI(contextPropertyName));