Author: wkeil Date: Fri Jan 1 18:55:26 2016 New Revision: 1722533 URL: http://svn.apache.org/viewvc?rev=1722533&view=rev Log: DMAP-186: Some arguments like debug/log won't work in Java Console
Task-Url: https://issues.apache.org/jira/browse/DMAP-186 Modified: devicemap/trunk/clients/1.0/java/client/src/main/java/org/apache/devicemap/DeviceMapClient.java Modified: devicemap/trunk/clients/1.0/java/client/src/main/java/org/apache/devicemap/DeviceMapClient.java URL: http://svn.apache.org/viewvc/devicemap/trunk/clients/1.0/java/client/src/main/java/org/apache/devicemap/DeviceMapClient.java?rev=1722533&r1=1722532&r2=1722533&view=diff ============================================================================== --- devicemap/trunk/clients/1.0/java/client/src/main/java/org/apache/devicemap/DeviceMapClient.java (original) +++ devicemap/trunk/clients/1.0/java/client/src/main/java/org/apache/devicemap/DeviceMapClient.java Fri Jan 1 18:55:26 2016 @@ -162,6 +162,7 @@ public class DeviceMapClient { private static final String DEVICE_OS_VERSION = "device_os_version"; private static final String ANDROID = "Android"; + private static final String LIKE_MAC = "like Mac OS X"; private DeviceType fixFromUserAgent(final DeviceType device, final UserAgent userAgent) { String pattern = userAgent.getPatternElementsInside(); @@ -178,13 +179,27 @@ public class DeviceMapClient { String[] parts = pattern.split(";"); for (String part : parts) { - if (part.trim().startsWith(ANDROID)) { - final String versionPart = part.trim().substring(ANDROID.length()).trim(); - final String versionExisting = attributes.get(DEVICE_OS_VERSION); - if (!versionPart.equals(versionExisting)) { - LOG.fine("Fixing '" + versionExisting +"' to '" + versionPart + "'" ); - attributes.put(DEVICE_OS_VERSION, versionPart); - device.setAttributes(attributes); + if (part != null) { + if (part.trim().startsWith(ANDROID)) { + final String versionPart = part.trim().substring(ANDROID.length()).trim(); + final String versionExisting = attributes.get(DEVICE_OS_VERSION); + if (!versionPart.equals(versionExisting)) { + LOG.fine("Fixing '" + versionExisting +"' to '" + versionPart + "'" ); + attributes.put(DEVICE_OS_VERSION, versionPart); + device.setAttributes(attributes); + } + } + if (part.trim().endsWith(LIKE_MAC)) { + String versionCandidate = part.trim().substring(0, part.trim().length() - LIKE_MAC.length()).trim(); + if (versionCandidate.contains("OS")) { + final String versionPart = versionCandidate.substring(versionCandidate.indexOf("OS")+2).trim().replaceAll("_", "."); + final String versionExisting = attributes.get(DEVICE_OS_VERSION); + if (!versionPart.equals(versionExisting)) { + LOG.fine("Fixing '" + versionExisting +"' to '" + versionPart + "'" ); + attributes.put(DEVICE_OS_VERSION, versionPart); + device.setAttributes(attributes); + } + } } } }
