@Override public GatewayClient storeClient(GatewayClient client) throws DatastoreException { log.debug("Storing client: [%s]", client); Application application = getApplication(client.getBareJid()); if (application == null) { log.debug("Client [%s] already exists", client); throw new ApplicationNotFoundException(); } Mutator mutator = Pelops.createMutator(schemaName); mutator.writeColumns( "clients", client.getBareJid(), mutator.newColumnList(mutator.newColumn(client.getResource(), client.getResource()))); try { mutator.execute(ConsistencyLevel.ONE); log.debug("Client [%s] stored successfully", client); } catch (Exception e) { log.error(e.getMessage(), e); throw new DatastoreException( String.format("Could not create client application [%s]", client)); } return client; }
@Override public GatewayClient getClient(String jid) { log.debug("Finding client with jid: [%s]", jid); GatewayClient client = null; try { String bareJid = JIDUtils.getBareJid(jid); String resource = JIDUtils.getResource(jid); boolean resourceFound = false; Selector selector = Pelops.createSelector(schemaName); List<Column> columns = selector.getColumnsFromRow("clients", bareJid, false, ConsistencyLevel.ONE); if (columns != null && columns.size() > 0) { for (Column column : columns) { String name = Bytes.toUTF8(column.getName()); if (name.equals(resource)) { resourceFound = true; } } } if (resourceFound) { Application application = getApplication(JIDUtils.getBareJid(jid)); if (application != null) { client = new GatewayClient(); client.setJid(jid); client.setPlatform(application.getPlatform()); } } } catch (PelopsException pe) { log.error(pe.getMessage(), pe); } return client; }