All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.sfm.reflect.meta.PropertyMeta Maven / Gradle / Ivy

package org.sfm.reflect.meta;

import java.lang.reflect.Type;

import org.sfm.reflect.ReflectionService;
import org.sfm.reflect.Setter;
import org.sfm.reflect.TypeHelper;


public abstract class PropertyMeta {
	private final String name;
	protected final ReflectionService reflectService;
	
	private volatile Setter setter;
	private volatile ClassMeta classMeta;
	public PropertyMeta(String name, ReflectionService reflectService) {
		this.name = name;
		this.reflectService = reflectService;
	}

	public final Setter getSetter() {
		Setter lsetter = setter;
		if (lsetter == null) {
			lsetter = newSetter();
			setter = lsetter;
		}
		return lsetter;
	}

	protected abstract Setter newSetter();

	public final String getName() {
		return name;
	}

	public abstract Type getType();

	public final ClassMeta getClassMeta() {
		ClassMeta meta = classMeta;
		if (meta == null) {
			meta = newClassMeta();
			classMeta = meta;
		}
		return meta;
	}

	protected ClassMeta newClassMeta() {
		return reflectService.getClassMeta(getType());
	}

	public boolean isPrimitive() {
		return TypeHelper.isPrimitive(getType());
	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy