バラナの中にカスタム関数をインストールしようとすると(ポリシーの適用条件で使用するため)、私はここで質問しようとしています。 は基本的に、約balanaエンジン内部の新機能をインストール言うことドキュメンテーションそれはです: 1)このような設定に何かに挿入します。バラナでカスタムXACML関数を実装する
<functionFactory name="func" useStandardFunctions="true">
<general>
<function class="singlerequestandpolicybalanatester.GpsFunction"/>
</general>
<!-- <target>
<function class="singlerequestandpolicybalanatester.GpsFunction"/>
</target>
<condition>
<function class="singlerequestandpolicybalanatester.GpsFunction"/>
</condition>
-->
</functionFactory>
とoffcourseそれもありません
public class GpsFunction extends FunctionBase {
public static final String NAME_GPS = "coolfunctiongps";
public static Set getSupportedIdentifiers() {
Set set = new HashSet();
set.add(NAME_GPS);
return set;
}
public GpsFunction() {
super(NAME_GPS, 0, StringAttribute.identifier, false, 3, 3, BooleanAttribute.identifier, false);
System.out.println(NAME_GPS);
}
@Override
public EvaluationResult evaluate(List inputs, EvaluationCtx context) {
blablabla
実際オーバーライドgetsupportedidentifiersそのクラスを実装しかし、何でも。
バラナが始まると、あなたのクラスが初期化されていることがわかります。それはコンストラクタです。
Set sup = balana.getFunctionGeneralFactory().getSupportedFunctions();
Iterator<String> it = sup.iterator();
System.out.println("General:");
while (it.hasNext()) {
String thisfunc = (String) it.next();
System.out.println(thisfunc);
}
を、あなたの関数がロードされ、行く準備ができてSEE:それは初期化されていてもbalana後に続いて、あなたが行うことができます。ニース。いいえ、失敗します。多くのデバッグメッセージを使用して独自のカスタムbalanaコアビルドを使用してデバッグした後、1つのポリシーでRuntimeを解決したらApply要素を確認し、Apply.getInstance(呼び出され、ファクトリで関数名とともに渡されるファクトリ
再びFunctionFactoryProxy ff = StandardFunctionFactory.getNewFactoryProxy();
// ff.getGeneralFactory().addFunction(new GpsFunction());
balana.setFunctionGeneralFactory(ff.getGeneralFactory());
balana.setFunctionConditionFactory(ff.getConditionFactory());
balana.setFunctionTargetFactory(ff.getTargetFactory());
balana.getFunctionGeneralFactory().addFunction(new GpsFunction());
PDP pdp = new PDP(balana.getPdpConfig());
私はこのプロキシの内側に私の関数を参照してくださいすることができます。あなたの関数は次のように私も、手によって機能の工場をインストールするためにしようと試みますが、それは「不明FunctionId」との例外ランタイムのgetすべてがそう、そこではありませんしかし、実行時に、一日の終わりで、エンジンが
<Rule Effect="Deny" RuleId="itsatrap">
<Target/>
<Condition>
<Apply FunctionId="coolfunctiongps">
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-one-and-only">
<AttributeDesignator AttributeId="attributoid" Category="attributocategory" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true" />
</Apply>
</Apply>
</Condition>
</Rule>
にそれがtrown、Unknow Functioだ例外を解決するときnId。だから明らかに私は何かが恋しいです。私は内部でカスタム関数のWORKINGの例を達成し、要素を適用できるかどうかを尋ねています。みんなありがとう。