public static <T> ChildNodeInitializerStrategy<T> createUsingParentNode(final Transformer<? extends NamedEntityInstantiator<T>, ? super MutableModelNode> instantiatorTransform) {
return new ChildNodeInitializerStrategy<T>() {
@Override
public <S extends T> NodeInitializer initializer(final ModelType<S> type, Spec<ModelType<?>> constraints) {
return new NodeInitializer() {
@Override
public Multimap<ModelActionRole, ModelAction> getActions(ModelReference<?> subject, ModelRuleDescriptor descriptor) {
return ImmutableSetMultimap.<ModelActionRole, ModelAction>builder()
.put(ModelActionRole.Discover, AddProjectionsAction.of(subject, descriptor,
UnmanagedModelProjection.of(type),
new ModelElementProjection(type)
))
.put(ModelActionRole.Create, DirectNodeNoInputsModelAction.of(subject, descriptor, new Action<MutableModelNode>() {
@Override
public void execute(MutableModelNode modelNode) {
NamedEntityInstantiator<T> instantiator = instantiatorTransform.transform(modelNode.getParent());
S item = instantiator.create(modelNode.getPath().getName(), type.getConcreteClass());
modelNode.setPrivateData(type, item);
}
}))
.build();
}
};
}
};
}
NodeBackedModelMap.java 文件源码
java
阅读 27
收藏 0
点赞 0
评论 0
项目:Reer
作者:
评论列表
文章目录