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

org.brijframework.model.container.asm.ModelDiffinationContainer Maven / Gradle / Ivy

package org.brijframework.model.container.asm;

import org.brijframework.container.impl.module.AbstractModuleContainer;
import org.brijframework.group.Group;
import org.brijframework.model.container.ModelContainer;
import org.brijframework.model.factories.deffination.TypeModelDiffinationFactory;
import org.brijframework.model.group.ModelMetaDataGroup;
import org.brijframework.support.factories.SingletonFactory;
import org.brijframework.support.ordering.DepandOn;
import org.brijframework.util.factories.ReflectionFactory;
import org.brijframework.util.reflect.InstanceUtil;

@DepandOn(depand=ModelResourceContainer.class)
public class ModelDiffinationContainer extends AbstractModuleContainer implements ModelContainer{

	private static ModelDiffinationContainer container;

	@SingletonFactory
	public static ModelDiffinationContainer getContainer() {
		if (container == null) {
			container = InstanceUtil.getSingletonInstance(ModelDiffinationContainer.class);
		}
		return container;
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public void init() {
		try {
			ReflectionFactory.getFactory().getExternalClassList().forEach(cls -> {
				if (TypeModelDiffinationFactory.class.isAssignableFrom(cls) && InstanceUtil.isAssignable(cls)) {
					register((Class>) cls);
				}
			});
		} catch (Exception e) {
			e.printStackTrace();
		}
		try {
			ReflectionFactory.getFactory().getInternalClassList().forEach(cls -> {
				if (TypeModelDiffinationFactory.class.isAssignableFrom(cls) && InstanceUtil.isAssignable(cls)) {
					register((Class>) cls);
				}
			});
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	@Override
	public Group load(Object groupKey) {
		Group group = getCache().get(groupKey);
		if (group == null) {
			group = new ModelMetaDataGroup(groupKey);
			getCache().put(groupKey, group);
		}
		return group;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy