/**
  * Tests if the merge method works successfully.
  *
  * @return void
  */
 public function testMergeSuccessful()
 {
     // initialize the configuration
     $node = new SessionNode();
     $node->initFromFile(__DIR__ . '/_files/dd-sessionbean.xml');
     // initialize the descriptor from the nodes data
     $this->descriptor->fromConfiguration($node);
     // initialize the descriptor to merge
     $descriptorToMerge = $this->getMockForAbstractClass('AppserverIo\\Description\\SessionBeanDescriptor');
     // initialize the configuration of the descriptor to be merged
     $nodeToMerge = new SessionNode();
     $nodeToMerge->initFromFile(__DIR__ . '/_files/dd-sessionbean-to-merge.xml');
     $descriptorToMerge->fromConfiguration($nodeToMerge);
     // merge the descriptors
     $this->descriptor->merge($descriptorToMerge);
     // check if all values have been merged
     $this->assertSame('SampleProcessor', $this->descriptor->getName());
     $this->assertSame('AppserverIo\\Apps\\Example\\Services\\SampleProcessor', $this->descriptor->getClassName());
     $this->assertSame('Stateless', $this->descriptor->getSessionType());
     $this->assertCount(2, $this->descriptor->getEpbReferences());
     $this->assertCount(3, $this->descriptor->getResReferences());
     $this->assertCount(2, $this->descriptor->getPersistenceUnitReferences());
     $this->assertCount(7, $this->descriptor->getReferences());
     // check for initialized lifecycle callbacks
     $this->assertContains('initialize', $this->descriptor->getPostConstructCallbacks());
     $this->assertContains('initializeIt', $this->descriptor->getPostConstructCallbacks());
     $this->assertContains('destroy', $this->descriptor->getPreDestroyCallbacks());
     $this->assertContains('destroyIt', $this->descriptor->getPreDestroyCallbacks());
 }
 /**
  * Initializes a bean descriptor instance from the passed configuration node.
  *
  * @param \AppserverIo\Description\Configuration\ConfigurationInterface $configuration The configuration node with the bean configuration
  *
  * @return \AppserverIo\Psr\EnterpriseBeans\Description\StatelessSessionBeanDescriptorInterface|null The initialized descriptor instance
  */
 public function fromConfiguration(ConfigurationInterface $configuration)
 {
     // query whether or not we've a session bean configuration
     if (!$configuration instanceof SessionConfigurationInterface) {
         return;
     }
     // query wheter or not the session type matches
     if ((string) $configuration->getSessionType() !== StatelessSessionBeanDescriptor::SESSION_TYPE) {
         return;
     }
     // initialize the descriptor instance
     parent::fromConfiguration($configuration);
     // return the instance
     return $this;
 }
 /**
  * Initializes a bean descriptor instance from the passed configuration node.
  *
  * @param \AppserverIo\Description\Configuration\ConfigurationInterface $configuration The configuration node with the bean configuration
  *
  * @return \AppserverIo\Psr\EnterpriseBeans\Description\SingletonSessionBeanDescriptorInterface|null The initialized descriptor instance
  */
 public function fromConfiguration(ConfigurationInterface $configuration)
 {
     // query whether or not we've a session bean configuration
     if (!$configuration instanceof SessionConfigurationInterface) {
         return;
     }
     // query wheter or not the session type matches
     if ((string) $configuration->getSessionType() !== SingletonSessionBeanDescriptor::SESSION_TYPE) {
         return;
     }
     // initialize the descriptor instance
     parent::fromConfiguration($configuration);
     // initialize the post detach callback methods
     if ($postDetach = $configuration->getPostDetach()) {
         foreach ($postDetach->getLifecycleCallbackMethods() as $postDetachCallback) {
             $this->addPostDetachCallback(DescriptorUtil::trim((string) $postDetachCallback));
         }
     }
     // initialize the pre attach callback methods
     if ($preAttach = $configuration->getPreAttach()) {
         foreach ($preAttach->getLifecycleCallbackMethods() as $preAttachCallback) {
             $this->addPreAttachCallback(DescriptorUtil::trim((string) $preAttachCallback));
         }
     }
     // query for the startup flag
     if ($initOnStartup = (string) $configuration->getInitOnStartup()) {
         $this->setInitOnStartup(Boolean::valueOf(new String($initOnStartup))->booleanValue());
     }
     // return the instance
     return $this;
 }
 /**
  * Initializes a bean descriptor instance from the passed configuration node.
  *
  * @param \AppserverIo\Description\Configuration\ConfigurationInterface $configuration The configuration node with the bean configuration
  *
  * @return \AppserverIo\Psr\EnterpriseBeans\Description\StatefulSessionBeanDescriptorInterface|null The initialized descriptor instance
  */
 public function fromConfiguration(ConfigurationInterface $configuration)
 {
     // query whether or not we've a session bean configuration
     if (!$configuration instanceof SessionConfigurationInterface) {
         return;
     }
     // query wheter or not the session type matches
     if ((string) $configuration->getSessionType() !== StatefulSessionBeanDescriptor::SESSION_TYPE) {
         return;
     }
     // initialize the descriptor instance
     parent::fromConfiguration($configuration);
     // initialize the post detach callback methods
     if ($postDetach = $configuration->getPostDetach()) {
         foreach ($postDetach->getLifecycleCallbackMethods() as $postDetachCallback) {
             $this->addPostDetachCallback(DescriptorUtil::trim((string) $postDetachCallback));
         }
     }
     // initialize the pre attach callback methods
     if ($preAttach = $configuration->getPreAttach()) {
         foreach ($preAttach->getLifecycleCallbackMethods() as $preAttachCallback) {
             $this->addPreAttachCallback(DescriptorUtil::trim((string) $preAttachCallback));
         }
     }
     // initialize the post activate callback methods
     if ($postActivate = $configuration->getPostActivate()) {
         foreach ($postActivate->getLifecycleCallbackMethods() as $postActivateCallback) {
             $this->addPostActivateCallback(DescriptorUtil::trim((string) $postActivateCallback));
         }
     }
     // initialize the pre passivate callback methods
     if ($prePassivate = $configuration->getPrePassivate()) {
         foreach ($prePassivate->getLifecycleCallbackMethods() as $prePassivateCallback) {
             $this->addPrePassivateCallback(DescriptorUtil::trim((string) $prePassivateCallback));
         }
     }
     // initialize the remove methods
     if ($removeMethod = $configuration->getRemoveMethod()) {
         foreach ($removeMethod->getMethodNames() as $methodName) {
             $this->addRemoveMethod(DescriptorUtil::trim((string) $methodName));
         }
     }
     // return the instance
     return $this;
 }