/*
* Copyright (c) 2011-2020 Contributors to the Eclipse Foundation
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
* which is available at https://www.apache.org/licenses/LICENSE-2.0.
*
* SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
*/
package io.vertx.sqlclient;
import io.vertx.codegen.annotations.GenIgnore;
import io.vertx.codegen.annotations.VertxGen;
import java.util.Objects;
The kind of the property, this can be used to fetch some specific property of the execution result
. /**
* The kind of the property, this can be used to fetch some specific property of the {@link SqlResult execution result}.
*/
@VertxGen
public interface PropertyKind<T> {
Returns: a property kind matching the provided name
, the type
can be used to check the property value type or cast it to the expected type
/**
* @return a property kind matching the provided {@code name}, the {@code type} can be used to check
* the property value type or cast it to the expected type
*/
static <T> PropertyKind<T> create(String name, Class<T> type) {
Objects.requireNonNull(name, "No null name accepted");
Objects.requireNonNull(type, "No null type accepted");
return new PropertyKind<T>() {
@Override
public String name() {
return name;
}
@Override
public Class<T> type() {
return type;
}
@Override
public int hashCode() {
return name.hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
} else if (obj instanceof PropertyKind) {
return name.equals(((PropertyKind)obj).name());
} else {
return false;
}
}
@Override
public String toString() {
return "PropertyKind[name=" + name + ",type=" + type.getName();
}
};
}
Returns: the property name
/**
* @return the property name
*/
String name();
Returns: the property type
/**
* @return the property type
*/
@GenIgnore
Class<T> type();
}