2016-08-03 7 views
4

どこでも探してみましたが、olingo V4 javaで制限付きアクションを実装する方法を理解できませんでした。Olingo V4で制限付きアクションを作成する方法(java)

どこにでも無制限のアクションチュートリアルがあります。

このコードを調整しようとしました。

final CsdlAction action = new CsdlAction(); 
    action.setName("testAction"); 
    action.setBound(true); 

これは、$ metadata APIにアクセスしようとするとエラーになります。

誰かが私にそれについての良いチュートリアルの方を指し示すことができるなら、それは素晴らしいことでしょう。

+0

ここに同じ問題があります。サンプル/ソースを確認しましたか? – ieugen

+0

私はこの問題を解決することができました。オリンゴのチュートリアルでは、限定された動作について何も言及されていません。あなたの正確なユースケースは何ですか?私。結合されたアクションの戻り値の型と、必要なパラメータの型? – codestreak

答えて

2

olingoのソースコードを調べ、コードをデバッグしました。多くの研究の後、私はOlingoで有界のアクションを実装することができました。行われる必要がある

我々は、エンティティ・タイプXに囲まれ有界アクションを実装したいとしY.

エンティティを返す

変更点は以下のとおりです。

メタデータドキュメント: でCsdlAbstractEdmProvider拡張またはCsdlEdmProviderを実装するJavaクラス(カスタムクラス)、

を機能(...)ゲット・アクションを実装します

と同じメタデータプロバイダクラスのgetSchemas(...)では、getActions(...)メソッドが使用されます。我々がやっていること

@Override 
public List<CsdlSchema> getSchemas() throws ODataException { 
    // create Schema 
    CsdlSchema schema = new CsdlSchema(); 
    schema.setNamespace("Stackoverflow"); 

    // add EntityTypes 
    List<CsdlEntityType> entityTypes = new ArrayList<CsdlEntityType>(); 
    entityTypes.add(getEntityType(X)); 
    entityTypes.add(getEntityType(Y)); 

    schema.setEntityTypes(entityTypes); 

    // add EntityContainer 
    schema.setEntityContainer(getEntityContainer()); 

    // add bounded actions 
    List<CsdlAction> actions = new ArrayList<CsdlAction>(); 
    schema.setActions(actions); 
    actions.addAll(getActions(ACTION_EXECUTE_FQN)); 

    List<CsdlSchema> schemas = new ArrayList<CsdlSchema>(); 
    schemas.add(schema); 
    return schemas; 
} 

は、Xおよび戻り値の型は、エンティティY.

サービス実装であるエンティティであること私達の場合には、アクションの最初の引数としてパラメータを指定してアクションという名前ACTION_EXECUTE_FQN有界作成、ということです: 今、サービスの実装も必要です。採用されたユースケースに応じて、ActionEntityProcessorを実装するクラスを作成する必要があります。

これ以降はすべてが同じです。これが助けてくれるといいなあアクションの戻り値のタイプと、アクションがバインドされるパラメーターのタイプに応じて、他のActionProcessorがあります。

関連する問題