/* * Copyright (c) 2017 OBiBa. All rights reserved. * * This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.obiba.magma.spring; import java.util.Set; import org.obiba.magma.MagmaEngine; import org.obiba.magma.MagmaEngineExtension; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.InitializingBean; /** * */ public class MagmaEngineFactoryBean implements FactoryBean<MagmaEngine>, InitializingBean, DisposableBean { private Set<MagmaEngineExtension> extensions; @Override public MagmaEngine getObject() throws Exception { return MagmaEngine.get(); } @Override public Class<?> getObjectType() { return MagmaEngine.class; } @Override public boolean isSingleton() { return true; } @Override public void afterPropertiesSet() throws Exception { MagmaEngine engine = new MagmaEngine(); for(MagmaEngineExtension extension : extensions) { engine.extend(extension); } } @Override public void destroy() throws Exception { MagmaEngine.get().shutdown(); } public void setExtensions(Set<MagmaEngineExtension> extensions) { this.extensions = extensions; } }