private void parseCapabilityTag(Element capability) { // Get the event type. EventType eventType = EventType.valueOfIgnoreCase( capability.getAttributeValue(CAPABILITY_NAME_ATTRIBUTE)); if (eventType == EventType.UNKNOWN) { return; } // Parse comma separated "context" attribute. List<Context> contexts; String contextsString = capability.getAttributeValue(CAPABILITY_CONTEXT_ATTRIBUTE); if (contextsString != null && !contextsString.isEmpty()) { try { contexts = Lists.newArrayList(); for (String context : contextsString.split(",")) { contexts.add(Context.valueOfIgnoreCase(context)); } } catch (IllegalArgumentException e) { contexts = Capability.DEFAULT_CONTEXT; } } else { contexts = Capability.DEFAULT_CONTEXT; } // Parse optional "filter" attribute. String filter = capability.getAttributeValue(CAPABILITY_FILTER_ATTRIBUTE); if (filter == null || filter.isEmpty()) { filter = ""; } this.capabilities.put(eventType, new Capability(eventType, contexts, filter)); }
@Override public String toString() { StringBuilder result = new StringBuilder("RobotCapabilities[version=" + version + ",hash=" + capabilitiesHash); for (Map.Entry<EventType, Capability> entry : capabilities.entrySet()) { result .append(",") .append(entry.getKey()) .append(":(") .append(entry.getValue().getEventType()) .append(",#") .append(entry.getValue().getContexts().size()) .append(",") .append(entry.getValue().getFilter()) .append(")"); } result.append("]"); return result.toString(); } }
private static RobotCapabilities deserialize(ProtoRobotCapabilities data) { Map<EventType, Capability> capabilities = Maps.newHashMap(); for (ProtoRobotCapability capabilityData: data.getCapabilityList()) { Capability capability = deserialize(capabilityData); capabilities.put(capability.getEventType(), capability); } return new RobotCapabilities(capabilities, data.getCapabilitiesHash(), ProtocolVersion.fromVersionString(data.getProtocolVersion())); }
contexts = Capability.DEFAULT_CONTEXT; } else { contexts = capability.getContexts();
private boolean compareCapability(Capability c1, Capability c2) { if (c1.getEventType() != c2.getEventType() || !c1.getFilter().equals(c2.getFilter())) { return false; } EnumSet<Context> cset1 = EnumSet.copyOf(c1.getContexts()); EnumSet<Context> cset2 = EnumSet.copyOf(c2.getContexts()); return cset1.equals(cset2); }
private static Capability deserialize(ProtoRobotCapability data) { List<Context> contexts = Lists.newArrayList(); for (String str: data.getContextList()) { contexts.add(Context.valueOf(str)); } return new Capability(EventType.valueOf(data.getEventType()), contexts, data.getFilter()); } }
private boolean compareCapability(Capability c1, Capability c2) { if (c1.getEventType() != c2.getEventType() || !c1.getFilter().equals(c2.getFilter())) { return false; } EnumSet<Context> cset1 = EnumSet.copyOf(c1.getContexts()); EnumSet<Context> cset2 = EnumSet.copyOf(c2.getContexts()); return cset1.equals(cset2); }
new Capability(EventType.WAVELET_SELF_ADDED, Capability.DEFAULT_CONTEXT));
private static ProtoRobotCapability serialize(Capability capability) { ProtoRobotCapability.Builder builder = ProtoRobotCapability.newBuilder(); builder.setEventType(capability.getEventType().name()); builder.setFilter(capability.getFilter()); for (Context context: capability.getContexts()) { builder.addContext(context.name()); } return builder.build(); }
@Override protected void setUp() throws Exception { super.setUp(); robotAccount = new RobotAccountDataImpl(ROBOT_ID, "example.com", "secret", null, false); // For the updatedRobotAccount, we'll put a few capabilities in with a mix // of field values. Map<EventType, Capability> capabilities = CollectionUtils.newHashMap(); capabilities.put( EventType.WAVELET_BLIP_CREATED, new Capability(EventType.WAVELET_BLIP_CREATED)); capabilities.put(EventType.DOCUMENT_CHANGED, new Capability(EventType.DOCUMENT_CHANGED, CollectionUtils.newArrayList(Context.SIBLINGS))); capabilities.put(EventType.BLIP_SUBMITTED, new Capability(EventType.BLIP_SUBMITTED, CollectionUtils.newArrayList(Context.SIBLINGS, Context.PARENT), "blah")); updatedRobotAccount = new RobotAccountDataImpl(ROBOT_ID, "example.com", "secret", new RobotCapabilities( capabilities, "FAKEHASH", ProtocolVersion.DEFAULT), true); convertedRobot = new HumanAccountDataImpl(ROBOT_ID); }
private DBObject capabilitiesToObject(RobotCapabilities capabilities) { if (capabilities == null) { return null; } BasicDBObject capabilitiesObj = new BasicDBObject(); for (Capability capability : capabilities.getCapabilitiesMap().values()) { BasicBSONList contexts = new BasicBSONList(); for (Context c : capability.getContexts()) { contexts.add(c.name()); } capabilitiesObj.put(capability.getEventType().name(), new BasicDBObject() .append(CAPABILITY_CONTEXTS_FIELD, contexts) .append(CAPABILITY_FILTER_FIELD, capability.getFilter())); } BasicDBObject object = new BasicDBObject() .append(CAPABILITIES_CAPABILITIES_FIELD, capabilitiesObj) .append(CAPABILITIES_HASH_FIELD, capabilities.getCapabilitiesHash()) .append(CAPABILITIES_VERSION_FIELD, capabilities.getProtocolVersion().name()); return object; }
@Override protected void setUp() throws Exception { super.setUp(); robotAccount = new RobotAccountDataImpl(ROBOT_ID, "example.com", "secret", null, false); // For the updatedRobotAccount, we'll put a few capabilities in with a mix // of field values. Map<EventType, Capability> capabilities = CollectionUtils.newHashMap(); capabilities.put( EventType.WAVELET_BLIP_CREATED, new Capability(EventType.WAVELET_BLIP_CREATED)); capabilities.put(EventType.DOCUMENT_CHANGED, new Capability(EventType.DOCUMENT_CHANGED, CollectionUtils.newArrayList(Context.SIBLINGS))); capabilities.put(EventType.BLIP_SUBMITTED, new Capability(EventType.BLIP_SUBMITTED, CollectionUtils.newArrayList(Context.SIBLINGS, Context.PARENT), "blah")); updatedRobotAccount = new RobotAccountDataImpl(ROBOT_ID, "example.com", "secret", new RobotCapabilities( capabilities, "FAKEHASH", ProtocolVersion.DEFAULT), true); convertedRobot = new HumanAccountDataImpl(ROBOT_ID); }
@SuppressWarnings("unchecked") private RobotCapabilities objectToCapabilities(DBObject object) { if (object == null) { return null; } Map<String, Object> capabilitiesObj = (Map<String, Object>) object.get(CAPABILITIES_CAPABILITIES_FIELD); Map<EventType, Capability> capabilities = CollectionUtils.newHashMap(); for (Entry<String, Object> capability : capabilitiesObj.entrySet()) { EventType eventType = EventType.valueOf(capability.getKey()); List<Context> contexts = CollectionUtils.newArrayList(); DBObject capabilityObj = (DBObject) capability.getValue(); DBObject contextsObj = (DBObject) capabilityObj.get(CAPABILITY_CONTEXTS_FIELD); for (String contextId : contextsObj.keySet()) { contexts.add(Context.valueOf((String) contextsObj.get(contextId))); } String filter = (String) capabilityObj.get(CAPABILITY_FILTER_FIELD); capabilities.put(eventType, new Capability(eventType, contexts, filter)); } String capabilitiesHash = (String) object.get(CAPABILITIES_HASH_FIELD); ProtocolVersion version = ProtocolVersion.valueOf((String) object.get(CAPABILITIES_VERSION_FIELD)); return new RobotCapabilities(capabilities, capabilitiesHash, version); } }
@Override protected void setUp() throws Exception { super.setUp(); robotAccount = new RobotAccountDataImpl(ROBOT_ID, "example.com", "secret", null, false); Map<EventType, Capability> capabilities = CollectionUtils.newHashMap(); capabilities.put( EventType.WAVELET_BLIP_CREATED, new Capability(EventType.WAVELET_BLIP_CREATED)); capabilities.put(EventType.DOCUMENT_CHANGED, new Capability(EventType.DOCUMENT_CHANGED, CollectionUtils.newArrayList(Context.SIBLINGS))); capabilities.put(EventType.BLIP_SUBMITTED, new Capability(EventType.BLIP_SUBMITTED, CollectionUtils.newArrayList(Context.SIBLINGS, Context.PARENT), "blah")); robotAccountWithCapabilities = new RobotAccountDataImpl(ROBOT_ID, "example.com", "secret", new RobotCapabilities( capabilities, "FAKEHASH", ProtocolVersion.DEFAULT), true); humanAccount = new HumanAccountDataImpl(HUMAN_ID); humanAccountWithDigest = new HumanAccountDataImpl(HUMAN_ID, new PasswordDigest("password".toCharArray())); }
@Override protected void setUp() throws Exception { super.setUp(); robotAccount = new RobotAccountDataImpl(ROBOT_ID, "example.com", "secret", null, false); Map<EventType, Capability> capabilities = CollectionUtils.newHashMap(); capabilities.put( EventType.WAVELET_BLIP_CREATED, new Capability(EventType.WAVELET_BLIP_CREATED)); capabilities.put(EventType.DOCUMENT_CHANGED, new Capability(EventType.DOCUMENT_CHANGED, CollectionUtils.newArrayList(Context.SIBLINGS))); capabilities.put(EventType.BLIP_SUBMITTED, new Capability(EventType.BLIP_SUBMITTED, CollectionUtils.newArrayList(Context.SIBLINGS, Context.PARENT), "blah")); robotAccountWithCapabilities = new RobotAccountDataImpl(ROBOT_ID, "example.com", "secret", new RobotCapabilities( capabilities, "FAKEHASH", ProtocolVersion.DEFAULT), true); humanAccount = new HumanAccountDataImpl(HUMAN_ID); humanAccountWithDigest = new HumanAccountDataImpl(HUMAN_ID, new PasswordDigest("password".toCharArray())); }
capabilities.put(eventType, new Capability(eventType));
capabilities.put(eventType, new Capability(eventType));