
io.vertx.codegen.ParamInfo Maven / Gradle / Ivy
package io.vertx.codegen;
/*
* Copyright 2014 Red Hat, Inc.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Apache License v2.0 which accompanies this distribution.
*
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* The Apache License v2.0 is available at
* http://www.opensource.org/licenses/apache2.0.php
*
* You may elect to redistribute this code under either of these licenses.
*/
import io.vertx.codegen.doc.Text;
import io.vertx.codegen.type.ClassKind;
import io.vertx.codegen.type.ClassTypeInfo;
import io.vertx.codegen.type.ParameterizedTypeInfo;
import io.vertx.codegen.type.TypeInfo;
/**
* @author Tim Fox
*/
public class ParamInfo {
final int index;
final String name;
final Text description;
final TypeInfo type;
public ParamInfo(int index, String name, Text description, TypeInfo type) {
this.index = index;
this.name = name;
this.description = description;
this.type = type;
}
public int getIndex() {
return index;
}
public String getName() {
return name;
}
public String getName(Case _case) {
return _case.format(Case.CAMEL.parse(name));
}
public Text getDescription() {
return description;
}
/**
* @return true when the param is nullable
*/
public boolean isNullable() {
return type.getKind() == ClassKind.OBJECT || type.isNullable();
}
/**
* @return true when the param callback value is nullable: when the parameter type is an
* handler or an async result handler it returns the nullable boolean of the corresponding
* parameter, otherwise it returns null
*/
public Boolean isNullableCallback() {
switch (type.getKind()) {
case HANDLER:
TypeInfo handler = ((ParameterizedTypeInfo)type).getArg(0);
switch (handler.getKind()) {
case OBJECT:
return true;
case ASYNC_RESULT:
TypeInfo asyncResult = ((ParameterizedTypeInfo)handler).getArg(0);
switch (asyncResult.getKind()) {
case OBJECT:
return true;
default:
return asyncResult.isNullable();
}
default:
return handler.isNullable();
}
default:
return null;
}
}
public TypeInfo getType() {
return type;
}
public boolean isDataObject() {
return type instanceof ClassTypeInfo && (type).getKind() == ClassKind.DATA_OBJECT;
}
@Override
public boolean equals(Object other) {
if (!(other instanceof ParamInfo)) {
return false;
}
ParamInfo pother = (ParamInfo)other;
return this.name.equals(pother.name) && this.type.equals(pother.type);
}
@Override
public int hashCode() {
int result = name.hashCode();
result = 31 * result + type.hashCode();
return result;
}
@Override
public String toString() {
return type + " " + name;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy