package org.jvnet.jaxb2_commons.xjc.generator.concrete;
import org.apache.commons.lang3.Validate;
import org.jvnet.jaxb2_commons.xjc.generator.MElementOutlineGenerator;
import org.jvnet.jaxb2_commons.xjc.outline.MElementOutline;
import org.jvnet.jaxb2_commons.xjc.outline.MPackageOutline;
import org.jvnet.jaxb2_commons.xjc.outline.concrete.CMElementOutline;
import org.jvnet.jaxb2_commons.xml.bind.model.MElementInfo;
import org.jvnet.jaxb2_commons.xml.bind.model.MModelInfo;
import com.sun.tools.xjc.model.CElementInfo;
import com.sun.tools.xjc.model.nav.NClass;
import com.sun.tools.xjc.model.nav.NType;
import com.sun.tools.xjc.outline.ElementOutline;
import com.sun.tools.xjc.outline.Outline;
public class CMElementOutlineGenerator implements MElementOutlineGenerator {
private final Outline outline;
private final CElementInfo elementInfo;
public CMElementOutlineGenerator(Outline outline, CElementInfo elementInfo) {
Validate.notNull(outline);
Validate.notNull(elementInfo);
this.outline = outline;
this.elementInfo = elementInfo;
}
public MElementOutline generate(MPackageOutline parent,
MModelInfo<NType, NClass> modelInfo,
MElementInfo<NType, NClass> elementInfo) {
final ElementOutline elementOutline = outline
.getElement(this.elementInfo);
if (elementOutline != null) {
return new CMElementOutline(parent.getParent(), parent,
elementInfo, elementOutline.implClass);
} else {
return null;
}
}
}