You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devicemap.apache.org by re...@apache.org on 2014/07/05 18:34:05 UTC

svn commit: r1608051 - in /incubator/devicemap/trunk/devicemap/java/classifier/src: main/java/org/apache/devicemap/ main/java/org/apache/devicemap/cmd/ main/java/org/apache/devicemap/loaders/ main/java/org/apache/devicemap/loaders/types/ test/java/org/...

Author: rezan
Date: Sat Jul  5 16:34:04 2014
New Revision: 1608051

URL: http://svn.apache.org/r1608051
Log:
default loader locations and un initialized exception

Added:
    incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/UninitializedLoader.java
      - copied, changed from r1607967, incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/NoopLoader.java
Modified:
    incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/Constants.java
    incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/DeviceMapClient.java
    incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/cmd/Main.java
    incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/LoaderFactory.java
    incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/FileLoader.java
    incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/JarLoader.java
    incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/NoopLoader.java
    incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/URLLoader.java
    incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientFileTestOptional.java
    incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientJarTest.java
    incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientTest.java
    incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientUrlTestOptional.java

Modified: incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/Constants.java
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/Constants.java?rev=1608051&r1=1608050&r2=1608051&view=diff
==============================================================================
--- incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/Constants.java (original)
+++ incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/Constants.java Sat Jul  5 16:34:04 2014
@@ -25,6 +25,11 @@ package org.apache.devicemap;
  */
 public class Constants {
     
-    public static final String version="1.0";
+    public static final String VERSION = "1.0";
+    
+    public static final String DEVICE_DATA = "DeviceDataSource.xml";
+    public static final String DEVICE_DATA_PATCH = "DeviceDataSourcePatch.xml";
+    public static final String BUILDER_DATA = "BuilderDataSource.xml";
+    public static final String BUILDER_DATA_PATCH = "BuilderDataSourcePatch.xml";
     
 }

