開發STAF擴展插件

開發STAF插件,主要是實現STAFServiceInterfaceLevel30接口,實現init、term、acceptRequest三個方法即可,根據名稱可以得知:一個爲初始化方法,一個爲銷燬方法,一個爲處理請求方法。

 

舉個例子,我們可以在init中初始化一個handle,然後再term中銷燬這個handle  
init:  
try {
	fServiceName = info.name;
	fHandle = new STAFHandle("STAF/Service/" + info.name);
} catch (STAFException e) {
	return new STAFResult(STAFResult.STAFRegistrationError, e
					.toString());
}

term: 
try {
	unregisterHelpData(kDeviceInvalidSerialNumber);
	// Un-register the service handle
	fHandle.unRegister();
} catch (STAFException ex) {
	return new STAFResult(STAFResult.STAFRegistrationError, ex
					.toString());
} 

在init中,我們還可以使用STAFCommandParser來定義Request接收的參數列表情況,如下: 
 
// QUERY parser
 fQueryParser = new STAFCommandParser();
 // STAFCommandParser.VALUENOTALLOWED 表示請求時不能給 QUERY傳一個值
 fQueryParser.addOption("QUERY", 1,
                                    STAFCommandParser.VALUENOTALLOWED);   
 //STAFCommandParser.VALUEREQUIRED      表示請求時可以給 NAME傳一個值,但不是必須的
 fQueryParser.addOption("NAME", 1,
                                    STAFCommandParser.VALUEALLOWED);
//STAFCommandParser.VALUEREQUIRED      表示請求時必須給 EDUCATION傳一個值
 fQueryParser.addOption("EDUCATION", 1,
                                    STAFCommandParser.VALUEREQUIRED);
 // 這個表明你需要NAME 和 EDUCATION      , 但不能兩個都有
 fQueryParser.addOptionGroup("NAME      EDUCATION", 0, 1);
 // 如果你指定了 NAME      或者 EDUCATION , QUERY是必須的
fQueryParser.addOptionNeed("NAME      EDUCATION", "QUERY");
 // 如果你指定了QUERY, 需要NAME      或者 EDUCATION
fQueryParser.addOptionNeed("QUERY", "NAME      EDUCATION"); 
 

初始化函數以及銷燬函數基本上寫完了,剩下就是acceptRequest函數,處理請求函數 

此函數接收RequestInfo參數,通過獲取request來獲取請求的類型,以便來判斷如何處理請求

String lowerRequest = info.request.toLowerCase();
StringTokenizer requestTokenizer = new StringTokenizer(lowerRequest);
String request = requestTokenizer.nextToken();
// Call the appropriate method to handle the command
if (request.equals("run"))
	return handleRun(info);
else if (request.equals("helloworld"))
	return handleHello(info);
else {
	return new STAFResult(STAFResult.InvalidRequestString,
					"Unknown widebright Service Request: " + lowerRequest);
} 

在處理函數中,可以使用init中初始化的fQueryParser來轉化Request請求,這樣可以對傳入的參數進行檢查 

獲取傳入參數後就可以根據自己的想法來處理了,在最終,你需要返回STAFResult來作爲處理的結果.

當你的擴展類完成後,下面一步就是打包,你可以參考“Ant打包部署STAF插件”來進行部署,此處不再詳說

示例下載:http://download.csdn.net/detail/sogouauto/8556687


轉載請註明:http://blog.csdn.net/sogouauto

探索測試奧義,交流測試技術,歡迎關注“搜狗測試”


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章