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