protected DeviceTivo foundTiVo( InetAddress address, String uid, String classification, String machine) { uid = "tivo:" + uid; DeviceImpl[] devices = device_manager.getDevices(); String server_name = device_manager.getLocalServiceName(); for (DeviceImpl device : devices) { if (device instanceof DeviceTivo) { DeviceTivo tivo = (DeviceTivo) device; if (device.getID().equals(uid)) { if (classification != null) { String existing_classification = device.getClassification(); if (!classification.equals(existing_classification)) { device.setPersistentStringProperty(DeviceImpl.PP_REND_CLASSIFICATION, classification); } } tivo.found(this, address, server_name, machine); return (tivo); } } } // unfortunately we can't deduce the series from the browse request so start off with a series 3 // this will be corrected later if we receive a beacon which *does* contain the series details if (classification == null) { classification = "tivo.series3"; } DeviceTivo new_device = new DeviceTivo(device_manager, uid, classification); DeviceTivo result = (DeviceTivo) device_manager.addDevice(new_device); // possible race here so handle case where device already present if (result == new_device) { new_device.found(this, address, server_name, machine); } return (result); }