Hi Sameera,
Attached here with is the reviewed diff file and in [1] is the relevant
pull request for the carban4-kernel
[1] - https://github.com/wso2-dev/carbon4-kernel/pull/103
Thanks
On Fri, Sep 12, 2014 at 3:04 PM, Anjana Fernando <[email protected]> wrote:
> Hi Sameera,
>
> Sure. I reviewed an earlier version of the code, then I told to do some
> changes. Will check the latest changes.
>
> Cheers,
> Anjana.
>
> On Fri, Sep 12, 2014 at 2:58 PM, Sameera Jayasoma <[email protected]>
> wrote:
>
>> Thanks Manoj.
>>
>> Anjana, Can you please review this pull request?
>>
>> Thanks,
>> Sameera.
>>
>> On Thu, Sep 11, 2014 at 9:22 PM, Manoj Kumara <[email protected]> wrote:
>>
>>> Hi Team,
>>>
>>> Hence this is a new feature this has some API additions. Please review
>>> this and commit.
>>>
>>> Thanks
>>> Manoj
>>>
>>>
>>> *Manoj Kumara*
>>> Software Engineer
>>> WSO2 Inc. http://wso2.com/
>>> *lean.enterprise.middleware*
>>> Mobile: +94713448188
>>>
>>> On Thu, Sep 11, 2014 at 3:17 AM, Rajith Vitharana <[email protected]>
>>> wrote:
>>>
>>>> Hi,
>>>>
>>>> please find the pull request for the carbon4-kernal git repository for
>>>> above changes in [1]
>>>>
>>>> [1] - https://github.com/wso2-dev/carbon4-kernel/pull/95
>>>>
>>>> Thanks,
>>>>
>>>> On Tue, Jul 29, 2014 at 6:12 PM, Rajith Vitharana <[email protected]>
>>>> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> I have attached the new diff file for the data source deployer
>>>>> feature. I have added the password encryption support so the datasource
>>>>> xml
>>>>> files can have encrypted passwords. Sample car file is also attached here
>>>>> with. Please review and commit.
>>>>>
>>>>> Thanks,
>>>>>
>>>>>
>>>>> On Mon, Jul 28, 2014 at 11:48 AM, Rajith Vitharana <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> Hi Jasintha,Sohani,
>>>>>>
>>>>>> Thanks for the quick response. The "type" defined in "artifact.xml"
>>>>>> should be "datasource/datasource" for it to be picked up by the
>>>>>> datasource
>>>>>> deployment handler and get deployed. Below is a sample
>>>>>>
>>>>>> <?xml version="1.0" encoding="UTF-8"?>
>>>>>> <artifact name="DataSourceA" version="1.0.0"
>>>>>> type="datasource/datasource" serverRole="ApplicationServer">
>>>>>> <file>DataSource.xml</file>
>>>>>> </artifact>
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>>
>>>>>> On Mon, Jul 28, 2014 at 11:37 AM, Sohani Weerasinghe <[email protected]
>>>>>> > wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> I am working on implementing the Datasource editor in DevS.
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Sohani
>>>>>>>
>>>>>>> Sohani Weerasinghe
>>>>>>> Software Engineer
>>>>>>> WSO2, Inc: http://wso2.com
>>>>>>>
>>>>>>> Mobile : +94 716439774
>>>>>>> Blog :http://christinetechtips.blogspot.com/
>>>>>>> Twitter : https://twitter.com/sohanichristine
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Jul 28, 2014 at 11:04 AM, Jasintha Dasanayake <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> Hi
>>>>>>>>
>>>>>>>> We can provide a single page form editor in DevS to edit this config
>>>>>>>>
>>>>>>>> Thanks and regards
>>>>>>>> /Jasintha
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Mon, Jul 28, 2014 at 10:36 AM, Rajith Vitharana <
>>>>>>>> [email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi Kasun,
>>>>>>>>>
>>>>>>>>> Yes these datasources only provides a read-only view. and they
>>>>>>>>> won't be saved in the registry. other than that they are same as the
>>>>>>>>> datasources which we can create using UI.
>>>>>>>>>
>>>>>>>>> Hi Nirmal,
>>>>>>>>>
>>>>>>>>> noted. I'll try out encryption of passwords and to get DevS support
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Mon, Jul 28, 2014 at 10:28 AM, Nirmal Fernando <[email protected]
>>>>>>>>> > wrote:
>>>>>>>>>
>>>>>>>>>> Thanks Rajith. Seems like for this feature, we need DevS support
>>>>>>>>>> (data source resource type) before deployed in a production
>>>>>>>>>> environment.
>>>>>>>>>> Also, this feature should ideally support encryption of passwords.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Mon, Jul 28, 2014 at 10:21 AM, Rajith Vitharana <
>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi Nirmal,
>>>>>>>>>>>
>>>>>>>>>>> This is a Appdeployment handler which will pickup datasources
>>>>>>>>>>> deployed as carbon application and register them as datasources.
>>>>>>>>>>> since datasource xml file is already in car app this feature
>>>>>>>>>>> wont save it to the registry to avoid duplication.
>>>>>>>>>>> datasources deployed as car apps can't be edited using UI.
>>>>>>>>>>> Editing them should be done by redeploying the car app.
>>>>>>>>>>>
>>>>>>>>>>> Thanks,
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Mon, Jul 28, 2014 at 9:49 AM, Nirmal Fernando <
>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Rajith,
>>>>>>>>>>>>
>>>>>>>>>>>> Can you please also mention what new improvements this patch
>>>>>>>>>>>> brings?
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> On Mon, Jul 28, 2014 at 9:39 AM, Rajith Vitharana <
>>>>>>>>>>>> [email protected]> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Attached here with the diff for datasource deployer feature
>>>>>>>>>>>>> for org.wso2.carbon.ndatasource.core and a sample car file.
>>>>>>>>>>>>> please review
>>>>>>>>>>>>> and commit
>>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Rajith Vitharana
>>>>>>>>>>>>>
>>>>>>>>>>>>> Software Engineer,
>>>>>>>>>>>>> WSO2 Inc. : wso2.com
>>>>>>>>>>>>> Mobile : +94715883223
>>>>>>>>>>>>> Blog : http://lankavitharana.blogspot.com/
>>>>>>>>>>>>>
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> Dev mailing list
>>>>>>>>>>>>> [email protected]
>>>>>>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks & regards,
>>>>>>>>>>>> Nirmal
>>>>>>>>>>>>
>>>>>>>>>>>> Senior Software Engineer- Platform Technologies Team, WSO2 Inc.
>>>>>>>>>>>> Mobile: +94715779733
>>>>>>>>>>>> Blog: http://nirmalfdo.blogspot.com/
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Rajith Vitharana
>>>>>>>>>>>
>>>>>>>>>>> Software Engineer,
>>>>>>>>>>> WSO2 Inc. : wso2.com
>>>>>>>>>>> Mobile : +94715883223
>>>>>>>>>>> Blog : http://lankavitharana.blogspot.com/
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>>
>>>>>>>>>> Thanks & regards,
>>>>>>>>>> Nirmal
>>>>>>>>>>
>>>>>>>>>> Senior Software Engineer- Platform Technologies Team, WSO2 Inc.
>>>>>>>>>> Mobile: +94715779733
>>>>>>>>>> Blog: http://nirmalfdo.blogspot.com/
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Rajith Vitharana
>>>>>>>>>
>>>>>>>>> Software Engineer,
>>>>>>>>> WSO2 Inc. : wso2.com
>>>>>>>>> Mobile : +94715883223
>>>>>>>>> Blog : http://lankavitharana.blogspot.com/
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>>
>>>>>>>> *Jasintha Dasanayake *
>>>>>>>>
>>>>>>>> *Senior Software EngineerWSO2 Inc. | http://wso2.com
>>>>>>>> <http://wso2.com/> lean . enterprise . middleware*
>>>>>>>>
>>>>>>>>
>>>>>>>> *mobile :- 0711368118 <0711368118> *
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Dev mailing list
>>>>>>>> [email protected]
>>>>>>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Rajith Vitharana
>>>>>>
>>>>>> Software Engineer,
>>>>>> WSO2 Inc. : wso2.com
>>>>>> Mobile : +94715883223
>>>>>> Blog : http://lankavitharana.blogspot.com/
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Rajith Vitharana
>>>>>
>>>>> Software Engineer,
>>>>> WSO2 Inc. : wso2.com
>>>>> Mobile : +94715883223
>>>>> Blog : http://lankavitharana.blogspot.com/
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Rajith Vitharana
>>>>
>>>> Software Engineer,
>>>> WSO2 Inc. : wso2.com
>>>> Mobile : +94715883223
>>>> Blog : http://lankavitharana.blogspot.com/
>>>>
>>>
>>>
>>
>>
>> --
>> Sameera Jayasoma,
>> Software Architect,
>>
>> WSO2, Inc. (http://wso2.com)
>> email: [email protected]
>> blog: http://sameera.adahas.org
>> twitter: https://twitter.com/sameerajayasoma
>> flickr: http://www.flickr.com/photos/sameera-jayasoma/collections
>> Mobile: 0094776364456
>>
>> Lean . Enterprise . Middleware
>>
>>
>
>
> --
> *Anjana Fernando*
> Senior Technical Lead
> WSO2 Inc. | http://wso2.com
> lean . enterprise . middleware
>
--
Rajith Vitharana
Software Engineer,
WSO2 Inc. : wso2.com
Mobile : +94715883223
Blog : http://lankavitharana.blogspot.com/
Index: pom.xml
===================================================================
--- pom.xml (revision 207035)
+++ pom.xml (working copy)
@@ -33,6 +33,11 @@
<dependencies>
<dependency>
<groupId>org.wso2.carbon</groupId>
+ <artifactId>org.wso2.carbon.application.deployer</artifactId>
+ <version>${carbon.platform.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.wso2.carbon</groupId>
<artifactId>org.wso2.carbon.utils</artifactId>
<version>4.2.0</version>
</dependency>
@@ -74,6 +79,7 @@
</Export-Package>
<DynamicImport-Package>*</DynamicImport-Package>
<DeployBefore>UserCore</DeployBefore>
+ <WSO2-Application-Deployer>Data Source Capp
Deployer</WSO2-Application-Deployer>
</instructions>
</configuration>
</plugin>
Index: src/main/java/org/wso2/carbon/ndatasource/core/DataSourceMetaInfo.java
===================================================================
--- src/main/java/org/wso2/carbon/ndatasource/core/DataSourceMetaInfo.java
(revision 207035)
+++ src/main/java/org/wso2/carbon/ndatasource/core/DataSourceMetaInfo.java
(working copy)
@@ -43,6 +43,9 @@
@XmlTransient
private boolean system;
+ @XmlTransient
+ private boolean carbonApplicationDeployed;
+
public void setName(String name) {
this.name = name;
}
@@ -59,6 +62,10 @@
this.system = system;
}
+ public void setCarbonApplicationDeployed(boolean
carbonApplicationDeployed) {
+ this.carbonApplicationDeployed = carbonApplicationDeployed;
+ }
+
@XmlElement (name = "name", required = true, nillable = false)
public String getName() {
return name;
@@ -79,6 +86,11 @@
return system;
}
+ @XmlTransient
+ public boolean isCarbonApplicationDeployed() {
+ return carbonApplicationDeployed;
+ }
+
@XmlElement (name = "definition", required = true, nillable = false)
public DataSourceDefinition getDefinition() {
return definition;
@@ -88,7 +100,12 @@
this.definition = definition;
}
- @XmlRootElement (name = "definition")
+ @XmlTransient
+ public boolean isPersistable() {
+ return (!system && !carbonApplicationDeployed);
+ }
+
+ @XmlRootElement (name = "definition")
public static class DataSourceDefinition {
private String type;
@@ -112,7 +129,7 @@
public void setDsXMLConfiguration(Object dsXMLConfiguration) {
this.dsXMLConfiguration = dsXMLConfiguration;
}
-
+
public boolean equals(Object rhs) {
if (!(rhs instanceof DataSourceDefinition)) {
return false;
Index: src/main/java/org/wso2/carbon/ndatasource/core/DataSourceRepository.java
===================================================================
--- src/main/java/org/wso2/carbon/ndatasource/core/DataSourceRepository.java
(revision 207035)
+++ src/main/java/org/wso2/carbon/ndatasource/core/DataSourceRepository.java
(working copy)
@@ -467,11 +467,11 @@
if (log.isDebugEnabled()) {
log.debug("Adding data source: " + dsmInfo.getName());
}
- if (!dsmInfo.isSystem()) {
+ if (dsmInfo.isPersistable()) {
this.persistDataSource(dsmInfo);
}
this.registerDataSource(dsmInfo);
- if (!dsmInfo.isSystem()) {
+ if (dsmInfo.isPersistable()) {
this.notifyClusterDSChange(dsmInfo.getName());
}
}
@@ -491,10 +491,12 @@
if (cds.getDSMInfo().isSystem()) {
throw new DataSourceException("System data sources
cannot be deleted: " + dsName);
}
- this.removePersistedDataSource(dsName);
- this.unregisterDataSource(dsName);
- this.notifyClusterDSChange(dsName);
- }
+ this.unregisterDataSource(dsName);
+ if (cds.getDSMInfo().isPersistable()) {
+ this.removePersistedDataSource(dsName);
+ this.notifyClusterDSChange(dsName);
+ }
+ }
/**
* Tests Connection of the data source
Index:
src/main/java/org/wso2/carbon/ndatasource/core/deployer/DataSourceDeployer.java
===================================================================
---
src/main/java/org/wso2/carbon/ndatasource/core/deployer/DataSourceDeployer.java
(revision 0)
+++
src/main/java/org/wso2/carbon/ndatasource/core/deployer/DataSourceDeployer.java
(working copy)
@@ -0,0 +1,162 @@
+/*
+* Copyright (c) 2005-2014, WSO2 Inc. (http://www.wso2.org) All Rights
Reserved.
+*
+* WSO2 Inc. licenses this file to you under the Apache License,
+* Version 2.0 (the "License"); you may not use this file except
+* in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+package org.wso2.carbon.ndatasource.core.deployer;
+
+import org.apache.axis2.deployment.DeploymentException;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.w3c.dom.Document;
+import org.wso2.carbon.application.deployer.CarbonApplication;
+import org.wso2.carbon.application.deployer.config.ApplicationConfiguration;
+import org.wso2.carbon.application.deployer.config.Artifact;
+import org.wso2.carbon.application.deployer.config.CappFile;
+import org.wso2.carbon.application.deployer.handler.AppDeploymentHandler;
+import org.wso2.carbon.ndatasource.common.DataSourceException;
+import org.wso2.carbon.ndatasource.core.DataSourceManager;
+import org.wso2.carbon.ndatasource.core.DataSourceMetaInfo;
+import org.wso2.carbon.ndatasource.core.utils.DataSourceUtils;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * This class is the implementation of the data source deployer which will
deploy data sources to the server.
+ */
+public class DataSourceDeployer implements AppDeploymentHandler {
+
+ public static final String DATA_SOURCE_TYPE = "datasource/datasource";
+
+ /**
+ * Deploy the data source artifacts and add them to datasources.
+ *
+ * @param carbonApp - store info in this object after deploying
+ * @param axisConfig - AxisConfiguration of the current tenant
+ */
+ @Override
+ public void deployArtifacts(CarbonApplication carbonApp, AxisConfiguration
axisConfig) throws DeploymentException {
+ ApplicationConfiguration appConfig = carbonApp.getAppConfig();
+ List<Artifact.Dependency> deps =
appConfig.getApplicationArtifact().getDependencies();
+
+ List<Artifact> artifacts = new ArrayList<Artifact>();
+ for (Artifact.Dependency dep : deps) {
+ if (dep.getArtifact() != null) {
+ artifacts.add(dep.getArtifact());
+ }
+ }
+ deployUnDeployDataSources(true, artifacts);
+ }
+
+ /**
+ * undeploy the data sources and remove them from datasources
+ *
+ * @param carbonApp - all information about the existing artifacts are in
this instance
+ * @param axisConfig - AxisConfiguration of the current tenant
+ */
+ @Override
+ public void undeployArtifacts(CarbonApplication carbonApp,
AxisConfiguration axisConfig) throws DeploymentException {
+ ApplicationConfiguration appConfig = carbonApp.getAppConfig();
+ List<Artifact.Dependency> deps =
appConfig.getApplicationArtifact().getDependencies();
+
+ List<Artifact> artifacts = new ArrayList<Artifact>();
+ for (Artifact.Dependency dep : deps) {
+ if (dep.getArtifact() != null) {
+ artifacts.add(dep.getArtifact());
+ }
+ }
+ deployUnDeployDataSources(false, artifacts);
+ }
+
+ /**
+ * deploy or undeploy data sources. if deploying, adding the data source
to the data sources and if undeploying,
+ * removing the data source from data sources. there can be multiple data
sources as separate xml files.
+ *
+ * @param deploy identify whether deployment process or undeployment
process.
+ * @param artifacts - list of artifacts to be deployed.
+ */
+ private void deployUnDeployDataSources(boolean deploy, List<Artifact>
artifacts) throws DeploymentException {
+ for (Artifact artifact : artifacts) {
+ if (DATA_SOURCE_TYPE.equals(artifact.getType())) {
+ List<CappFile> files = artifact.getFiles();
+ if (files == null || files.isEmpty()) {
+ throw new DeploymentException("Error No data sources found
in the artifact to deploy");
+ }
+ for (CappFile cappFile : files) {
+ String fileName = cappFile.getName();
+ String dataSourceConfigPath = artifact.getExtractedPath() +
+ File.separator + fileName;
+
+ File file = new File(dataSourceConfigPath);
+ if (!file.exists()) {
+ throw new DeploymentException("Error Data source file
cannot be found in artifact, file name - " + fileName);
+ }
+ DataSourceMetaInfo dataSourceMetaInfo =
readDataSourceFile(file);
+ if (deploy) {
+ try {
+
dataSourceMetaInfo.setCarbonApplicationDeployed(true);
+
DataSourceManager.getInstance().getDataSourceRepository().addDataSource(dataSourceMetaInfo);
+ } catch (DataSourceException e) {
+ throw new DeploymentException("Error in deploying
data source: " + e.getMessage(), e);
+ }
+ } else {
+ try {
+
DataSourceManager.getInstance().getDataSourceRepository().deleteDataSource(dataSourceMetaInfo.getName());
+ } catch (DataSourceException e) {
+ throw new DeploymentException("Error in
undeploying data source: " + e.getMessage(), e);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * method to read data source file and create the object from it.
+ *
+ * @param file - xml file
+ * @return dataSourceMetaInfo object which is created using the xml file.
+ * @throws org.apache.axis2.deployment.DeploymentException
+ */
+ private DataSourceMetaInfo readDataSourceFile(File file) throws
DeploymentException {
+ try {
+ InputStream in = new FileInputStream(file);
+ Document doc = DataSourceUtils.convertToDocument(in);
+ /* only super tenant will lookup secure vault information for
system data sources,
+ * others are not allowed to */
+ DataSourceUtils.secureResolveDocument(doc, false);
+ // create JAXB context and initializing Marshaller
+ JAXBContext jaxbContext =
JAXBContext.newInstance(DataSourceMetaInfo.class);
+ Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
+ // this will create Java object - data source from xml file
+ DataSourceMetaInfo dataSourceMetaInfo = (DataSourceMetaInfo)
jaxbUnmarshaller.unmarshal(doc);
+ return dataSourceMetaInfo;
+ } catch (JAXBException e) {
+ throw new DeploymentException("Error in reading data source file:
" + e.getMessage(), e);
+ } catch (FileNotFoundException e) {
+ throw new DeploymentException("Error data source file not found: "
+ e.getMessage(), e);
+ } catch (DataSourceException e) {
+ throw new DeploymentException("Error in decrypting data source
file: " + e.getMessage(), e);
+ }
+ }
+
+}
Index:
src/main/java/org/wso2/carbon/ndatasource/core/internal/DataSourceServiceComponent.java
===================================================================
---
src/main/java/org/wso2/carbon/ndatasource/core/internal/DataSourceServiceComponent.java
(revision 207035)
+++
src/main/java/org/wso2/carbon/ndatasource/core/internal/DataSourceServiceComponent.java
(working copy)
@@ -19,6 +19,8 @@
import org.apache.commons.logging.LogFactory;
import org.osgi.framework.BundleContext;
import org.osgi.service.component.ComponentContext;
+import org.wso2.carbon.application.deployer.handler.AppDeploymentHandler;
+import org.wso2.carbon.ndatasource.core.deployer.DataSourceDeployer;
import org.wso2.carbon.base.MultitenantConstants;
import org.wso2.carbon.base.api.ServerConfigurationService;
import org.wso2.carbon.ndatasource.common.DataSourceException;
@@ -53,9 +55,10 @@
* cardinality="0..1" policy="dynamic" bind="setConfigurationContextService"
unbind="unsetConfigurationContextService"
*/
public class DataSourceServiceComponent {
+
private static final Log log =
LogFactory.getLog(DataSourceServiceComponent.class);
- private static final String
DATA_SOURCE_REPO_CLASS_TAG="CarbonDataSourceRepositoryClass";
+ private static final String DATA_SOURCE_REPO_CLASS_TAG =
"CarbonDataSourceRepositoryClass";
private static RegistryService registryService;
@@ -80,8 +83,9 @@
if (log.isDebugEnabled()) {
log.debug("DataSourceServiceComponent activated");
}
+ initDataSourceDeployer();
/** Attempting to load the DatasourceRepository implementation class
defined in carbon.xml
- .*If it is not there it will use default implementation
+ .* If it is not there it will use default implementation
*/
String carbonDataSourceRepositoryClassName =
CarbonUtils.getServerConfiguration().getFirstProperty(
@@ -103,8 +107,22 @@
this.registerServices();
}
}
-
- protected synchronized void deactivate(ComponentContext ctx) {
+
+ /**
+ * initialising car app data source deployer
+ */
+ private void initDataSourceDeployer() {
+ try {
+ //register data source deployer as an OSGi service
+ DataSourceDeployer dataSourceDeployer = new DataSourceDeployer();
+ this.ctx.getBundleContext().registerService(
+ AppDeploymentHandler.class.getName(), dataSourceDeployer,
null);
+ } catch (Throwable e) {
+ log.error("Failed to activate Data Source Capp Deployer " +
e.getMessage(), e);
+ }
+ }
+
+ protected synchronized void deactivate(ComponentContext ctx) {
this.ctx = null;
this.tenantUserDataSourcesInitialized = false;
if (log.isDebugEnabled()) {
Index:
src/main/java/org/wso2/carbon/ndatasource/core/services/WSDataSourceMetaInfo.java
===================================================================
---
src/main/java/org/wso2/carbon/ndatasource/core/services/WSDataSourceMetaInfo.java
(revision 207035)
+++
src/main/java/org/wso2/carbon/ndatasource/core/services/WSDataSourceMetaInfo.java
(working copy)
@@ -43,7 +43,7 @@
this.name = metaInfo.getName();
this.description = metaInfo.getDescription();
this.jndiConfig = metaInfo.getJndiConfig();
- this.system = metaInfo.isSystem();
+ this.system = !metaInfo.isPersistable();
this.definition = new
WSDataSourceDefinition(metaInfo.getDefinition());
}
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev