Repository: stratos Updated Branches: refs/heads/4.0.0-grouping 5f9f40f28 -> db7aeff90
reading config file Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/406e51a4 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/406e51a4 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/406e51a4 Branch: refs/heads/4.0.0-grouping Commit: 406e51a47511961b9765415e1d69dfda744c10de Parents: 8f889e6 Author: Isuru Haththotuwa <[email protected]> Authored: Sun Sep 21 14:20:29 2014 +0530 Committer: Isuru Haththotuwa <[email protected]> Committed: Sun Sep 21 14:20:29 2014 +0530 ---------------------------------------------------------------------- .../org.apache.stratos.metadata.client/pom.xml | 20 ++++-- .../client/config/MetaDataClientConfig.java | 75 ++++++++++++++++++-- .../client/data/extractor/DataExtractor.java | 4 +- .../metadata/client/pojo/DataContext.java | 29 ++++++++ .../client/sample/DefaultDataExtractor.java | 6 +- .../sample/MetaDataServiceClientSample.java | 39 +++++----- .../client/util/MetaDataClientConstants.java | 29 ++++++++ 7 files changed, 173 insertions(+), 29 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/406e51a4/components/org.apache.stratos.metadata.client/pom.xml ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.metadata.client/pom.xml b/components/org.apache.stratos.metadata.client/pom.xml index 9c6683c..b60e56d 100644 --- a/components/org.apache.stratos.metadata.client/pom.xml +++ b/components/org.apache.stratos.metadata.client/pom.xml @@ -20,11 +20,18 @@ </properties> <dependencies> - <dependency> - <groupId>org.apache.httpcomponents</groupId> - <artifactId>httpclient</artifactId> - <version>4.3.5</version> - </dependency> + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpclient</artifactId> + <version>4.3.5</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>commons-configuration</groupId> + <artifactId>commons-configuration</artifactId> + <version>1.9</version> + <scope>provided</scope> + </dependency> </dependencies> <build> @@ -46,8 +53,9 @@ org.apache.stratos.metadata.client.*, </Export-Package> <Import-Package> - !org.apache.commons.logging, + !org.apache.stratos.metadata.client, org.apache.commons.logging; version=0.0.0, + org.apache.commons.configuration; version=0.0.0, *;resolution:=optional </Import-Package> <DynamicImport-Package>*</DynamicImport-Package> http://git-wip-us.apache.org/repos/asf/stratos/blob/406e51a4/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/config/MetaDataClientConfig.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/config/MetaDataClientConfig.java b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/config/MetaDataClientConfig.java index a9e8c92..8bb3cbe 100644 --- a/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/config/MetaDataClientConfig.java +++ b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/config/MetaDataClientConfig.java @@ -19,11 +19,25 @@ package org.apache.stratos.metadata.client.config; +import org.apache.commons.configuration.ConfigurationException; +import org.apache.commons.configuration.XMLConfiguration; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.stratos.metadata.client.sample.MetaDataServiceClientSample; +import org.apache.stratos.metadata.client.util.MetaDataClientConstants; + + +import java.io.File; + public class MetaDataClientConfig { + private static final Log log = LogFactory.getLog(MetaDataServiceClientSample.class); + private String metaDataServiceBaseUrl; - private String extractorClassName; + private String dataExtractorClass; + + private XMLConfiguration config; private static volatile MetaDataClientConfig metaDataClientConfig; @@ -32,7 +46,45 @@ public class MetaDataClientConfig { } private void readConfig () throws RuntimeException{ - // TODO: read all configurations; metaDataServiceBaseUrl, extractorClassName. cannot be empty + + // the config file path is found from a system property + String configFilePath = System.getProperty(MetaDataClientConstants.METADATA_CLIENT_CONFIG_FILE); + if (configFilePath == null) { + throw new RuntimeException("Unable to load the configuration file; no System Property found for " + MetaDataClientConstants.METADATA_CLIENT_CONFIG_FILE); + } + loadConfig(configFilePath); + + // read configurations + metaDataServiceBaseUrl = config.getString(MetaDataClientConstants.METADATA_SERVICE_BASE_URL); + if (metaDataServiceBaseUrl == null) { + throw new RuntimeException("Unable to find metadata service base URL [ " + + MetaDataClientConstants.METADATA_SERVICE_BASE_URL + " ] in the config file"); + } + + dataExtractorClass = config.getString(MetaDataClientConstants.METADATA_CLIENT_DATA_EXTRACTOR_CLASS); + if (dataExtractorClass == null) { + log.info("No custom Data Extractor class detected in the configuration"); + } + } + + private void loadConfig (String configFilePath) { + + try { + + File confFile; + if (configFilePath != null && !configFilePath.isEmpty()) { + confFile = new File(configFilePath); + + } else { + confFile = new File(configFilePath); + } + + config = new XMLConfiguration(confFile); + + } catch (ConfigurationException e) { + String errorMsg = "Unable to load configuration file at " + configFilePath; + throw new RuntimeException(errorMsg); + } } public static MetaDataClientConfig getInstance () { @@ -52,7 +104,22 @@ public class MetaDataClientConfig { return metaDataServiceBaseUrl; } - public String getExtractorClassName() { - return extractorClassName; + public String getDataExtractorClass() { + return dataExtractorClass; } + + +/* +Sample Configuration file: + + <configuration> + <metadataService> + <baseUrl>xx.xx.xx.xx</baseUrl> + </metadataService> + <metadataClient> + <dataExtractorClass>org.foo.MyDataExtractor</dataExtractorClass> + </metadataClient> + </configuration> + +*/ } http://git-wip-us.apache.org/repos/asf/stratos/blob/406e51a4/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/data/extractor/DataExtractor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/data/extractor/DataExtractor.java b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/data/extractor/DataExtractor.java index af88b22..e5280e7 100644 --- a/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/data/extractor/DataExtractor.java +++ b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/data/extractor/DataExtractor.java @@ -28,7 +28,9 @@ public interface DataExtractor { public void initialize (); - public Collection<DataContext> getData (Object object) throws DataExtractorException; + public Collection<DataContext> getAllData (Object object) throws DataExtractorException; + + public DataContext getData (Object object) throws DataExtractorException; public void terminate () throws DataExtractorException; } http://git-wip-us.apache.org/repos/asf/stratos/blob/406e51a4/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/pojo/DataContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/pojo/DataContext.java b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/pojo/DataContext.java index 589c034..93653c7 100644 --- a/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/pojo/DataContext.java +++ b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/pojo/DataContext.java @@ -31,13 +31,38 @@ public class DataContext { private Set<String> propertyValues; + private String propertyValue; + public DataContext (String appId, String propertyKey, Set<String> propertyValues) { + this.appId = appId; + this.propertyKey = propertyKey; + this.propertyValues = propertyValues; + } public DataContext (String appId, String clusterId, String propertyKey, Set<String> propertyValues) { + this.appId = appId; + this.clusterId = clusterId; + this.propertyKey = propertyKey; + this.propertyValues = propertyValues; + } + + public DataContext (String appId, String propertyKey, String propertyValue) { + + this.appId = appId; + this.propertyKey = propertyKey; + this.propertyValue = propertyValue; + } + + public DataContext (String appId, String clusterId, String propertyKey, String propertyValue) { + + this.appId = appId; + this.clusterId = clusterId; + this.propertyKey = propertyKey; + this.propertyValue = propertyValue; } public String getAppId() { @@ -55,4 +80,8 @@ public class DataContext { public Set<String> getPropertyValues() { return propertyValues; } + + public String getPropertyValue() { + return propertyValue; + } } http://git-wip-us.apache.org/repos/asf/stratos/blob/406e51a4/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/sample/DefaultDataExtractor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/sample/DefaultDataExtractor.java b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/sample/DefaultDataExtractor.java index 030ad8f..d2878d2 100644 --- a/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/sample/DefaultDataExtractor.java +++ b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/sample/DefaultDataExtractor.java @@ -31,7 +31,11 @@ public class DefaultDataExtractor implements DataExtractor { //To change body of implemented methods use File | Settings | File Templates. } - public Collection<DataContext> getData(Object object) throws DataExtractorException { + public Collection<DataContext> getAllData(Object object) throws DataExtractorException { + return null; //To change body of implemented methods use File | Settings | File Templates. + } + + public DataContext getData(Object object) throws DataExtractorException { return null; //To change body of implemented methods use File | Settings | File Templates. } http://git-wip-us.apache.org/repos/asf/stratos/blob/406e51a4/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/sample/MetaDataServiceClientSample.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/sample/MetaDataServiceClientSample.java b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/sample/MetaDataServiceClientSample.java index 3a67768..a34adc7 100644 --- a/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/sample/MetaDataServiceClientSample.java +++ b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/sample/MetaDataServiceClientSample.java @@ -26,7 +26,6 @@ import org.apache.stratos.metadata.client.MetaDataServiceClient; import org.apache.stratos.metadata.client.config.MetaDataClientConfig; import org.apache.stratos.metadata.client.data.extractor.DataExtractor; import org.apache.stratos.metadata.client.exception.DataExtractorException; -import org.apache.stratos.metadata.client.exception.MetaDataServiceClientExeption; import org.apache.stratos.metadata.client.factory.MetaDataExtractorFactory; import org.apache.stratos.metadata.client.pojo.DataContext; @@ -53,34 +52,40 @@ public class MetaDataServiceClientSample { metaDataServiceClient = new DefaultMetaDataServiceClient(metaDataClientConfig. getMetaDataServiceBaseUrl()); metaDataServiceClient.initialize(); - dataExtractor = MetaDataExtractorFactory.getMetaDataServiceClient(metaDataClientConfig. - getExtractorClassName()); + + if (MetaDataClientConfig.getInstance().getDataExtractorClass() != null) { + dataExtractor = MetaDataExtractorFactory.getMetaDataServiceClient(metaDataClientConfig. + getDataExtractorClass()); + dataExtractor.initialize(); + } } - public void addExtractedData (Object someObj) { + public Collection<DataContext> getAllData (Object someObj) { Collection<DataContext> dataContexts = null; try { - dataContexts = dataExtractor.getData(someObj); + dataContexts = dataExtractor.getAllData(someObj); } catch (DataExtractorException e) { log.error("Unable to get extracted data", e); } - for (DataContext dataContext : dataContexts) { - if (dataContext.getPropertyValues() != null) { - for (String propertyValue : dataContext.getPropertyValues()) { - try { - metaDataServiceClient.addProperty(dataContext.getAppId(), dataContext.getClusterId(), - dataContext.getPropertyKey(), propertyValue); - - } catch (MetaDataServiceClientExeption e) { - log.error("Unable to add extracted data meta data service", e); - } - } - } + return dataContexts; + } + + public DataContext getData (Object someObj) { + + DataContext dataContext = null; + + try { + dataContext = dataExtractor.getData(someObj); + + } catch (DataExtractorException e) { + log.error("Unable to get extracted data", e); } + + return dataContext; } } http://git-wip-us.apache.org/repos/asf/stratos/blob/406e51a4/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/util/MetaDataClientConstants.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/util/MetaDataClientConstants.java b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/util/MetaDataClientConstants.java new file mode 100644 index 0000000..1b2baf2 --- /dev/null +++ b/components/org.apache.stratos.metadata.client/src/main/java/org/apache/stratos/metadata/client/util/MetaDataClientConstants.java @@ -0,0 +1,29 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF 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.apache.stratos.metadata.client.util; + +public class MetaDataClientConstants { + + public static String METADATA_CLIENT_CONFIG_FILE = "METADATA_CLIENT_CONFIG_FILE"; + + public static String METADATA_SERVICE_BASE_URL = "metadataService.baseUrl"; + + public static String METADATA_CLIENT_DATA_EXTRACTOR_CLASS = "metadataClient.dataExtractorClass"; +}
