将ETrade Java代码示例转换为Coldfusion

时间:2017-05-31 01:33:10

标签: java coldfusion

我在ColdFusion服务器上实现了ETrade Java SDK。

import com.etrade.etws.account.Account; 
import com.etrade.etws.account.AccountListResponse; 
import com.etrade.etws.oauth.sdk.client.IOAuthClient; 
import com.etrade.etws.oauth.sdk.client.OAuthClientImpl; 
Import com.etrade.etws.oauth.sdk.common.Token; 
import com.etrade.etws.sdk.client.ClientRequest; 

// Variables 
public IOAuthClient client = null; 
public ClientRequest request = null; 
public Token token = null; 
public String oauth_consumer_key = null; // Your consumer key 
public String oauth_consumer_secret = null; // Your consumer secret 
public String oauth_request_token = null; // Request token  
public String oauth_request_token_secret= null; // Request token secret 

client = OAuthClientImpl.getInstance(); // Instantiate IOAUthClient 
request = new ClientRequest(); // Instantiate ClientRequest 
request.setEnv(Environment.SANDBOX); // Use sandbox environment 

request.setConsumerKey(oauth_consumer_key); //Set consumer key 
request.setConsumerSecret(oauth_consumer_secret); // Set consumer secret 
token=client.getRequestToken(request); // Get request-token object         
oauth_request_token  = token.getToken(); // Get token string 
oauth_request_token_secret = token.getSecret(); // Get token secret 

但是将Java转换为ColdFusion对我来说是新的。我已经复制了JAR文件,所以我不认为需要进口。

我已经创建了变量代码部分的前三行:

<cfset client = CreateObject("java","com.etrade.etws.oauth.sdk.client.IOAuthClient") />
<cfset request = CreateObject("java","com.etrade.etws.sdk.client.ClientRequest") />
<cfset token = CreateObject("java","com.etrade.etws.oauth.sdk.common.Token") />

但是,我无法找到对// Instantiate ...或// Set ...评论的行的良好参考。

对思想或参考链接非常开放。

提前致谢

1 个答案:

答案 0 :(得分:1)

(评论太长)

正确。 CF中不需要import语句(// Variables部分也不需要)。虽然您注意到,导入对于识别不同类的位置非常有用。

您在初始代码中找出变量类型时做得非常好。它很接近,但有一些提示/更正:

  

public IOAuthClient client = null;

  1. 不要让变量声明欺骗你;-)客户端变量的类实际上应该是 OAuthClientImpl ,而不是接口&#34; IOAuthClient&#34;。

    CreateObject("java","com.etrade.etws.oauth.sdk.client.OAuthClientImpl").getInstance() 
    
  2.   

    request = new ClientRequest(); //实例化ClientRequest

    1. 在java中,语法new SomeClass(...)用于实例化对象。 CF不支持java对象的 new 关键字。而是使用伪造构函数init()

      cRequest = CreateObject("java","com.etrade.etws.sdk.client.ClientRequest").init()
      
    2.   

      request.setEnv(的环境 .SANDBOX); //使用沙箱环境

      1. 不幸的是,该示例忘记包含Environment类的路径。但是,如果您可以在可下载的Java示例中找到它。 (注意,Environment是enum,即常量,因此不需要实例化。)

        createObject("java", "com.etrade.etws.sdk.client.Environment")
        
      2. 某些java变量名称是CF(requestclient)中的保留字,因此最好将其更改为其他内容以避免意外结果。

      3. NB:虽然使用CFML在技术上没有任何问题,但使用cfscript编写java代码更简单,更自然,因为语法非常相似。因此,在进入太远的事情之前,请考虑转换。

        另外,您可能会发现this thread有帮助。它不是关于E-Trade API,而是有一些关于转换应该应用于任何java库的java代码的一般提示。一旦你掌握了基础知识,它就会为各种课程起泡沫,冲洗和重复。