Flash Builderを使用して、start-indexとmax-results(YouTube APIの場合)という名前の2つのパラメーターを使用してデータサービスを作成する必要があります。Flash Builder / Flexデータサービスでは、パラメーター名に含めることができるのは文字、数字、およびアンダースコアのみです。子クラスを使用してサービスのスーパークラスでこれらをオーバーライドすることを目的として、一時的にstartIndexとmaxResultsを使用しました。それは私が思ったほど単純ではないことがわかり、私はこれをさまざまな方法で試しました。スーパークラスのパラメーター名を上書きすると正常に動作しますが、自動生成されるため、必然的に上書きされます。これはスーパークラス_Super_TopRatedService.asです:
package services.topratedservice
{
**(imports here)**
[ExcludeClass]
internal class _Super_TopRatedService extends com.adobe.fiber.services.wrapper.HTTPServiceWrapper
{
private static var serializer0:XMLSerializationFilter = new XMLSerializationFilter();
// Constructor
public function _Super_TopRatedService()
{
// initialize service control
_serviceControl = new mx.rpc.http.HTTPMultiService();
var operations:Array = new Array();
var operation:mx.rpc.http.Operation;
var argsArray:Array;
operation = new mx.rpc.http.Operation(null, "getData");
operation.url = "https://gdata.youtube.com/feeds/api/standardfeeds/top_rated";
operation.method = "GET";
argsArray = new Array("startIndex","maxResults");
operation.argumentNames = argsArray;
operation.serializationFilter = serializer0;
operation.properties = new Object();
operation.properties["xPath"] = "/::entry";
operation.resultElementType = valueObjects.Entry;
operations.push(operation);
_serviceControl.operationList = operations;
preInitializeService();
model_internal::initialize();
}
//init initialization routine here, child class to override
protected function preInitializeService():void
{
}
/**
* This method is a generated wrapper used to call the 'getData' operation. It returns an mx.rpc.AsyncToken whose
* result property will be populated with the result of the operation when the server response is received.
* To use this result from MXML code, define a CallResponder component and assign its token property to this method's return value.
* You can then bind to CallResponder.lastResult or listen for the CallResponder.result or fault events.
*
* @see mx.rpc.AsyncToken
* @see mx.rpc.CallResponder
*
* @return an mx.rpc.AsyncToken whose result property will be populated with the result of the operation when the server response is received.
*/
public function getData(startIndex:int, maxresults:int) : mx.rpc.AsyncToken
{
var _internal_operation:mx.rpc.AbstractOperation = _serviceControl.getOperation("getData");
var _internal_token:mx.rpc.AsyncToken = _internal_operation.send(startIndex,maxresults) ;
return _internal_token;
}
}
パラメータ名は、argsArray = new Array( "startIndex"、 "maxResults");の行で確認できます。
これは子クラスTopRatedService.asです:
package services.topratedservice
{
public class TopRatedService extends _Super_TopRatedService
{
/**
* Override super.init() to provide any initialization customization if needed.
*/
protected override function preInitializeService():void
{
super.preInitializeService();
// Initialization customization goes here
}
}
}
これをどこでどのようにオーバーライドする必要がありますか?