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

io.virtualan.autoconfig.ApplicationContextProvider Maven / Gradle / Ivy

package io.virtualan.autoconfig;

import io.virtualan.core.util.VirtualanClassLoader;
import java.net.URL;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.support.GenericBeanDefinition;
import org.springframework.context.support.GenericApplicationContext;
import org.springframework.stereotype.Component;

@Component
public class ApplicationContextProvider {

  VirtualanClassLoader virtualanClassLoader;
  @Autowired
  private GenericApplicationContext genericApplicationContext;

  @Autowired
  private org.springframework.context.ApplicationContext appContext;

  public VirtualanClassLoader getVirtualanClassLoader() {
    if (virtualanClassLoader == null) {
      return new VirtualanClassLoader(genericApplicationContext.getClassLoader());
    }
    return virtualanClassLoader;
  }

  public  void addURLToClassLoader(URL url) {
    io.virtualan.core.util.MyClassloader myClassloader = new io.virtualan.core.util.MyClassloader(new java.net.URL[0], appContext.getClassLoader().getParent());
    myClassloader.addURL(url);
    classLoader(myClassloader);
  }


  public void classLoader(ClassLoader classLoader) {
    genericApplicationContext.setClassLoader(classLoader);
  }

  public ClassLoader getClassLoader() {
    return genericApplicationContext.getClassLoader();
  }

  public boolean containsBean(String beanName) {
    return genericApplicationContext.containsBean(beanName);
  }

  public void addBean(String beanName, GenericBeanDefinition beanDefinition) {
    genericApplicationContext.registerBeanDefinition(beanName, beanDefinition);
  }

  public void removeBean(String beanName) {
    genericApplicationContext.removeBeanDefinition(beanName);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy