Пример #1
0
 /**
  * Release bean $beanName
  *
  * @param BeanEnvelope $beanStructure the name of the bean
  * @param string $contextReferenceId the context application id
  *
  * @throws OvoCircularDependencyException
  */
 public static function release(BeanEnvelope $beanStructure, $contextReferenceId)
 {
     $beanName = $beanStructure->getName();
     if (!isset(self::$repository[$contextReferenceId][$beanName]) and $beanStructure->getScope() == ScopeValue::PROTOTYPE) {
         $schema = join(self::ARROW, self::$repository[$contextReferenceId]);
         throw new OvoCircularDependencyException('Dependency error [maybe Circular dependency?][' . $schema . self::ARROW . $beanName . ']');
     }
     unset(self::$repository[$contextReferenceId][$beanName]);
 }
Пример #2
0
 /**
  * Create (or get for Session / Singleton beanRepository) the instance of the bean
  *
  * @param BeanEnvelope $beanStructure
  *
  * @return Object
  *
  * @throws OvoContainerException
  */
 public function initializeBean(BeanEnvelope $beanStructure)
 {
     $this->logger->debug('Create Object from Core: ' . $beanStructure->getClass());
     $beanInstance = $this->getScopeObjectCreator($beanStructure->getScope())->createBean($beanStructure);
     if (!is_object($beanInstance)) {
         $this->logger->error('Error in the creation of the bean with name ' . $beanStructure->getName());
         throw new OvoContainerException('Error in bean creation ' . $beanStructure->getName());
     }
     return $beanInstance;
 }
Пример #3
0
 public function createBean(BeanEnvelope $beanEnvelope)
 {
     $beanName = $beanEnvelope->getName();
     $this->logger->debug('Create session bean with name: ' . $beanName);
     $beanInstance = $this->checkIfSessionBeanExists($beanName);
     if ($beanInstance == null) {
         $this->logger->debug('Session instance not exists, try to create');
         $beanInstance = $this->createObject($beanEnvelope);
         $this->beanRepository->addBean($beanName, $beanInstance);
     }
     return $beanInstance;
 }
 public function createBean(BeanEnvelope $beanEnvelope)
 {
     $beanName = $beanEnvelope->getName();
     $this->logger->debug('Create singleton Object for the bean with name: ' . $beanName);
     $beanInstance = $this->checkIfSingletonBeanExists($beanName);
     if ($beanInstance == null) {
         $this->logger->debug('Singleton instance not exists found, try to create');
         $beanInstance = $this->createObject($beanEnvelope);
         $this->singletonBeanRepositoryImpl->addBean($beanName, $beanInstance);
     }
     return $beanInstance;
 }
Пример #5
0
 /**
  * Resolve dependency for bean $beanStructure
  *
  * @param BeanEnvelope $beanEnvelope
  *
  * @return void
  */
 public static function resolve(BeanEnvelope $beanEnvelope)
 {
     self::$logger = OvoLogger::getLogger(get_class());
     self::$logger->debug('Get dependencies form bean ' . $beanEnvelope->getClass());
     $beanInstance = $beanEnvelope->getInstance();
     $dependencies = $beanEnvelope->getProperties();
     if ($dependencies) {
         foreach ($dependencies as $dependency) {
             self::injectPropertyDependency($dependency, $beanInstance, $beanEnvelope->getContextReferenceId());
         }
     }
 }
Пример #6
0
 /**
  * Create the object from the $beanStructure
  *
  * @param BeanEnvelope $beanEnvelope
  *
  * @return Object
  */
 protected function createObject(BeanEnvelope $beanEnvelope)
 {
     $beanClass = $beanEnvelope->getClass();
     $beanArgs = $beanEnvelope->getArgs();
     $beanFactoryMethod = $beanEnvelope->getFactoryMethod();
     $this->logger->debug('Create bean name: ' . $beanEnvelope->getName() . ' on class: ' . $beanClass);
     if ($beanFactoryMethod != null) {
         $beanInstance = ObjectCreator::createObjectFromFactoryMethod($beanClass, $beanArgs, $beanFactoryMethod);
     } else {
         $beanInstance = ObjectCreator::createObject($beanClass, $beanArgs);
     }
     return $beanInstance;
 }
 public function createBean(BeanEnvelope $beanEnvelope)
 {
     $this->logger->debug('Create prototype bean with name: ' . $beanEnvelope->getName());
     return $this->createObject($beanEnvelope);
 }
Пример #8
0
 /**
  * Check and call init method for bean $beanEnvelope
  *
  * @param BeanEnvelope $beanEnvelope
  *
  * @return void
  *
  * @throw OvoInternalException
  */
 private function callInitMethod(BeanEnvelope $beanEnvelope)
 {
     $this->logger->debug('Call Init method');
     if ($beanEnvelope->getInitMethod()) {
         try {
             Caller::callMethodFromObject($beanEnvelope->getInstance(), $beanEnvelope->getInitMethod());
         } catch (OvoContainerException $e) {
             throw new OvoInternalException($e->getMessage(), $beanEnvelope);
         }
     }
 }