/** * Create a new DataRequester instance. * * @param inEmitterSupport a <code>DataEmitterSupport</code> value * @param inRequestType an <code>OutputType</code> value */ private DataRequester(DataEmitterSupport inEmitterSupport, OutputType inRequestType) { assert(inEmitterSupport != null); assert(inEmitterSupport.getRequestID() != null); emitterSupport = inEmitterSupport; requestType = inRequestType; } /**
@Override public void run() { requests.put(token, inSupport.getRequestID()); } });
@Override public void requestData(DataRequest inRequest, DataEmitterSupport inSupport) throws RequestDataException { mRequests.put(inSupport.getRequestID(), inSupport); }
/** * Subscribes the given data requester to the data flow indicated by the request type. * * @param inRequest an <code>OutputType</code> value * @param inSupport a <code>DataEmitterSupport</code> value */ private void subscribe(OutputType inRequest, DataEmitterSupport inSupport) { synchronized(subscribers) { DataRequester requester = new DataRequester(inSupport, inRequest); requester.subscribe(); subscribers.put(inSupport.getRequestID(), requester); } } /**
mRequests.put(inSupport.getRequestID(), future); } catch (MalformedURLException e) { throw new IllegalRequestParameterValue(getURN(), obj, e);
@Override public void requestData(DataRequest inRequest, final DataEmitterSupport inSupport) throws RequestDataException { //No request parameters are supported. //All reports received are emitted. //Verify no request parameters are specified if(inRequest.getData() != null) { throw new IllegalRequestParameterValue( Messages.REQUEST_PARAMETER_SPECIFIED); } try { ReportListener listener = new ReportListenerEmitter(inSupport); getClient().addReportListener(listener); mRequestTable.put(inSupport.getRequestID(), listener); } catch (ClientInitException e) { throw new RequestDataException(e, Messages.REQUEST_CLIENT_NOT_INITIALIZED); } }
@Override public void requestData(DataRequest inRequest, DataEmitterSupport inSupport) throws RequestDataException { if(inRequest == null) { throw new IllegalRequestParameterValue(getURN(), null); } Object obj = inRequest.getData(); if(obj == null) { throw new IllegalRequestParameterValue(getURN(), null); } String query; if(obj instanceof String) { query = (String)obj; } else { throw new UnsupportedRequestParameterType(getURN(), obj); } String[] querySplit = query.split(QUERY_DELIM); if (querySplit.length != 4 || !QUERY_SPLIT[0].equals(querySplit[0]) ||!QUERY_SPLIT[1].equals(querySplit[1]) ||!QUERY_SPLIT[2].equals(querySplit[2])) { throw new RequestDataException(new I18NBoundMessage1P(Messages.INVALID_QUERY, query)); } // find the type they are requesting (ie select * from <type>) String type = query.substring(QUERY_PREFIX.length()); Class<?> theClass = getClassForRequest(type); if (theClass == null) { throw new RequestDataException(new I18NBoundMessage1P(Messages.UNSUPPORTED_TYPE, type)); } Pair<Class<?>, DataEmitterSupport> request = new Pair<Class<?>, DataEmitterSupport>(theClass, inSupport); mRequestMap.put(inSupport.getRequestID(), request); }