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";
+}

Reply via email to