cf2bb6524f13e6cafe83085e90f5d292b47a9eb1
[policy/apex-pdp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  * 
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  * 
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  * 
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.apex.model.policymodel.handling;
22
23 import java.util.UUID;
24
25 import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
26 import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInfo;
27 import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInformation;
28 import org.onap.policy.apex.model.basicmodel.concepts.AxReferenceKey;
29 import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult;
30 import org.onap.policy.apex.model.basicmodel.test.TestApexModelCreator;
31 import org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbum;
32 import org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbums;
33 import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchema;
34 import org.onap.policy.apex.model.contextmodel.concepts.AxContextSchemas;
35 import org.onap.policy.apex.model.eventmodel.concepts.AxEvent;
36 import org.onap.policy.apex.model.eventmodel.concepts.AxEvents;
37 import org.onap.policy.apex.model.eventmodel.concepts.AxField;
38 import org.onap.policy.apex.model.eventmodel.concepts.AxInputField;
39 import org.onap.policy.apex.model.eventmodel.concepts.AxOutputField;
40 import org.onap.policy.apex.model.policymodel.concepts.AxPolicies;
41 import org.onap.policy.apex.model.policymodel.concepts.AxPolicy;
42 import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel;
43 import org.onap.policy.apex.model.policymodel.concepts.AxState;
44 import org.onap.policy.apex.model.policymodel.concepts.AxStateFinalizerLogic;
45 import org.onap.policy.apex.model.policymodel.concepts.AxStateOutput;
46 import org.onap.policy.apex.model.policymodel.concepts.AxStateTaskOutputType;
47 import org.onap.policy.apex.model.policymodel.concepts.AxStateTaskReference;
48 import org.onap.policy.apex.model.policymodel.concepts.AxTask;
49 import org.onap.policy.apex.model.policymodel.concepts.AxTaskLogic;
50 import org.onap.policy.apex.model.policymodel.concepts.AxTaskParameter;
51 import org.onap.policy.apex.model.policymodel.concepts.AxTaskSelectionLogic;
52 import org.onap.policy.apex.model.policymodel.concepts.AxTasks;
53
54 /**
55  * @author Liam Fallon (liam.fallon@ericsson.com)
56  */
57 public class TestApexPolicyModelCreator implements TestApexModelCreator<AxPolicyModel> {
58
59     @Override
60     public AxPolicyModel getModel() {
61         final AxContextSchema schema0 =
62                 new AxContextSchema(new AxArtifactKey("eventContextItem0", "0.0.1"), "Java", "java.lang.String");
63         final AxContextSchema schema1 =
64                 new AxContextSchema(new AxArtifactKey("eventContextItem1", "0.0.1"), "Java", "java.lang.Long");
65         final AxContextSchema schema2 = new AxContextSchema(new AxArtifactKey("StringType", "0.0.1"), "Java",
66                 "org.onap.policy.apex.model.policymodel.concepts.TestContextItem000");
67         final AxContextSchema schema3 = new AxContextSchema(new AxArtifactKey("MapType", "0.0.1"), "Java",
68                 "org.onap.policy.apex.model.policymodel.concepts.TestContextItem00A");
69
70         final AxContextSchemas schemas = new AxContextSchemas(new AxArtifactKey("ContextSchemas", "0.0.1"));
71         schemas.getSchemasMap().put(schema0.getKey(), schema0);
72         schemas.getSchemasMap().put(schema1.getKey(), schema1);
73         schemas.getSchemasMap().put(schema2.getKey(), schema2);
74         schemas.getSchemasMap().put(schema3.getKey(), schema3);
75
76         final AxContextAlbum album0 =
77                 new AxContextAlbum(new AxArtifactKey("contextAlbum0", "0.0.1"), "APPLICATION", true, schema3.getKey());
78         final AxContextAlbum album1 =
79                 new AxContextAlbum(new AxArtifactKey("contextAlbum1", "0.0.1"), "GLOBAL", false, schema2.getKey());
80
81         final AxContextAlbums albums = new AxContextAlbums(new AxArtifactKey("context", "0.0.1"));
82         albums.getAlbumsMap().put(album0.getKey(), album0);
83         albums.getAlbumsMap().put(album1.getKey(), album1);
84
85         final AxEvent inEvent = new AxEvent(new AxArtifactKey("inEvent", "0.0.1"),
86                 "org.onap.policy.apex.model.policymodel.events", "Source", "Target");
87         inEvent.getParameterMap().put("IEPAR0",
88                 new AxField(new AxReferenceKey(inEvent.getKey(), "IEPAR0"), schema0.getKey()));
89         inEvent.getParameterMap().put("IEPAR1",
90                 new AxField(new AxReferenceKey(inEvent.getKey(), "IEPAR1"), schema1.getKey()));
91
92         final AxEvent outEvent0 = new AxEvent(new AxArtifactKey("outEvent0", "0.0.1"),
93                 "org.onap.policy.apex.model.policymodel.events", "Source", "Target");
94         outEvent0.getParameterMap().put("OE0PAR0",
95                 new AxField(new AxReferenceKey(outEvent0.getKey(), "OE0PAR0"), schema0.getKey()));
96         outEvent0.getParameterMap().put("OE0PAR1",
97                 new AxField(new AxReferenceKey(outEvent0.getKey(), "OE0PAR1"), schema1.getKey()));
98         outEvent0.getParameterMap().put("OE1PAR0",
99                 new AxField(new AxReferenceKey(outEvent0.getKey(), "OE1PAR0"), schema0.getKey()));
100         outEvent0.getParameterMap().put("OE1PAR1",
101                 new AxField(new AxReferenceKey(outEvent0.getKey(), "OE1PAR1"), schema1.getKey()));
102
103         final AxEvent outEvent1 = new AxEvent(new AxArtifactKey("outEvent1", "0.0.1"),
104                 "org.onap.policy.apex.model.policymodel.events", "Source", "Target");
105         outEvent1.getParameterMap().put("OE1PAR0",
106                 new AxField(new AxReferenceKey(outEvent1.getKey(), "OE1PAR0"), schema0.getKey()));
107         outEvent1.getParameterMap().put("OE1PAR1",
108                 new AxField(new AxReferenceKey(outEvent1.getKey(), "OE1PAR1"), schema1.getKey()));
109
110         final AxEvents events = new AxEvents(new AxArtifactKey("events", "0.0.1"));
111         events.getEventMap().put(inEvent.getKey(), inEvent);
112         events.getEventMap().put(outEvent0.getKey(), outEvent0);
113         events.getEventMap().put(outEvent1.getKey(), outEvent1);
114
115         final AxTask task = new AxTask(new AxArtifactKey("task", "0.0.1"));
116
117         for (final AxField field : inEvent.getFields()) {
118             final AxReferenceKey fieldkey = new AxReferenceKey(task.getKey().getName(), task.getKey().getVersion(),
119                     "inputFields", field.getKey().getLocalName());
120             final AxInputField inputField = new AxInputField(fieldkey, field.getSchema());
121             task.getInputFields().put(inputField.getKey().getLocalName(), inputField);
122         }
123
124         for (final AxField field : outEvent0.getFields()) {
125             final AxReferenceKey fieldkey = new AxReferenceKey(task.getKey().getName(), task.getKey().getVersion(),
126                     "outputFields", field.getKey().getLocalName());
127             final AxOutputField outputField = new AxOutputField(fieldkey, field.getSchema());
128             task.getOutputFields().put(outputField.getKey().getLocalName(), outputField);
129         }
130
131         for (final AxField field : outEvent1.getFields()) {
132             final AxReferenceKey fieldkey = new AxReferenceKey(task.getKey().getName(), task.getKey().getVersion(),
133                     "outputFields", field.getKey().getLocalName());
134             final AxOutputField outputField = new AxOutputField(fieldkey, field.getSchema());
135             task.getOutputFields().put(outputField.getKey().getLocalName(), outputField);
136         }
137
138         final AxTaskParameter taskPar0 =
139                 new AxTaskParameter(new AxReferenceKey(task.getKey(), "taskParameter0"), "Task parameter 0 value");
140         final AxTaskParameter taskPar1 =
141                 new AxTaskParameter(new AxReferenceKey(task.getKey(), "taskParameter1"), "Task parameter 1 value");
142
143         task.getTaskParameters().put(taskPar0.getKey().getLocalName(), taskPar0);
144         task.getTaskParameters().put(taskPar1.getKey().getLocalName(), taskPar1);
145         task.getContextAlbumReferences().add(album0.getKey());
146         task.getContextAlbumReferences().add(album1.getKey());
147
148         final AxTaskLogic taskLogic =
149                 new AxTaskLogic(new AxReferenceKey(task.getKey(), "taskLogic"), "MVEL", "Some task logic");
150         task.setTaskLogic(taskLogic);
151
152         final AxTasks tasks = new AxTasks(new AxArtifactKey("tasks", "0.0.1"));
153         tasks.getTaskMap().put(task.getKey(), task);
154
155         final AxPolicy policy = new AxPolicy(new AxArtifactKey("policy", "0.0.1"));
156         policy.setTemplate("FREEFORM");
157
158         final AxState state = new AxState(new AxReferenceKey(policy.getKey(), "state"));
159         final AxTaskSelectionLogic taskSelectionLogic = new AxTaskSelectionLogic(
160                 new AxReferenceKey(state.getKey(), "taskSelectionLogic"), "MVEL", "Some TS logic ");
161
162         state.setTrigger(inEvent.getKey());
163         state.getContextAlbumReferences().add(album0.getKey());
164         state.getContextAlbumReferences().add(album1.getKey());
165         state.setTaskSelectionLogic(taskSelectionLogic);
166         state.setDefaultTask(task.getKey());
167
168         final AxStateOutput stateOutput0 = new AxStateOutput(new AxReferenceKey(state.getKey(), "stateOutput0"),
169                 outEvent0.getKey(), AxReferenceKey.getNullKey());
170         state.getStateOutputs().put(stateOutput0.getKey().getLocalName(), stateOutput0);
171
172         final AxStateTaskReference stateTaskReference =
173                 new AxStateTaskReference(new AxReferenceKey(state.getKey(), task.getKey().getName()),
174                         AxStateTaskOutputType.DIRECT, stateOutput0.getKey());
175
176         state.getTaskReferences().put(task.getKey(), stateTaskReference);
177
178         policy.getStateMap().put(state.getKey().getLocalName(), state);
179         policy.setFirstState(state.getKey().getLocalName());
180
181         final AxPolicies policies = new AxPolicies(new AxArtifactKey("policies", "0.0.1"));
182         policies.getPolicyMap().put(policy.getKey(), policy);
183
184         final AxKeyInformation keyInformation = new AxKeyInformation(new AxArtifactKey("KeyInfoMapKey", "0.0.1"));
185         final AxPolicyModel policyModel = new AxPolicyModel(new AxArtifactKey("PolicyModel", "0.0.1"));
186         policyModel.setKeyInformation(keyInformation);
187         policyModel.setSchemas(schemas);
188         policyModel.setAlbums(albums);
189         policyModel.setEvents(events);
190         policyModel.setTasks(tasks);
191         policyModel.setPolicies(policies);
192         policyModel.getKeyInformation().generateKeyInfo(policyModel);
193
194         int uuidIncrementer = 0;
195         for (final AxKeyInfo keyInfo : policyModel.getKeyInformation().getKeyInfoMap().values()) {
196             final String uuidString = String.format("ce9168c-e6df-414f-9646-6da464b6e%03d", uuidIncrementer++);
197             keyInfo.setUuid(UUID.fromString(uuidString));
198         }
199
200         final AxValidationResult result = new AxValidationResult();
201         policyModel.validate(result);
202
203         return policyModel;
204     }
205
206     public AxPolicyModel getAnotherModel() {
207         final AxContextSchema schema0 =
208                 new AxContextSchema(new AxArtifactKey("eventContextItemA0", "0.0.1"), "Java", "java.lang.String");
209         final AxContextSchema schema1 =
210                 new AxContextSchema(new AxArtifactKey("eventContextItemA1", "0.0.1"), "Java", "java.lang.Long");
211         final AxContextSchema schema2 = new AxContextSchema(new AxArtifactKey("StringTypeA", "0.0.1"), "Java",
212                 "org.onap.policy.apex.model.policymodel.concepts.TestContextItem000");
213         final AxContextSchema schema3 = new AxContextSchema(new AxArtifactKey("MapTypeA", "0.0.1"), "Java",
214                 "org.onap.policy.apex.model.policymodel.concepts.TestContextItem00A");
215
216         final AxContextSchemas schemas = new AxContextSchemas(new AxArtifactKey("ContextSchemasA", "0.0.1"));
217         schemas.getSchemasMap().put(schema0.getKey(), schema0);
218         schemas.getSchemasMap().put(schema1.getKey(), schema1);
219         schemas.getSchemasMap().put(schema2.getKey(), schema2);
220         schemas.getSchemasMap().put(schema3.getKey(), schema3);
221
222         final AxContextAlbum album0 =
223                 new AxContextAlbum(new AxArtifactKey("contextAlbumA0", "0.0.1"), "APPLICATION", true, schema3.getKey());
224         final AxContextAlbum album1 =
225                 new AxContextAlbum(new AxArtifactKey("contextAlbumA1", "0.0.1"), "GLOBAL", false, schema2.getKey());
226
227         final AxContextAlbums albums = new AxContextAlbums(new AxArtifactKey("contextA", "0.0.1"));
228         albums.getAlbumsMap().put(album0.getKey(), album0);
229         albums.getAlbumsMap().put(album1.getKey(), album1);
230
231         final AxEvent inEvent = new AxEvent(new AxArtifactKey("inEventA", "0.0.1"),
232                 "org.onap.policy.apex.model.policymodel.events", "Source", "Target");
233         inEvent.getParameterMap().put("IEPARA0",
234                 new AxField(new AxReferenceKey(inEvent.getKey(), "IEPARA0"), schema0.getKey()));
235         inEvent.getParameterMap().put("IEPARA1",
236                 new AxField(new AxReferenceKey(inEvent.getKey(), "IEPARA1"), schema1.getKey()));
237
238         final AxEvent outEvent0 = new AxEvent(new AxArtifactKey("outEventA0", "0.0.1"),
239                 "org.onap.policy.apex.model.policymodel.events", "Source", "Target");
240         outEvent0.getParameterMap().put("OE0PARA0",
241                 new AxField(new AxReferenceKey(outEvent0.getKey(), "OE0PARA0"), schema0.getKey()));
242         outEvent0.getParameterMap().put("OE0PARA1",
243                 new AxField(new AxReferenceKey(outEvent0.getKey(), "OE0PARA1"), schema1.getKey()));
244         outEvent0.getParameterMap().put("OE1PARA0",
245                 new AxField(new AxReferenceKey(outEvent0.getKey(), "OE1PARA0"), schema0.getKey()));
246         outEvent0.getParameterMap().put("OE1PARA1",
247                 new AxField(new AxReferenceKey(outEvent0.getKey(), "OE1PARA1"), schema1.getKey()));
248
249         final AxEvent outEvent1 = new AxEvent(new AxArtifactKey("outEventA1", "0.0.1"),
250                 "org.onap.policy.apex.model.policymodel.events", "Source", "Target");
251         outEvent1.getParameterMap().put("OE1PARA0",
252                 new AxField(new AxReferenceKey(outEvent1.getKey(), "OE1PARA0"), schema0.getKey()));
253         outEvent1.getParameterMap().put("OE1PARA1",
254                 new AxField(new AxReferenceKey(outEvent1.getKey(), "OE1PARA1"), schema1.getKey()));
255
256         final AxEvents events = new AxEvents(new AxArtifactKey("eventsA", "0.0.1"));
257         events.getEventMap().put(inEvent.getKey(), inEvent);
258         events.getEventMap().put(outEvent0.getKey(), outEvent0);
259         events.getEventMap().put(outEvent1.getKey(), outEvent1);
260
261         final AxTask task = new AxTask(new AxArtifactKey("taskA", "0.0.1"));
262
263         for (final AxField field : inEvent.getFields()) {
264             final AxReferenceKey fieldkey = new AxReferenceKey(task.getKey().getName(), task.getKey().getVersion(),
265                     "inputFieldsA", field.getKey().getLocalName());
266             final AxInputField inputField = new AxInputField(fieldkey, field.getSchema());
267             task.getInputFields().put(inputField.getKey().getLocalName(), inputField);
268         }
269
270         for (final AxField field : outEvent0.getFields()) {
271             final AxReferenceKey fieldkey = new AxReferenceKey(task.getKey().getName(), task.getKey().getVersion(),
272                     "outputFieldsA", field.getKey().getLocalName());
273             final AxOutputField outputField = new AxOutputField(fieldkey, field.getSchema());
274             task.getOutputFields().put(outputField.getKey().getLocalName(), outputField);
275         }
276
277         for (final AxField field : outEvent1.getFields()) {
278             final AxReferenceKey fieldkey = new AxReferenceKey(task.getKey().getName(), task.getKey().getVersion(),
279                     "outputFieldsA", field.getKey().getLocalName());
280             final AxOutputField outputField = new AxOutputField(fieldkey, field.getSchema());
281             task.getOutputFields().put(outputField.getKey().getLocalName(), outputField);
282         }
283
284         final AxTaskParameter taskPar0 =
285                 new AxTaskParameter(new AxReferenceKey(task.getKey(), "taskParameterA0"), "Task parameter 0 value");
286         final AxTaskParameter taskPar1 =
287                 new AxTaskParameter(new AxReferenceKey(task.getKey(), "taskParameterA1"), "Task parameter 1 value");
288
289         task.getTaskParameters().put(taskPar0.getKey().getLocalName(), taskPar0);
290         task.getTaskParameters().put(taskPar1.getKey().getLocalName(), taskPar1);
291         task.getContextAlbumReferences().add(album0.getKey());
292         task.getContextAlbumReferences().add(album1.getKey());
293
294         final AxTaskLogic taskLogic =
295                 new AxTaskLogic(new AxReferenceKey(task.getKey(), "taskLogicA"), "MVEL", "Some task logic");
296         task.setTaskLogic(taskLogic);
297
298         final AxTasks tasks = new AxTasks(new AxArtifactKey("tasksA", "0.0.1"));
299         tasks.getTaskMap().put(task.getKey(), task);
300
301         final AxPolicy policy = new AxPolicy(new AxArtifactKey("policyA", "0.0.1"));
302         policy.setTemplate("FREEFORM");
303
304         final AxState state = new AxState(new AxReferenceKey(policy.getKey(), "stateA"));
305         final AxTaskSelectionLogic taskSelectionLogic = new AxTaskSelectionLogic(
306                 new AxReferenceKey(state.getKey(), "taskSelectionLogicA"), "MVEL", "Some TS logic ");
307
308         state.setTrigger(inEvent.getKey());
309         state.getContextAlbumReferences().add(album0.getKey());
310         state.getContextAlbumReferences().add(album1.getKey());
311         state.setTaskSelectionLogic(taskSelectionLogic);
312         state.setDefaultTask(task.getKey());
313
314         final AxStateOutput stateOutput0 = new AxStateOutput(new AxReferenceKey(state.getKey(), "stateOutputA0"),
315                 outEvent0.getKey(), AxReferenceKey.getNullKey());
316         state.getStateOutputs().put(stateOutput0.getKey().getLocalName(), stateOutput0);
317
318         final AxStateTaskReference stateTaskReference =
319                 new AxStateTaskReference(new AxReferenceKey(state.getKey(), task.getKey().getName()),
320                         AxStateTaskOutputType.DIRECT, stateOutput0.getKey());
321
322         state.getTaskReferences().put(task.getKey(), stateTaskReference);
323
324         policy.getStateMap().put(state.getKey().getLocalName(), state);
325         policy.setFirstState(state.getKey().getLocalName());
326
327         final AxPolicies policies = new AxPolicies(new AxArtifactKey("policiesA", "0.0.1"));
328         policies.getPolicyMap().put(policy.getKey(), policy);
329
330         final AxKeyInformation keyInformation = new AxKeyInformation(new AxArtifactKey("KeyInfoMapKeyA", "0.0.1"));
331         final AxPolicyModel policyModel = new AxPolicyModel(new AxArtifactKey("PolicyModelA", "0.0.1"));
332         policyModel.setKeyInformation(keyInformation);
333         policyModel.setSchemas(schemas);
334         policyModel.setAlbums(albums);
335         policyModel.setEvents(events);
336         policyModel.setTasks(tasks);
337         policyModel.setPolicies(policies);
338         policyModel.getKeyInformation().generateKeyInfo(policyModel);
339
340         int uuidIncrementer = 0;
341         for (final AxKeyInfo keyInfo : policyModel.getKeyInformation().getKeyInfoMap().values()) {
342             final String uuidString = String.format("ce9168c-e6df-414f-9646-6da464b6e%03d", uuidIncrementer++);
343             keyInfo.setUuid(UUID.fromString(uuidString));
344         }
345
346         final AxValidationResult result = new AxValidationResult();
347         policyModel.validate(result);
348
349         return policyModel;
350     }
351
352     @Override
353     public AxPolicyModel getMalstructuredModel() {
354         final AxPolicyModel policyModel = new AxPolicyModel(new AxArtifactKey("policyModel", "0.0.1"));
355         return policyModel;
356     }
357
358     @Override
359     public AxPolicyModel getObservationModel() {
360         final AxPolicyModel policyModel = getModel();
361
362         final AxState state = policyModel.getPolicies().get("policy").getStateMap().get("state");
363         final AxTask task = policyModel.getTasks().get("task");
364
365         final AxStateFinalizerLogic stateFinalizerLogic =
366                 new AxStateFinalizerLogic(new AxReferenceKey(state.getKey(), "SFL"), "MVEL", "Some SF logic ");
367         state.getStateFinalizerLogicMap().put(stateFinalizerLogic.getKey().getLocalName(), stateFinalizerLogic);
368         final AxStateTaskReference stateTaskReference =
369                 new AxStateTaskReference(new AxReferenceKey(state.getKey(), task.getKey().getName()),
370                         AxStateTaskOutputType.LOGIC, stateFinalizerLogic.getKey());
371
372         state.getTaskReferences().put(task.getKey(), stateTaskReference);
373
374         return policyModel;
375     }
376
377     @Override
378     public AxPolicyModel getWarningModel() {
379         final AxPolicyModel policyModel = getModel();
380
381         final AxState anotherState =
382                 new AxState(new AxReferenceKey(new AxArtifactKey("policy", "0.0.1"), "anotherState"));
383
384         final AxEvent inEvent = policyModel.getEvents().getEventMap().get(new AxArtifactKey("inEvent", "0.0.1"));
385         final AxEvent outEvent0 = policyModel.getEvents().getEventMap().get(new AxArtifactKey("outEvent0", "0.0.1"));
386
387         final AxTask anotherTask = new AxTask(new AxArtifactKey("anotherTask", "0.0.1"));
388
389         for (final AxField field : inEvent.getFields()) {
390             final AxReferenceKey fieldkey = new AxReferenceKey(anotherTask.getKey().getName(),
391                     anotherTask.getKey().getVersion(), "inputFields", field.getKey().getLocalName());
392             final AxInputField inputField = new AxInputField(fieldkey, field.getSchema());
393             anotherTask.getInputFields().put(inputField.getKey().getLocalName(), inputField);
394         }
395
396         for (final AxField field : outEvent0.getFields()) {
397             final AxReferenceKey fieldkey = new AxReferenceKey(anotherTask.getKey().getName(),
398                     anotherTask.getKey().getVersion(), "outputFields", field.getKey().getLocalName());
399             final AxOutputField outputField = new AxOutputField(fieldkey, field.getSchema());
400             anotherTask.getOutputFields().put(outputField.getKey().getLocalName(), outputField);
401         }
402
403         final AxTaskParameter taskPar0 = new AxTaskParameter(new AxReferenceKey(anotherTask.getKey(), "taskParameter0"),
404                 "Task parameter 0 value");
405         final AxTaskParameter taskPar1 = new AxTaskParameter(new AxReferenceKey(anotherTask.getKey(), "taskParameter1"),
406                 "Task parameter 1 value");
407
408         anotherTask.getTaskParameters().put(taskPar0.getKey().getLocalName(), taskPar0);
409         anotherTask.getTaskParameters().put(taskPar1.getKey().getLocalName(), taskPar1);
410
411         final AxTaskLogic taskLogic =
412                 new AxTaskLogic(new AxReferenceKey(anotherTask.getKey(), "taskLogic"), "MVEL", "Some task logic");
413         anotherTask.setTaskLogic(taskLogic);
414         policyModel.getTasks().getTaskMap().put(anotherTask.getKey(), anotherTask);
415
416         final AxStateOutput anotherStateOutput0 =
417                 new AxStateOutput(new AxReferenceKey(anotherState.getKey(), "stateOutput0"), outEvent0.getKey(),
418                         AxReferenceKey.getNullKey());
419         anotherState.setTrigger(inEvent.getKey());
420         anotherState.getStateOutputs().put(anotherStateOutput0.getKey().getLocalName(), anotherStateOutput0);
421         anotherState.setDefaultTask(anotherTask.getKey());
422         final AxStateTaskReference anotherStateTaskReference =
423                 new AxStateTaskReference(new AxReferenceKey(anotherState.getKey(), anotherTask.getKey().getName()),
424                         AxStateTaskOutputType.DIRECT, anotherStateOutput0.getKey());
425         anotherState.getTaskReferences().put(anotherTask.getKey(), anotherStateTaskReference);
426
427         policyModel.getPolicies().getPolicyMap().get(new AxArtifactKey("policy", "0.0.1")).getStateMap()
428                 .put(anotherState.getKey().getLocalName(), anotherState);
429
430         policyModel.getKeyInformation().generateKeyInfo(policyModel);
431
432         return policyModel;
433     }
434
435     @Override
436     public AxPolicyModel getInvalidModel() {
437         final AxPolicyModel policyModel = getModel();
438
439         policyModel.getAlbums().get(new AxArtifactKey("contextAlbum0", "0.0.1")).setScope("UNDEFINED");
440         policyModel.getAlbums().get(new AxArtifactKey("contextAlbum1", "0.0.1")).setScope("UNDEFINED");
441
442         final AxEvent outEvent0 = policyModel.getEvents().get("outEvent0");
443         outEvent0.getParameterMap().remove("OE1PAR0");
444         outEvent0.getParameterMap().remove("OE1PAR1");
445
446         return policyModel;
447     }
448 }