Modified: incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/DeviceMapClient.java
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/DeviceMapClient.java?rev=1608051&r1=1608050&r2=1608051&view=diff
==============================================================================
--- incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/DeviceMapClient.java (original)
+++ incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/DeviceMapClient.java Sat Jul  5 16:34:04 2014
@@ -36,19 +36,31 @@ public class DeviceMapClient {
 
     //indexes
     private Map<String, Device> devices;
-    private final Map<String, List<Device>> patterns;
+    private Map<String, List<Device>> patterns;
 
     public DeviceMapClient() {
-        devices = new HashMap<String, Device>();
-        patterns = new HashMap<String, List<Device>>();
+        devices = null;
+        patterns = null;
+    }
+
+    public void initDeviceData(LoaderOption option) throws IOException {
+        initDeviceData(option, null);
     }
 
-    public void loadData(LoaderOption option, String path) throws IOException {
+    public void initDeviceData(LoaderOption option, String path) throws IOException {
         devices = LoaderFactory.getLoader(option).getData(path);
+
+        if (devices == null) {
+            patterns = null;
+            return;
+        }
+
         createIndex();
     }
 
     private void createIndex() {
+        patterns = new HashMap<String, List<Device>>();
+
         for (Device device : devices.values()) {
             for (List<String> patternset : device.getPatterns().getPatterns()) {
                 for (int i = 0; i < patternset.size(); i++) {
@@ -70,6 +82,10 @@ public class DeviceMapClient {
     }
 
     public Map<String, String> classify(String text) {
+        if (devices == null) {
+            throw new RuntimeException("Uninitialized device index");
+        }
+
         Map<String, List<Device>> hits = new HashMap<String, List<Device>>();
         Device winner = null;
         String winnerStr = "";
@@ -137,10 +153,16 @@ public class DeviceMapClient {
     }
 
     public int getDeviceCount() {
+        if (devices == null) {
+            return -1;
+        }
         return devices.size();
     }
 
     public int getPatternCount() {
+        if (patterns == null) {
+            return -1;
+        }
         return patterns.size();
     }
 }

Modified: incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/cmd/Main.java
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/cmd/Main.java?rev=1608051&r1=1608050&r2=1608051&view=diff
==============================================================================
--- incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/cmd/Main.java (original)
+++ incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/cmd/Main.java Sat Jul  5 16:34:04 2014
@@ -35,16 +35,16 @@ public class Main {
 
     public static void main(String[] args) throws Exception {
 
-        System.out.println("DeviceMap Java Client " + Constants.version);
+        System.out.println("DeviceMap Java Client " + Constants.VERSION);
 
         System.setProperty("debug", "true");
 
-        String loaderPath = "";
-        LoaderOption option = LoaderOption.NOOP;
+        String loaderPath = null;
+        LoaderOption option = LoaderOption.UNINITIALIZED;
         String parameter = null;
 
         for (int i = 0; i < args.length; i++) {
-            if (args[i].equals("-l")) {
+            if (args[i].equals("-f")) {
                 option = LoaderOption.FOLDER;
                 if (args.length > (++i)) {
                     loaderPath = args[i];
@@ -58,9 +58,9 @@ public class Main {
                 option = LoaderOption.JAR;
             } else if (args[i].startsWith("-h") || args[i].startsWith("--h")) {
                 System.out.println("Usage: " + Main.class.getName() + " [OPTIONS] [FILE|STRING]\n");
-                System.out.println("  -l <path>            load Device Map resouces from folder");
+                System.out.println("  -f <path>            load Device Map resouces from folder or \"default\"");
                 System.out.println("  -j                   load Device Map resouces from jar file in classpath");
-                System.out.println("  -u <url>             load Device Map resouces from URL");
+                System.out.println("  -u <url>             load Device Map resouces from URL or \"default\"");
                 System.out.println("  FILE                 text file of strings");
                 System.out.println("  STRING               test string");
 
@@ -70,12 +70,16 @@ public class Main {
                 parameter = args[i];
             }
         }
+        
+        if("default".equals(loaderPath)) {
+            loaderPath = null;
+        }
 
         DeviceMapClient client = new DeviceMapClient();
 
         long start = System.currentTimeMillis();
 
-        client.loadData(option, loaderPath);
+        client.initDeviceData(option, loaderPath);
 
         long diff = System.currentTimeMillis() - start;
 

Modified: incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/LoaderFactory.java
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/LoaderFactory.java?rev=1608051&r1=1608050&r2=1608051&view=diff
==============================================================================
--- incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/LoaderFactory.java (original)
+++ incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/LoaderFactory.java Sat Jul  5 16:34:04 2014
@@ -22,6 +22,7 @@ import org.apache.devicemap.loaders.type
 import org.apache.devicemap.loaders.types.FileLoader;
 import org.apache.devicemap.loaders.types.NoopLoader;
 import org.apache.devicemap.loaders.types.URLLoader;
+import org.apache.devicemap.loaders.types.UninitializedLoader;
 
 /**
  *
@@ -31,7 +32,7 @@ import org.apache.devicemap.loaders.type
 public class LoaderFactory {
 
     public static enum LoaderOption {
-        JAR, FOLDER, URL, NOOP;
+        JAR, FOLDER, URL, NOOP, UNINITIALIZED;
     };
 
     public static ResourceLoader getLoader(LoaderOption option) {
@@ -45,7 +46,10 @@ public class LoaderFactory {
             case URL: {
                 return new URLLoader(new Loader());
             }
+            case NOOP: {
+                return new NoopLoader();
+            }
         }
-        return new NoopLoader();
+        return new UninitializedLoader();
     }
 }

Modified: incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/FileLoader.java
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/FileLoader.java?rev=1608051&r1=1608050&r2=1608051&view=diff
==============================================================================
--- incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/FileLoader.java (original)
+++ incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/FileLoader.java Sat Jul  5 16:34:04 2014
@@ -25,6 +25,7 @@ import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.util.Map;
+import org.apache.devicemap.Constants;
 
 import org.apache.devicemap.data.Device;
 import org.apache.devicemap.Util;
@@ -36,6 +37,8 @@ import org.apache.devicemap.loaders.Reso
  * @author Reza Naghibi
  */
 public class FileLoader implements ResourceLoader {
+    
+    private static final String DEFAULT_PATH = "";
 
     private final Loader loader;
 
@@ -45,16 +48,22 @@ public class FileLoader implements Resou
 
     /**
      *
-     * @param path which contains device map data
+     * @param path which contains device map data, set to null for default path
      * @return map of devices
      * @throws IOException
      */
     @Override
     public Map<String, Device> getData(String path) throws IOException {
-        String ddpath = path + File.separatorChar + "DeviceDataSource.xml";
-        String ddppath = path + File.separatorChar + "DeviceDataSourcePatch.xml";
-        String bpath = path + File.separatorChar + "BuilderDataSource.xml";
-        String bppath = path + File.separatorChar + "BuilderDataSourcePatch.xml";
+        if (path == null) {
+            path = DEFAULT_PATH;
+        } else {
+            path += File.separatorChar;
+        }
+        
+        String ddpath = path + Constants.DEVICE_DATA;
+        String ddppath = path + Constants.DEVICE_DATA_PATCH;
+        String bpath = path + Constants.BUILDER_DATA;
+        String bppath = path + Constants.BUILDER_DATA_PATCH;
 
         long start = System.currentTimeMillis();
 

Modified: incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/JarLoader.java
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/JarLoader.java?rev=1608051&r1=1608050&r2=1608051&view=diff
==============================================================================
--- incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/JarLoader.java (original)
+++ incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/JarLoader.java Sat Jul  5 16:34:04 2014
@@ -25,6 +25,7 @@ import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.util.Map;
 
+import org.apache.devicemap.Constants;
 import org.apache.devicemap.Util;
 import org.apache.devicemap.data.Device;
 import org.apache.devicemap.loaders.Loader;
@@ -36,6 +37,8 @@ import org.apache.devicemap.loaders.Reso
  * @author Reza Naghibi
  */
 public class JarLoader implements ResourceLoader {
+    
+    private static final String DEFAULT_PATH = "/devicedata/";
 
     private final Loader loader;
 
@@ -46,13 +49,13 @@ public class JarLoader implements Resour
     @Override
     public Map<String, Device> getData(String path) throws IOException {
         if (path == null) {
-            path = "";
+            path = DEFAULT_PATH;
         }
 
-        String ddpath = path + "/devicedata/DeviceDataSource.xml";
-        String ddppath = path + "/devicedata/DeviceDataSourcePatch.xml";
-        String bpath = path + "/devicedata/BuilderDataSource.xml";
-        String bppath = path + "/devicedata/BuilderDataSourcePatch.xml";
+        String ddpath = path + Constants.DEVICE_DATA;
+        String ddppath = path + Constants.DEVICE_DATA_PATCH;
+        String bpath = path + Constants.BUILDER_DATA;
+        String bppath = path + Constants.BUILDER_DATA_PATCH;
 
         long start = System.currentTimeMillis();
         BufferedReader ddin = getReader(ddpath);

Modified: incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/NoopLoader.java
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/NoopLoader.java?rev=1608051&r1=1608050&r2=1608051&view=diff
==============================================================================
--- incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/NoopLoader.java (original)
+++ incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/NoopLoader.java Sat Jul  5 16:34:04 2014
@@ -1,6 +1,5 @@
 package org.apache.devicemap.loaders.types;
 
-import java.io.IOException;
 import java.util.Collections;
 import java.util.Map;
 

Modified: incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/URLLoader.java
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/URLLoader.java?rev=1608051&r1=1608050&r2=1608051&view=diff
==============================================================================
--- incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/URLLoader.java (original)
+++ incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/URLLoader.java Sat Jul  5 16:34:04 2014
@@ -5,6 +5,7 @@ import java.io.IOException;
 import java.io.InputStreamReader;
 import java.net.URL;
 import java.util.Map;
+import org.apache.devicemap.Constants;
 
 import org.apache.devicemap.Util;
 import org.apache.devicemap.data.Device;
@@ -18,6 +19,8 @@ import org.apache.devicemap.loaders.Reso
  *
  */
 public class URLLoader implements ResourceLoader {
+    
+    private static final String DEFAULT_PATH = "http://svn.apache.org/repos/asf/incubator/devicemap/trunk/data/device-data/src/main/resources/devicedata";
 
     private final Loader loader;
 
@@ -27,10 +30,14 @@ public class URLLoader implements Resour
 
     @Override
     public Map<String, Device> getData(String path) throws IOException {
-        String ddpath = path + "/DeviceDataSource.xml";
-        String ddppath = path + "/DeviceDataSourcePatch.xml";
-        String bpath = path + "/BuilderDataSource.xml";
-        String bppath = path + "/BuilderDataSourcePatch.xml";
+        if (path == null) {
+            path = DEFAULT_PATH;
+        }
+        
+        String ddpath = path + "/" + Constants.DEVICE_DATA;
+        String ddppath = path + "/" + Constants.DEVICE_DATA_PATCH;
+        String bpath = path + "/" + Constants.BUILDER_DATA;
+        String bppath = path + "/" + Constants.BUILDER_DATA_PATCH;
 
         long start = System.currentTimeMillis();
 

Copied: incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/UninitializedLoader.java (from r1607967, incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/NoopLoader.java)
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/UninitializedLoader.java?p2=incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/UninitializedLoader.java&p1=incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/NoopLoader.java&r1=1607967&r2=1608051&rev=1608051&view=diff
==============================================================================
--- incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/NoopLoader.java (original)
+++ incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loaders/types/UninitializedLoader.java Sat Jul  5 16:34:04 2014
@@ -1,17 +1,15 @@
 package org.apache.devicemap.loaders.types;
 
-import java.io.IOException;
-import java.util.Collections;
 import java.util.Map;
 
 import org.apache.devicemap.data.Device;
 import org.apache.devicemap.loaders.ResourceLoader;
 
-public class NoopLoader implements ResourceLoader {
+public class UninitializedLoader implements ResourceLoader {
 
     @Override
     public Map<String, Device> getData(String path) {
-        return Collections.emptyMap();
+        return null;
     }
 
 }

Modified: incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientFileTestOptional.java
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientFileTestOptional.java?rev=1608051&r1=1608050&r2=1608051&view=diff
==============================================================================
--- incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientFileTestOptional.java (original)
+++ incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientFileTestOptional.java Sat Jul  5 16:34:04 2014
@@ -32,7 +32,7 @@ public class DeviceMapClientFileTestOpti
     public void DeviceMapClientFolderTest() throws Exception {
         DeviceMapClient client=new DeviceMapClient();
         
-        client.loadData(LoaderOption.FOLDER,"../../../data/device-data/src/main/resources/devicedata");
+        client.initDeviceData(LoaderOption.FOLDER,"../../../data/device-data/src/main/resources/devicedata");
         
         String test="Mozilla/5.0 (Linux; U; Android 2.2; en; HTC Aria A6380 Build/ERE27) AppleWebKit/540.13+ (KHTML, like Gecko) Version/3.1 Mobile Safari/524.15.0";
         

Modified: incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientJarTest.java
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientJarTest.java?rev=1608051&r1=1608050&r2=1608051&view=diff
==============================================================================
--- incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientJarTest.java (original)
+++ incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientJarTest.java Sat Jul  5 16:34:04 2014
@@ -32,7 +32,7 @@ public class DeviceMapClientJarTest {
     public void DeviceMapClientJarTest() throws Exception {
         DeviceMapClient client=new DeviceMapClient();
         
-        client.loadData(LoaderOption.JAR,"");
+        client.initDeviceData(LoaderOption.JAR);
         
         String test="Mozilla/5.0 (Linux; U; Android 2.2; en; HTC Aria A6380 Build/ERE27) AppleWebKit/540.13+ (KHTML, like Gecko) Version/3.1 Mobile Safari/524.15.0";
         

Modified: incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientTest.java
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientTest.java?rev=1608051&r1=1608050&r2=1608051&view=diff
==============================================================================
--- incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientTest.java (original)
+++ incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientTest.java Sat Jul  5 16:34:04 2014
@@ -42,7 +42,7 @@ public class DeviceMapClientTest {
     @BeforeClass
     public static void setupDeviceMapClient() throws Exception {
         client=new DeviceMapClient();
-        client.loadData(LoaderOption.JAR,"");
+        client.initDeviceData(LoaderOption.JAR);
     }
     
     @Parameters

Modified: incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientUrlTestOptional.java
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientUrlTestOptional.java?rev=1608051&r1=1608050&r2=1608051&view=diff
==============================================================================
--- incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientUrlTestOptional.java (original)
+++ incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientUrlTestOptional.java Sat Jul  5 16:34:04 2014
@@ -32,7 +32,7 @@ public class DeviceMapClientUrlTestOptio
     public void DeviceMapClientUrlTest() throws Exception {
         DeviceMapClient client=new DeviceMapClient();
         
-        client.loadData(LoaderOption.URL,"http://www.rezsoft.org/dmap-data/");
+        client.initDeviceData(LoaderOption.URL);
         
         String test="Mozilla/5.0 (Linux; U; Android 2.2; en; HTC Aria A6380 Build/ERE27) AppleWebKit/540.13+ (KHTML, like Gecko) Version/3.1 Mobile Safari/524.15.0";