package org.nutz.ioc; import java.util.List; import org.nutz.ioc.aop.MirrorFactory; import org.nutz.ioc.meta.IocValue; import org.nutz.json.Json; import org.nutz.lang.Lang; public class IocMaking { private String objectName; private ObjectMaker objectMaker; private Ioc ioc; private IocContext context; private List<ValueProxyMaker> vpms; private MirrorFactory mirrors; public IocMaking( Ioc ioc, MirrorFactory mirrors, IocContext context, ObjectMaker maker, List<ValueProxyMaker> vpms, String objName) { this.objectName = objName; this.objectMaker = maker; this.ioc = ioc; this.context = context; this.vpms = vpms; this.mirrors = mirrors; } public Ioc getIoc() { return ioc; } public IocContext getContext() { return context; } public String getObjectName() { return objectName; } public ObjectMaker getObjectMaker() { return objectMaker; } public MirrorFactory getMirrors() { return mirrors; } public IocMaking clone(String objectName) { return new IocMaking(ioc, mirrors, context, objectMaker, vpms, objectName); } public ValueProxy makeValue(IocValue iv) { for (ValueProxyMaker vpm : vpms) { ValueProxy vp = vpm.make(this, iv); if (null != vp) return vp; } throw Lang.makeThrow( "Unknown value {'%s':%s} for object [%s]", iv.getType(), Json.toJson(iv.getValue()), objectName); } }