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

com.jwebmp.guicedinjection.interfaces.IDefaultService Maven / Gradle / Ivy

package com.jwebmp.guicedinjection.interfaces;

import com.jwebmp.guicedinjection.GuiceContext;

import javax.validation.constraints.NotNull;
import java.util.Comparator;
import java.util.ServiceLoader;
import java.util.Set;
import java.util.TreeSet;

/**
 * Supplies standard set changer and comparable's for services
 *
 * @param 
 */
public interface IDefaultService>
		extends Comparable, Comparator
{
	/**
	 * Method loaderToSet, converts a ServiceLoader into a TreeSet
	 *
	 * @param loader
	 * 		of type ServiceLoader
	 *
	 * @return Set
	 */
	static  Set loaderToSet(ServiceLoader loader)
	{
		Set output = new TreeSet<>();
		for (T newInstance : loader)
		{
			output.add((T) GuiceContext.get(newInstance.getClass()));
		}
		return output;
	}

	/**
	 * Method compare ...
	 *
	 * @param o1
	 * 		of type J
	 * @param o2
	 * 		of type J
	 *
	 * @return int
	 */
	@Override
	default int compare(J o1, J o2)
	{
		if (o1 == null || o2 == null)
		{
			return -1;
		}
		return o1.sortOrder()
		         .compareTo(o2.sortOrder());
	}

	/**
	 * Default Sort Order 100
	 *
	 * @return 100
	 */
	default Integer sortOrder()
	{
		return 100;
	}

	/**
	 * Method compareTo ...
	 *
	 * @param o
	 * 		of type J
	 *
	 * @return int
	 */
	@Override
	default int compareTo(@NotNull J o)
	{
		int sort = sortOrder().compareTo(o.sortOrder());
		if (sort == 0)
		{
			return -1;
		}
		return sort;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy