package com.softwaremill.common.cdi.autofactory.instance; import com.softwaremill.common.cdi.autofactory.CreatedWith; import com.softwaremill.common.cdi.autofactory.FactoryParameter; import javax.enterprise.inject.Instance; import javax.inject.Inject; /** * @author Adam Warski (adam at warski dot org) */ @CreatedWith(InjectDataAndInstanceConstructor.Factory.class) public class InjectDataAndInstanceConstructor { private final String data; private final Instance<InstanceBean> bean; private final Instance<InstanceBean2> bean2; @Inject public InjectDataAndInstanceConstructor(Instance<InstanceBean> bean, Instance<InstanceBean2> bean2, @FactoryParameter String data) { this.bean = bean; this.bean2 = bean2; this.data = data; } public String getData() { return data + bean.get().getData() + bean2.get().getData(); } public static interface Factory { InjectDataAndInstanceConstructor create(String data); } }