Skip to content

Commit

Permalink
Merge pull request #1035 from wagnert/master
Browse files Browse the repository at this point in the history
Add serverVersion and platform parameters to Doctrine configuration
  • Loading branch information
wagnert committed Oct 7, 2016
2 parents ec0b57b + 29e4b03 commit fcdbcc7
Show file tree
Hide file tree
Showing 11 changed files with 182 additions and 16 deletions.
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
# Version 1.1.3

## Bugfixes

* None

## Features

* Add serverVersion and platform parameters to Doctrine configuration
* Do override loggers defined in etc/appserver/conf.d/context.xml with loggers defined in META-INF/context.xml

# Version 1.1.3-beta3

## Bugfixes
Expand Down
2 changes: 1 addition & 1 deletion build.default.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
#--------------------------------------------------------------------------------

# ---- Module Release Settings --------------------------------------------------
release.version = 1.1.3-beta2
release.version = 1.1.3
release.name = Iron Knight

# ---- PHPCPD Settings ----------------------------------------------------------
Expand Down
22 changes: 22 additions & 0 deletions resources/schema/appserver.xsd
Original file line number Diff line number Diff line change
Expand Up @@ -1628,6 +1628,8 @@
<xs:element ref="appserver:unixSocket" minOccurs="0"/>
<xs:element ref="appserver:driverOptions" minOccurs="0"/>
<xs:element ref="appserver:charset" minOccurs="0"/>
<xs:element ref="appserver:serverVersion" minOccurs="0"/>
<xs:element ref="appserver:platform" minOccurs="0"/>
</xs:all>
<xs:attribute name="uuid" type="xs:string"/>
<xs:attribute ref="xml:base"/>
Expand All @@ -1643,6 +1645,26 @@
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="serverVersion">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="uuid" type="xs:string"/>
<xs:attribute ref="xml:base"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="platform">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="uuid" type="xs:string"/>
<xs:attribute ref="xml:base"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="charset">
<xs:complexType>
<xs:simpleContent>
Expand Down
4 changes: 2 additions & 2 deletions resources/templates/etc/appserver/appserver-runner.xml.phtml
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ use AppserverIo\Appserver\Meta\Composer\Script\SetupKeys;
<module type="\AppserverIo\WebServer\Modules\AutoIndexModule"/>
<!-- FileHandler Modules -->
<module type="\AppserverIo\WebServer\Modules\CoreModule"/>
<module type="\AppserverIo\WebServer\Modules\FastCgiModule"/>
<module type="\AppserverIo\WebServer\Modules\FcgiModule"/>
<module type="\AppserverIo\SingleApp\ServletEngine\SimpleServletEngine"/>
<module type="\AppserverIo\WebServer\Modules\ProxyModule"/>
<!-- RESPONSE_PRE hook -->
Expand Down Expand Up @@ -372,7 +372,7 @@ use AppserverIo\Appserver\Meta\Composer\Script\SetupKeys;
<module type="\AppserverIo\WebServer\Modules\AutoIndexModule"/>
<!-- FileHandler Modules -->
<module type="\AppserverIo\WebServer\Modules\CoreModule"/>
<module type="\AppserverIo\WebServer\Modules\FastCgiModule"/>
<module type="\AppserverIo\WebServer\Modules\FcgiModule"/>
<module type="\AppserverIo\SingleApp\ServletEngine\SimpleServletEngine"/>
<module type="\AppserverIo\WebServer\Modules\ProxyModule"/>
<!-- RESPONSE_PRE hook -->
Expand Down
4 changes: 2 additions & 2 deletions resources/templates/etc/appserver/appserver.xml.phtml
Original file line number Diff line number Diff line change
Expand Up @@ -512,7 +512,7 @@ use AppserverIo\Appserver\Meta\Composer\Script\SetupKeys;
<module type="\AppserverIo\WebServer\Modules\AutoIndexModule"/>
<!-- FileHandler Modules -->
<module type="\AppserverIo\WebServer\Modules\CoreModule"/>
<module type="\AppserverIo\WebServer\Modules\FastCgiModule"/>
<module type="\AppserverIo\WebServer\Modules\FcgiModule"/>
<module type="\AppserverIo\Appserver\ServletEngine\ServletEngine"/>
<module type="\AppserverIo\WebServer\Modules\ProxyModule"/>
<!-- RESPONSE_PRE hook -->
Expand Down Expand Up @@ -658,7 +658,7 @@ use AppserverIo\Appserver\Meta\Composer\Script\SetupKeys;
<module type="\AppserverIo\WebServer\Modules\AutoIndexModule"/>
<!-- FileHandler Modules -->
<module type="\AppserverIo\WebServer\Modules\CoreModule"/>
<module type="\AppserverIo\WebServer\Modules\FastCgiModule"/>
<module type="\AppserverIo\WebServer\Modules\FcgiModule"/>
<module type="\AppserverIo\Appserver\ServletEngine\ServletEngine"/>
<module type="\AppserverIo\WebServer\Modules\ProxyModule"/>
<!-- RESPONSE_PRE hook -->
Expand Down
6 changes: 2 additions & 4 deletions src/AppserverIo/Appserver/Core/Api/Node/ContextNode.php
Original file line number Diff line number Diff line change
Expand Up @@ -351,12 +351,10 @@ public function merge(ContextNode $contextNode)
// load the loggers of this context
$localLoggers = $this->getLoggers();

