mirror of
https://github.com/dmulloy2/ProtocolLib.git
synced 2024-06-28 15:54:42 +02:00
73 lines
1.7 KiB
Java
73 lines
1.7 KiB
Java
package com.comphenix.protocol.wrappers;
|
|
|
|
import com.google.common.base.Preconditions;
|
|
|
|
/**
|
|
* Represents a wrapper for an NMS object.
|
|
* @author Kristian
|
|
*/
|
|
public abstract class AbstractWrapper {
|
|
protected Object handle;
|
|
protected Class<?> handleType;
|
|
|
|
/**
|
|
* Construct a new NMS wrapper.
|
|
* @param handleType - the NMS handle type.
|
|
*/
|
|
public AbstractWrapper(Class<?> handleType) {
|
|
this.handleType = Preconditions.checkNotNull(handleType, "handleType cannot be NULL");
|
|
}
|
|
|
|
/**
|
|
* Set the underlying NMS object.
|
|
* @param handle - the NMS object.
|
|
* @throws IllegalArgumentException If the handle is NULL.
|
|
* @throws IllegalArgumentException If the handle is not assignable to {@link #getHandleType()}.
|
|
*/
|
|
protected void setHandle(Object handle) {
|
|
if (handle == null)
|
|
throw new IllegalArgumentException("handle cannot be NULL.");
|
|
if (!handleType.isAssignableFrom(handle.getClass()))
|
|
throw new IllegalArgumentException("handle (" + handle + ") is not a " + handleType + ", but " + handle.getClass());
|
|
this.handle = handle;
|
|
}
|
|
|
|
/**
|
|
* Retrieves the underlying NMS object.
|
|
* @return The underlying NMS object.
|
|
*/
|
|
public Object getHandle() {
|
|
return handle;
|
|
}
|
|
|
|
/**
|
|
* Retrieve the type of the handle.
|
|
* @return The type of the handle.
|
|
*/
|
|
public Class<?> getHandleType() {
|
|
return handleType;
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object obj) {
|
|
if (obj == this) return true;
|
|
|
|
if (obj instanceof AbstractWrapper) {
|
|
AbstractWrapper that = (AbstractWrapper) obj;
|
|
return this.handle.equals(that.handle);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
return handle.hashCode();
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return getClass().getName() + "[handle=" + handle + "]";
|
|
}
|
|
}
|