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/23 01:32:54 UTC

svn commit: r1612726 - in /incubator/devicemap/trunk/devicemap/java/classifier: ./ src/main/java/org/apache/devicemap/ src/main/java/org/apache/devicemap/data/ src/main/java/org/apache/devicemap/loader/impl/ src/test/java/org/apache/devicemap/

Author: rezan
Date: Tue Jul 22 23:32:54 2014
New Revision: 1612726

URL: http://svn.apache.org/r1612726
Log:
classify() map cannot be modified

Added:
    incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientUnitTest.java
      - copied, changed from r1612721, incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientJarTest.java
Modified:
    incubator/devicemap/trunk/devicemap/java/classifier/pom.xml
    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/data/DeviceType.java
    incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loader/impl/DDRLoader.java

Modified: incubator/devicemap/trunk/devicemap/java/classifier/pom.xml
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/pom.xml?rev=1612726&r1=1612725&r2=1612726&view=diff
==============================================================================
--- incubator/devicemap/trunk/devicemap/java/classifier/pom.xml (original)
+++ incubator/devicemap/trunk/devicemap/java/classifier/pom.xml Tue Jul 22 23:32:54 2014
@@ -26,6 +26,7 @@
     <groupId>org.apache</groupId>
     <artifactId>apache</artifactId>
     <version>14</version>
+    <relativePath></relativePath>
   </parent>
 
   <groupId>org.apache.devicemap</groupId>

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=1612726&r1=1612725&r2=1612726&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 Tue Jul 22 23:32:54 2014
@@ -20,6 +20,7 @@ package org.apache.devicemap;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -36,10 +37,15 @@ public class DeviceMapClient {
     //indexes
     private Map<String, DeviceType> devices;
     private Map<String, List<DeviceType>> patterns;
+    
+    private Map<String, String> unknown;
 
     public DeviceMapClient() {
         devices = null;
         patterns = null;
+        unknown = new HashMap<String, String>();
+        unknown.put("id", Constants.UNKNOWN_ID);
+        unknown = Collections.unmodifiableMap(unknown);
     }
 
     public void initDeviceData(LoaderOption option) throws IOException {
@@ -159,8 +165,6 @@ public class DeviceMapClient {
     }
 
     private Map<String, String> getUnknownDevice() {
-        Map<String, String> unknown = new HashMap<String, String>();
-        unknown.put("id", Constants.UNKNOWN_ID);
         return unknown;
     }
 

Modified: incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/data/DeviceType.java
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/data/DeviceType.java?rev=1612726&r1=1612725&r2=1612726&view=diff
==============================================================================
--- incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/data/DeviceType.java (original)
+++ incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/data/DeviceType.java Tue Jul 22 23:32:54 2014
@@ -18,6 +18,7 @@
  */
 package org.apache.devicemap.data;
 
+import java.util.Collections;
 import java.util.Map;
 
 public class DeviceType {
@@ -42,7 +43,7 @@ public class DeviceType {
                 + "parentId='" + parentId + "',"
                 + "type='" + type + "',"
                 + "pattern=" + pattern + ","
-                + "attribytes=" + attributes + ".";
+                + "attributes=" + attributes + ".";
     }
 
     public String getId() {
@@ -80,4 +81,8 @@ public class DeviceType {
     public void setAttributes(Map<String, String> attributes) {
         this.attributes = attributes;
     }
+    
+    public void lockAttributes() {
+        attributes = Collections.unmodifiableMap(attributes);
+    }
 }

Modified: incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loader/impl/DDRLoader.java
URL: http://svn.apache.org/viewvc/incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loader/impl/DDRLoader.java?rev=1612726&r1=1612725&r2=1612726&view=diff
==============================================================================
--- incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loader/impl/DDRLoader.java (original)
+++ incubator/devicemap/trunk/devicemap/java/classifier/src/main/java/org/apache/devicemap/loader/impl/DDRLoader.java Tue Jul 22 23:32:54 2014
@@ -210,6 +210,7 @@ public class DDRLoader implements Loader
     private void setParentAttributes() {
         for (DeviceType device : devices.values()) {
             mergeParent(device);
+            device.lockAttributes();
         }
     }
 

Copied: incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientUnitTest.java (from r1612721, 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/DeviceMapClientUnitTest.java?p2=incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientUnitTest.java&p1=incubator/devicemap/trunk/devicemap/java/classifier/src/test/java/org/apache/devicemap/DeviceMapClientJarTest.java&r1=1612721&r2=1612726&rev=1612726&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/DeviceMapClientUnitTest.java Tue Jul 22 23:32:54 2014
@@ -23,19 +23,60 @@ import org.junit.Assert;
 import org.junit.Test;
 
 import org.apache.devicemap.loader.LoaderOption;
+import org.junit.BeforeClass;
 
-public class DeviceMapClientJarTest {
-
+public class DeviceMapClientUnitTest {
+    
+    private static DeviceMapClient client;
+
+    @BeforeClass
+    public static void setupDeviceMapClient() throws Exception {
+        client = new DeviceMapClient();
+        client.initDeviceData(LoaderOption.JAR);
+    }
+    
     @Test
-    public void DeviceMapClientJarTest() throws Exception {
-        DeviceMapClient client = new DeviceMapClient();
+    public void DeviceMapClientUnknownTest() throws Exception {
+        Map<String, String> m = client.classify("");
 
-        client.initDeviceData(LoaderOption.JAR);
+        Assert.assertEquals("test ua not unknown", Constants.UNKNOWN_ID, m.get("id"));
+        
+        m = client.classify(null);
+
+        Assert.assertEquals("test ua not unknown", Constants.UNKNOWN_ID, m.get("id"));
+    }
 
+    @Test
+    public void DeviceMapClientMutateTest() throws Exception {
         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";
 
         Map<String, String> m = client.classify(test);
 
         Assert.assertEquals("test ua not htc aria", "HTC Aria", m.get("id"));
+        
+        try {
+            m.put("mutate", "true");
+            Assert.fail("UnsupportedOperationException expected when changing result map");
+        } catch(UnsupportedOperationException uoe) {
+            //pass
+        } catch(Exception ex) {
+            Assert.fail("UnsupportedOperationException expected when changing result map");
+        }
+    }
+        
+    @Test
+    public void DeviceMapClientMutateUnknownTest() throws Exception {
+        Map<String, String> m = client.classify("unknown");
+
+        Assert.assertEquals("test ua not unknown", Constants.UNKNOWN_ID, m.get("id"));
+        
+        try {
+            m.put("mutate", "true");
+            Assert.fail("UnsupportedOperationException expected when changing result map");
+        } catch(UnsupportedOperationException uoe) {
+            //pass
+        } catch(Exception ex) {
+            Assert.fail("UnsupportedOperationException expected when changing result map");
+        }
     }
 }