// merge them with the passed ones (do NOT override already registered loggers)
// merge them with the passed ones (DO override already registered loggers)
/** @var \AppserverIo\Appserver\Core\Api\Node\LoggerNode $loggerToMerge */
foreach ($contextNode->getLoggers() as $loggerToMerge) {
if (isset($localLoggers[$loggerToMerge->getName()]) === false) {
$localLoggers[$loggerToMerge->getName()] = $loggerToMerge;
}
$localLoggers[$loggerToMerge->getName()] = $loggerToMerge;
}

// set the loggers back to the context
Expand Down
40 changes: 38 additions & 2 deletions src/AppserverIo/Appserver/Core/Api/Node/DatabaseNode.php
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,22 @@ class DatabaseNode extends AbstractNode implements DatabaseNodeInterface
*/
protected $unixSocket;

/**
* The DB platform.
*
* @var \AppserverIo\Appserver\Core\Api\Node\PlatformNode
* @AS\Mapping(nodeName="platform", nodeType="AppserverIo\Appserver\Core\Api\Node\PlatformNode")
*/
protected $platform;

/**
* The server version we want to connect to.
*
* @var \AppserverIo\Appserver\Core\Api\Node\ServerVersionNode
* @AS\Mapping(nodeName="serverVersion", nodeType="AppserverIo\Appserver\Core\Api\Node\ServerVersionNode")
*/
protected $serverVersion;

/**
* Returns the database driver information.
*
Expand Down Expand Up @@ -215,7 +231,7 @@ public function getCharset()
/**
* Returns the database driver options.
*
* @return \AppserverIo\Appserver\Core\Api\Node\CharsetNode The database driver options
* @return \AppserverIo\Appserver\Core\Api\Node\DriverOpionsNode The database driver options
*/
public function getDriverOptions()
{
Expand All @@ -225,10 +241,30 @@ public function getDriverOptions()
/**
* Returns the name of the socket used to connect to the database.
*
* @return \AppserverIo\Appserver\Core\Api\Node\CharsetNode The name of the socket
* @return \AppserverIo\Appserver\Core\Api\Node\UnixSocketNode The name of the socket
*/
public function getUnixSocket()
{
return $this->unixSocket;
}

/**
* Returns the server version we want to connect to.
*
* @return \AppserverIo\Appserver\Core\Api\Node\ServerVersionNode The server version to connect to
*/
public function getServerVersion()
{
return $this->serverVersion;
}

/**
* Returns the DB platform.
*
* @return \AppserverIo\Appserver\Core\Api\Node\PlatformNode The DB platform
*/
public function getPlatform()
{
return $this->platform;
}
}
14 changes: 14 additions & 0 deletions src/AppserverIo/Appserver/Core/Api/Node/DatabaseNodeInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -110,4 +110,18 @@ public function getDriverOptions();
* @return \AppserverIo\Appserver\Core\Api\Node\CharsetNode The name of the socket
*/
public function getUnixSocket();

