本文整理汇总了Java中com.sun.codemodel.JTypeVar类的典型用法代码示例。如果您正苦于以下问题:Java JTypeVar类的具体用法?Java JTypeVar怎么用?Java JTypeVar使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
JTypeVar类属于com.sun.codemodel包,在下文中一共展示了JTypeVar类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: addPublicGetMethod
import com.sun.codemodel.JTypeVar; //导入依赖的package包/类
private JMethod addPublicGetMethod(JDefinedClass jclass, JMethod internalGetMethod, JFieldRef notFoundValue) {
JMethod method = jclass.method(PUBLIC, jclass.owner()._ref(Object.class), GETTER_NAME);
JTypeVar returnType = method.generify("T");
method.type(returnType);
Models.suppressWarnings(method, "unchecked");
JVar nameParam = method.param(String.class, "name");
JBlock body = method.body();
JVar valueVar = body.decl(jclass.owner()._ref(Object.class), "value",
invoke(internalGetMethod).arg(nameParam).arg(notFoundValue));
JConditional found = method.body()._if(notFoundValue.ne(valueVar));
found._then()._return(cast(returnType, valueVar));
JBlock notFound = found._else();
JMethod getAdditionalProperties = jclass.getMethod("getAdditionalProperties", new JType[] {});
if (getAdditionalProperties != null) {
notFound._return(cast(returnType, invoke(getAdditionalProperties).invoke("get").arg(nameParam)));
} else {
notFound._throw(illegalArgumentInvocation(jclass, nameParam));
}
return method;
}
示例2: generateNewCopyBuilderMethod
import com.sun.codemodel.JTypeVar; //导入依赖的package包/类
JMethod generateNewCopyBuilderMethod(final boolean partial) {
final JDefinedClass typeDefinition = this.typeOutline.isInterface() && ((DefinedInterfaceOutline)this.typeOutline).getSupportInterface() != null ? ((DefinedInterfaceOutline)this.typeOutline).getSupportInterface() : this.definedClass;
final int mods = this.implement ? this.definedClass.isAbstract() ? JMod.PUBLIC | JMod.ABSTRACT : JMod.PUBLIC : JMod.NONE;
final JMethod copyBuilderMethod = typeDefinition.method(mods, this.builderClass.raw, this.settings.getNewCopyBuilderMethodName());
final JTypeVar copyBuilderMethodTypeParam = copyBuilderMethod.generify(BuilderGenerator.PARENT_BUILDER_TYPE_PARAMETER_NAME);
final JVar parentBuilderParam = copyBuilderMethod.param(JMod.FINAL, copyBuilderMethodTypeParam, BuilderGenerator.PARENT_BUILDER_PARAM_NAME);
final CopyGenerator copyGenerator = this.pluginContext.createCopyGenerator(copyBuilderMethod, partial);
copyBuilderMethod.type(this.builderClass.raw.narrow(copyBuilderMethodTypeParam));
final JMethod copyBuilderConvenienceMethod = typeDefinition.method(mods, this.builderClass.raw.narrow(this.pluginContext.voidClass), this.settings.getNewCopyBuilderMethodName());
final CopyGenerator copyConvenienceGenerator = this.pluginContext.createCopyGenerator(copyBuilderConvenienceMethod, partial);
if (this.implement && !this.definedClass.isAbstract()) {
copyBuilderMethod.body()._return(copyGenerator.generatePartialArgs(this.pluginContext._new((JClass)copyBuilderMethod.type()).arg(parentBuilderParam).arg(JExpr._this()).arg(JExpr.TRUE)));
copyBuilderConvenienceMethod.body()._return(copyConvenienceGenerator.generatePartialArgs(this.pluginContext.invoke(this.settings.getNewCopyBuilderMethodName()).arg(JExpr._null())));
}
if (this.typeOutline.getSuperClass() != null) {
copyBuilderMethod.annotate(Override.class);
copyBuilderConvenienceMethod.annotate(Override.class);
}
return copyBuilderMethod;
}
示例3: generateCopyToMethod
import com.sun.codemodel.JTypeVar; //导入依赖的package包/类
final void generateCopyToMethod(final boolean partial) {
if (this.implement) {
final JDefinedClass typeDefinition = this.typeOutline.isInterface() && ((DefinedInterfaceOutline)this.typeOutline).getSupportInterface() != null ? ((DefinedInterfaceOutline)this.typeOutline).getSupportInterface() : this.definedClass;
final JMethod copyToMethod = typeDefinition.method(JMod.PUBLIC, this.pluginContext.voidType, this.settings.getCopyToMethodName());
final JTypeVar typeVar = copyToMethod.generify(BuilderGenerator.PARENT_BUILDER_TYPE_PARAMETER_NAME);
final JVar otherParam = copyToMethod.param(JMod.FINAL, this.builderClass.raw.narrow(typeVar), BuilderGenerator.OTHER_PARAM_NAME);
final CopyGenerator cloneGenerator = this.pluginContext.createCopyGenerator(copyToMethod, partial);
final JBlock body = copyToMethod.body();
final JVar otherRef;
if (this.typeOutline.getSuperClass() != null) {
body.add(cloneGenerator.generatePartialArgs(this.pluginContext.invoke(JExpr._super(), copyToMethod.name()).arg(otherParam)));
}
otherRef = otherParam;
generateFieldCopyExpressions(cloneGenerator, body, otherRef, JExpr._this());
copyToMethod.javadoc().append(getMessage("javadoc.method.copyTo"));
copyToMethod.javadoc().addParam(otherParam).append(getMessage("javadoc.method.copyTo.param.other"));
}
}
示例4: run
import com.sun.codemodel.JTypeVar; //导入依赖的package包/类
@Override
protected void run(Set<ClassOutline> classes, Set<JClass> directClasses) {
JDefinedClass scratch = getOutline().getClassFactory().createInterface(getPackage(), "_scratch", null);
try {
JDefinedClass _interface = getOutline().getClassFactory().createInterface(getPackage(), "Traverser", null);
setOutput(_interface);
final JTypeVar retType = scratch.generify("?");
final JTypeVar exceptionType = _interface.generify("E", Throwable.class);
final JClass narrowedVisitor = visitor.narrow(retType).narrow(exceptionType);
for (JClass jc : allConcreteClasses(classes, directClasses)) {
implTraverse(exceptionType, narrowedVisitor, jc);
}
} finally {
jpackage.remove(scratch);
}
}
示例5: run
import com.sun.codemodel.JTypeVar; //导入依赖的package包/类
public void run(Set<ClassOutline> sorted, JDefinedClass visitor) {
// skip over abstract classes
// add the accept method to the bean
sorted.stream().filter(classOutline -> !classOutline.target.isAbstract()).forEach(classOutline -> {
// add the accept method to the bean
JDefinedClass beanImpl = classOutline.implClass;
final JMethod acceptMethod = beanImpl.method(JMod.PUBLIC, void.class, "accept");
final JTypeVar returnType = acceptMethod.generify("R");
final JTypeVar exceptionType = acceptMethod.generify("E", Throwable.class);
acceptMethod.type(returnType);
acceptMethod._throws(exceptionType);
final JClass narrowedVisitor = visitor.narrow(returnType, exceptionType);
JVar vizParam = acceptMethod.param(narrowedVisitor, "aVisitor");
JBlock block = acceptMethod.body();
String methodName = visitMethodNamer.apply(beanImpl.name());
block._return(vizParam.invoke(methodName).arg(JExpr._this()));
});
}
示例6: run
import com.sun.codemodel.JTypeVar; //导入依赖的package包/类
@Override
protected void run(Set<ClassOutline> classes, Set<JClass> directClasses) {
final JDefinedClass _interface = outline.getClassFactory().createInterface(jpackage, "Visitable", null);
setOutput( _interface );
final JMethod _method = getOutput().method(JMod.NONE, void.class, "accept");
final JTypeVar returnType = _method.generify("R");
final JTypeVar exceptionType = _method.generify("E", Throwable.class);
_method.type(returnType);
_method._throws(exceptionType);
final JClass narrowedVisitor = visitor.narrow(returnType, exceptionType);
_method.param(narrowedVisitor, "aVisitor");
for(ClassOutline classOutline : classes) {
classOutline.implClass._implements(getOutput());
}
}
示例7: generateForDirectClass
import com.sun.codemodel.JTypeVar; //导入依赖的package包/类
private void generateForDirectClass(JDefinedClass traversingVisitor, JTypeVar returnType, JTypeVar exceptionType, JClass implClass) {
// add method impl to traversing visitor
JMethod travViz;
String visitMethodName = visitMethodNamer.apply(implClass.name());
travViz = traversingVisitor.method(JMod.PUBLIC, returnType, visitMethodName);
travViz._throws(exceptionType);
JVar beanVar = travViz.param(implClass, "aBean");
travViz.annotate(Override.class);
JBlock travVizBloc = travViz.body();
addTraverseBlock(travViz, beanVar, true);
JVar retVal = travVizBloc.decl(returnType, "returnVal");
travVizBloc.assign(retVal, JExpr.invoke(JExpr.invoke("getVisitor"), visitMethodName).arg(beanVar));
travVizBloc._if(JExpr.ref("progressMonitor").ne(JExpr._null()))._then().invoke(JExpr.ref("progressMonitor"), "visited").arg(beanVar);
addTraverseBlock(travViz, beanVar, false);
travVizBloc._return(retVal);
}
示例8: generate
import com.sun.codemodel.JTypeVar; //导入依赖的package包/类
private void generate(JDefinedClass traversingVisitor, JTypeVar returnType, JTypeVar exceptionType, JClass implClass) {
// add method impl to traversing visitor
JMethod travViz;
travViz = traversingVisitor.method(JMod.PUBLIC, returnType, visitMethodNamer.apply(implClass.name()));
travViz._throws(exceptionType);
JVar beanVar = travViz.param(implClass, "aBean");
travViz.annotate(Override.class);
JBlock travVizBloc = travViz.body();
addTraverseBlock(travViz, beanVar, true);
JVar retVal = travVizBloc.decl(returnType, "returnVal");
travVizBloc.assign(retVal,
JExpr.invoke(beanVar, "accept").arg(JExpr.invoke("getVisitor")));
travVizBloc._if(JExpr.ref("progressMonitor").ne(JExpr._null()))._then().invoke(JExpr.ref("progressMonitor"), "visited").arg(beanVar);
// case to traverse after the visit
addTraverseBlock(travViz, beanVar, false);
travVizBloc._return(retVal);
}
示例9: generateDelegator
import com.sun.codemodel.JTypeVar; //导入依赖的package包/类
/**
* Generates a delegator for the given class.
*
* @param delegateClass
* delegate class
*/
public void generateDelegator(JDefinedClass delegateClass) {
JPackage pkg = context.getDelegatorPackage();
try {
JDefinedClass delegator = pkg
._class(delegateClass.name() + context.getConfig().getDelegatorSuffix());
context.annotateAsGenerated(delegator);
JClass delegateType = delegateClass;
if (delegateClass.typeParams().length > 0) {
Stream.of(delegateClass.typeParams()).map(JTypeVar::name)
.forEach(delegator::generify);
delegateType = delegateClass.narrow(delegateClass.typeParams());
}
JFieldVar delegate = delegator.field(JMod.PROTECTED, delegateType,
context.getConfig().getDelegateFieldName());
delegate.init(JExpr._new(delegateType));
JDefinedClass klass = delegateClass;
while (klass != null) {
buildDelegatingMethods(klass, delegator, delegate);
if (klass._extends() instanceof JDefinedClass) {
klass = (JDefinedClass) klass._extends();
}
else {
klass = null;
}
}
}
catch (JClassAlreadyExistsException exc) {
throw Exceptions.unchecked(exc);
}
}
示例10: expectClass
import com.sun.codemodel.JTypeVar; //导入依赖的package包/类
protected void expectClass(String className, String... typeParams) {
expectClass(className);
JTypeVar[] typeVars = klass.typeParams();
assertThat(typeVars.length).isEqualTo(typeParams.length);
for (int i = 0; i < typeVars.length; i++) {
assertThat(typeVars[i].name()).isEqualTo(typeParams[i]);
}
}
示例11: resolveType
import com.sun.codemodel.JTypeVar; //导入依赖的package包/类
@Override
public JClass resolveType(String shortName) {
Type t = types.get(shortName);
if (t != null) {
return t.definition;
}
JTypeVar jtv = generics.get(shortName);
if (jtv != null) {
return jtv;
}
return parent().resolveType(shortName);
}
示例12: addGeneric
import com.sun.codemodel.JTypeVar; //导入依赖的package包/类
void addGeneric(String g, JTypeVar var) {
if (current instanceof Scope.Generic) {
Scope.Generic genericScope = (Scope.Generic) current;
genericScope.addGeneric(g, var);
} else {
Logger.error("Cannot add generic (" + g + ") to a Scope (" + current.getClass().getName() + ") that doesn't allow generics!");
throw new RuntimeException("Invalid Scope for operation!");
}
}
示例13: generateCopyOfMethod
import com.sun.codemodel.JTypeVar; //导入依赖的package包/类
JMethod generateCopyOfMethod(final TypeOutline paramType, final boolean partial) {
if (paramType.getSuperClass() != null) {
generateCopyOfMethod(paramType.getSuperClass(), partial);
}
final JMethod copyOfMethod = this.definedClass.method(JMod.PUBLIC | JMod.STATIC, this.builderClass.raw.narrow(Void.class), this.pluginContext.buildCopyMethodName);
final JTypeVar copyOfMethodTypeParam = copyOfMethod.generify(BuilderGenerator.PARENT_BUILDER_TYPE_PARAMETER_NAME);
copyOfMethod.type(this.builderClass.raw.narrow(copyOfMethodTypeParam));
final JVar otherParam = copyOfMethod.param(JMod.FINAL, paramType.getImplClass(), BuilderGenerator.OTHER_PARAM_NAME);
final CopyGenerator copyGenerator = this.pluginContext.createCopyGenerator(copyOfMethod, partial);
final JVar newBuilderVar = copyOfMethod.body().decl(JMod.FINAL, copyOfMethod.type(), BuilderGenerator.NEW_BUILDER_VAR_NAME, JExpr._new(copyOfMethod.type()).arg(JExpr._null()).arg(JExpr._null()).arg(JExpr.FALSE));
copyOfMethod.body().add(copyGenerator.generatePartialArgs(this.pluginContext.invoke(otherParam, this.settings.getCopyToMethodName()).arg(newBuilderVar)));
copyOfMethod.body()._return(newBuilderVar);
return copyOfMethod;
}
示例14: MetaInfoOutline
import com.sun.codemodel.JTypeVar; //导入依赖的package包/类
MetaInfoOutline(final SelectorGenerator selectorGenerator, final ClassOutline classOutline, final JDefinedClass selectorClass, final JTypeVar rootTypeParam, final JTypeVar parentTypeParam, final JMethod buildChildrenMethod, final JVar productMapVar) {
this.selectorGenerator = selectorGenerator;
this.classOutline = classOutline;
this.selectorClass = selectorClass;
this.rootTypeParam = rootTypeParam;
this.parentTypeParam = parentTypeParam;
this.buildChildrenMethod = buildChildrenMethod;
this.buildChildrenMethod.body().add(productMapVar.invoke("putAll").arg(JExpr._super().invoke(buildChildrenMethod)));
this.productMapVar = productMapVar;
}
示例15: implTraverse
import com.sun.codemodel.JTypeVar; //导入依赖的package包/类
private void implTraverse(JTypeVar exceptionType, JClass narrowedVisitor, JClass implClass) {
JMethod traverseMethod;
String methodName = traverseMethodNamer.apply(implClass.name());
traverseMethod = getOutput().method(JMod.NONE, void.class, methodName);
traverseMethod._throws(exceptionType);
traverseMethod.param(implClass, "aBean");
traverseMethod.param(narrowedVisitor, "aVisitor");
}