@SuppressWarnings("unchecked") @Override public <T> Optional<ChildEntity<T>> createChildDefinition(Field field, EntityModel<T> declaringEntity) { Map<String, Object> attributes = findAnnotationAttributes(field, AggregateMember.class).orElse(null); if (attributes == null || !isFieldTypeSupported(field)) { return Optional.empty(); } EntityModel<Object> childEntityModel = extractChildEntityModel(declaringEntity, attributes, field); ForwardingMode eventForwardingMode = instantiateForwardingMode( field, childEntityModel, (Class<? extends ForwardingMode>) attributes.get("eventForwardingMode") ); return Optional.of(new AnnotatedChildEntity<>( childEntityModel, (Boolean) attributes.get("forwardCommands"), (msg, parent) -> resolveCommandTarget(msg, parent, field, childEntityModel), (msg, parent) -> resolveEventTargets(msg, parent, field, eventForwardingMode) )); }
@SuppressWarnings("unchecked") @Override public <T> Optional<ChildEntity<T>> createChildDefinition(Field field, EntityModel<T> declaringEntity) { Map<String, Object> attributes = findAnnotationAttributes(field, AggregateMember.class).orElse(null); if (attributes == null || !isFieldTypeSupported(field)) { return Optional.empty(); } EntityModel<Object> childEntityModel = extractChildEntityModel(declaringEntity, attributes, field); ForwardingMode eventForwardingMode = instantiateForwardingMode( field, childEntityModel, (Class<? extends ForwardingMode>) attributes.get("eventForwardingMode") ); return Optional.of(new AnnotatedChildEntity<>( childEntityModel, (Boolean) attributes.get("forwardCommands"), (msg, parent) -> resolveCommandTarget(msg, parent, field, childEntityModel), (msg, parent) -> resolveEventTargets(msg, parent, field, eventForwardingMode) )); }