/**
* Returns the server version we want to connect to.
*
* @return \AppserverIo\Appserver\Core\Api\Node\CharsetNode The server version to connect to
*/
public function getServerVersion();

/**
* Returns the DB platform.
*
* @return \AppserverIo\Appserver\Core\Api\Node\PlatformNode The DB platform
*/
public function getPlatform();
}
36 changes: 36 additions & 0 deletions src/AppserverIo/Appserver/Core/Api/Node/PlatformNode.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?php

/**
* \AppserverIo\Appserver\Core\Api\Node\PlatformNode
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
*
* PHP version 5
*
* @author Tim Wagner <tw@techdivision.com>
* @copyright 2016 TechDivision GmbH <info@appserver.io>
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* @link https://github.com/appserver-io/appserver
* @link http://www.appserver.io
*/

namespace AppserverIo\Appserver\Core\Api\Node;

use AppserverIo\Description\Api\Node\AbstractValueNode;

/**
* DTO to transfer the DB platform information.
*
* @author Tim Wagner <tw@techdivision.com>
* @copyright 2016 TechDivision GmbH <info@appserver.io>
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* @link https://github.com/appserver-io/appserver
* @link http://www.appserver.io
*/
class PlatformNode extends AbstractValueNode
{
}
36 changes: 36 additions & 0 deletions src/AppserverIo/Appserver/Core/Api/Node/ServerVersionNode.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?php

/**
* \AppserverIo\Appserver\Core\Api\Node\ServerVersionNode
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
*
* PHP version 5
*
* @author Tim Wagner <tw@techdivision.com>
* @copyright 2016 TechDivision GmbH <info@appserver.io>
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* @link https://github.com/appserver-io/appserver
* @link http://www.appserver.io
*/

namespace AppserverIo\Appserver\Core\Api\Node;

use AppserverIo\Description\Api\Node\AbstractValueNode;

/**
* DTO to transfer the server version to be connected.
*
* @author Tim Wagner <tw@techdivision.com>
* @copyright 2016 TechDivision GmbH <info@appserver.io>
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* @link https://github.com/appserver-io/appserver
* @link http://www.appserver.io
*/
class ServerVersionNode extends AbstractValueNode
{
}
23 changes: 18 additions & 5 deletions src/AppserverIo/Appserver/Doctrine/Utils/ConnectionUtil.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
use AppserverIo\Lang\Boolean;
use AppserverIo\Psr\Application\ApplicationInterface;
use AppserverIo\Appserver\Core\Api\Node\DatabaseNodeInterface;
use Doctrine\DBAL\Platforms\MySQL57Platform;
use Doctrine\DBAL\Platforms\MySqlPlatform;

/**
* Utility class that helps to prepare the Doctrine DBAL connections.
Expand Down Expand Up @@ -140,6 +142,22 @@ public function fromDatabaseNode(DatabaseNodeInterface $databaseNode)
$connectionParameters['charset'] = $charsetNode->getNodeValue()->__toString();
}

// add driver options, if specified
if ($unixSocketNode = $databaseNode->getUnixSocket()) {
$connectionParameters['unix_socket'] = $unixSocketNode->getNodeValue()->__toString();
}

// add server version, if specified
if ($serverVersionNode = $databaseNode->getServerVersion()) {
$connectionParameters['server_version'] = $serverVersionNode->getNodeValue()->__toString();
}

// set platform, if specified
if ($platformNode = $databaseNode->getPlatform()) {
$platform = $platformNode->getNodeValue()->__toString();
$connectionParameters['platform'] = new $platform();
}

// add driver options, if specified
if ($driverOptionsNode = $databaseNode->getDriverOptions()) {
// explode the raw options separated with a semicolon
Expand All @@ -156,11 +174,6 @@ public function fromDatabaseNode(DatabaseNodeInterface $databaseNode)
$connectionParameters['driverOptions'] = $options;
}

// add driver options, if specified
if ($unixSocketNode = $databaseNode->getUnixSocket()) {
$connectionParameters['unix_socket'] = $unixSocketNode->getNodeValue()->__toString();
}

// returns the connection parameters
return $connectionParameters;
}
Expand Down

0 comments on commit fcdbcc7

Please sign in to comment.