Merge "Fix checkstyle warnings in context-test-utils"
[policy/apex-pdp.git] / context / context-test-utils / src / main / java / org / onap / policy / apex / context / test / distribution / ContextInstantiation.java
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.context.test.distribution;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertNotNull;
26 import static org.junit.Assert.assertTrue;
27 import static org.junit.Assert.fail;
28 import static org.onap.policy.apex.context.test.factory.TestContextAlbumFactory.createPolicyContextModel;
29 import static org.onap.policy.apex.context.test.utils.Constants.BYTE_VAL;
30 import static org.onap.policy.apex.context.test.utils.Constants.EXCEPTION_MESSAGE;
31 import static org.onap.policy.apex.context.test.utils.Constants.EXTERNAL_CONTEXT;
32 import static org.onap.policy.apex.context.test.utils.Constants.EXTERNAL_CONTEXT_ALBUM;
33 import static org.onap.policy.apex.context.test.utils.Constants.FLOAT_VAL;
34 import static org.onap.policy.apex.context.test.utils.Constants.GLOBAL_CONTEXT_ALBUM;
35 import static org.onap.policy.apex.context.test.utils.Constants.GLOBAL_CONTEXT_KEY;
36 import static org.onap.policy.apex.context.test.utils.Constants.INT_VAL;
37 import static org.onap.policy.apex.context.test.utils.Constants.INT_VAL_2;
38 import static org.onap.policy.apex.context.test.utils.Constants.INT_VAL_3;
39 import static org.onap.policy.apex.context.test.utils.Constants.LONG_VAL;
40 import static org.onap.policy.apex.context.test.utils.Constants.PI_VAL;
41 import static org.onap.policy.apex.context.test.utils.Constants.POLICY_CONTEXT_ALBUM;
42 import static org.onap.policy.apex.context.test.utils.Constants.STRING_EXT_VAL;
43 import static org.onap.policy.apex.context.test.utils.Constants.STRING_GLOBAL_VAL;
44 import static org.onap.policy.apex.context.test.utils.Constants.STRING_VAL;
45 import static org.onap.policy.apex.context.test.utils.Constants.TEST_POLICY_CONTEXT_ITEM;
46 import static org.onap.policy.apex.context.test.utils.Constants.TIME_ZONE;
47 import static org.onap.policy.apex.context.test.utils.Constants.VERSION;
48
49 import java.util.Collection;
50 import java.util.Date;
51 import java.util.HashMap;
52 import java.util.LinkedHashMap;
53 import java.util.Locale;
54 import java.util.Map;
55 import java.util.Map.Entry;
56 import java.util.Set;
57 import java.util.TreeSet;
58
59 import org.onap.policy.apex.context.ContextAlbum;
60 import org.onap.policy.apex.context.ContextException;
61 import org.onap.policy.apex.context.ContextRuntimeException;
62 import org.onap.policy.apex.context.Distributor;
63 import org.onap.policy.apex.context.impl.distribution.DistributorFactory;
64 import org.onap.policy.apex.context.test.concepts.TestContextBooleanItem;
65 import org.onap.policy.apex.context.test.concepts.TestContextByteItem;
66 import org.onap.policy.apex.context.test.concepts.TestContextDateItem;
67 import org.onap.policy.apex.context.test.concepts.TestContextDateLocaleItem;
68 import org.onap.policy.apex.context.test.concepts.TestContextDateTzItem;
69 import org.onap.policy.apex.context.test.concepts.TestContextDoubleItem;
70 import org.onap.policy.apex.context.test.concepts.TestContextFloatItem;
71 import org.onap.policy.apex.context.test.concepts.TestContextIntItem;
72 import org.onap.policy.apex.context.test.concepts.TestContextLongItem;
73 import org.onap.policy.apex.context.test.concepts.TestContextLongObjectItem;
74 import org.onap.policy.apex.context.test.concepts.TestContextStringItem;
75 import org.onap.policy.apex.context.test.concepts.TestContextTreeMapItem;
76 import org.onap.policy.apex.context.test.concepts.TestContextTreeSetItem;
77 import org.onap.policy.apex.context.test.concepts.TestExternalContextItem;
78 import org.onap.policy.apex.context.test.concepts.TestGlobalContextItem;
79 import org.onap.policy.apex.context.test.concepts.TestPolicyContextItem;
80 import org.onap.policy.apex.context.test.factory.TestContextAlbumFactory;
81 import org.onap.policy.apex.context.test.utils.Constants;
82 import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
83 import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult;
84 import org.onap.policy.apex.model.contextmodel.concepts.AxContextModel;
85 import org.slf4j.ext.XLogger;
86 import org.slf4j.ext.XLoggerFactory;
87
88 /**
89  * The Class TestContextInstantiation is used to test Apex context insitiation is correct.
90  *
91  * @author Sergey Sachkov (sergey.sachkov@ericsson.com)
92  */
93 public class ContextInstantiation {
94
95     // Logger for this class
96     private static final XLogger LOGGER = XLoggerFactory.getXLogger(ContextInstantiation.class);
97
98     private final static TreeSet<String> TEST_TREE_SET = new TreeSet<>();
99     private final static Map<String, String> TEST_HASH_MAP = new HashMap<>();
100
101     static {
102         TEST_TREE_SET.add("one hundred");
103         TEST_TREE_SET.add("one hundred and one");
104         TEST_TREE_SET.add("one hundred and two");
105         TEST_TREE_SET.add("one hundred and three");
106         TEST_TREE_SET.add("one hundred and four");
107
108         TEST_HASH_MAP.put("0", "zero");
109         TEST_HASH_MAP.put("1", "one");
110         TEST_HASH_MAP.put("2", "two");
111         TEST_HASH_MAP.put("3", "three");
112         TEST_HASH_MAP.put("4", "four");
113
114     }
115
116     /**
117      * Test context instantiation.
118      *
119      * @throws ContextException the context exception
120      */
121     public void testContextInstantiation() throws ContextException {
122         LOGGER.debug("Running TestContextInstantiation test . . .");
123
124         final Distributor contextDistributor = getDistributor();
125
126         try {
127
128             final ContextAlbum policyContextAlbum =
129                     contextDistributor.createContextAlbum(new AxArtifactKey(POLICY_CONTEXT_ALBUM, VERSION));
130
131             assertNotNull(policyContextAlbum);
132             policyContextAlbum.setUserArtifactStack(Constants.getAxArtifactKeyArray());
133
134             final Date testDate = new Date();
135
136             final TestContextDateTzItem tci9 = getTestContextDateTzItem(testDate);
137             final TestContextDateLocaleItem tciA = getTestContextDateLocaleItem(testDate);
138
139             final TestPolicyContextItem policyContext = getTestPolicyContextItem(policyContextAlbum, testDate);
140
141             final Map<String, Object> valueMap0 = new HashMap<>();
142             valueMap0.put(TEST_POLICY_CONTEXT_ITEM, policyContext);
143
144             policyContextAlbum.putAll(valueMap0);
145
146             final TestPolicyContextItem contextItem =
147                     (TestPolicyContextItem) policyContextAlbum.get(TEST_POLICY_CONTEXT_ITEM);
148             assertEquals(STRING_VAL, contextItem.getTestPolicyContextItem000().getStringValue());
149
150             assertEquals(LONG_VAL, contextItem.getTestPolicyContextItem001().getLongValue());
151             assertDouble(contextItem.getTestPolicyContextItem002().getDoubleValue(), PI_VAL);
152             assertTrue(contextItem.getTestPolicyContextItem003().getFlag());
153             assertEquals(contextItem.getTestPolicyContextItem004().getLongValue(), testDate.getTime());
154             assertEquals(contextItem.getTestPolicyContextItem005().getMapValue(), TEST_HASH_MAP);
155
156             final TestGlobalContextItem globalContext =
157                     getTestGlobalContextItem(contextDistributor, testDate, tci9, tciA);
158
159             final Map<String, Object> valueMap1 = new HashMap<>();
160             valueMap1.put(GLOBAL_CONTEXT_KEY, globalContext);
161
162             final ContextAlbum globalContextAlbum = getContextAlbum(contextDistributor);
163
164             globalContextAlbum.putAll(valueMap1);
165
166             final TestGlobalContextItem globalContextItem =
167                     (TestGlobalContextItem) globalContextAlbum.get(GLOBAL_CONTEXT_KEY);
168
169             assertFalse(globalContextItem.getTestGlobalContextItem000().getFlag());
170
171             assertEquals(BYTE_VAL, globalContextItem.getTestGlobalContextItem001().getByteValue());
172
173             assertEquals(INT_VAL, globalContextItem.getTestGlobalContextItem002().getIntValue());
174             assertEquals(LONG_VAL, globalContextItem.getTestGlobalContextItem003().getLongValue());
175             assertFloat(FLOAT_VAL, globalContextItem.getTestGlobalContextItem004().getFloatValue());
176
177             assertDouble(PI_VAL, globalContextItem.getTestGlobalContextItem005().getDoubleValue());
178             assertEquals(STRING_GLOBAL_VAL, globalContextItem.getTestGlobalContextItem006().getStringValue());
179
180             assertEquals(new Long(testDate.getTime()), globalContextItem.getTestGlobalContextItem007().getLongValue());
181             assertEquals(testDate, globalContextItem.getTestGlobalContextItem008().getDateValue());
182             assertEquals(tci9.getDateValue().getTime(),
183                     globalContextItem.getTestGlobalContextItem009().getDateValue().getTime());
184
185             assertEquals(tciA.getDateValue().getTime(),
186                     globalContextItem.getTestGlobalContextItem00A().getDateValue().getTime());
187
188             assertEquals(TEST_TREE_SET, globalContextItem.getTestGlobalContextItem00B().getSetValue());
189             assertEquals(TEST_HASH_MAP, globalContextItem.getTestGlobalContextItem00C().getMapValue());
190
191             final AxContextModel externalContextModel = TestContextAlbumFactory.createExternalContextModel();
192
193             final TestContextDateTzItem tci9A = new TestContextDateTzItem(tci9);
194             final TestContextDateLocaleItem tciAA = new TestContextDateLocaleItem(tciA);
195             final TestExternalContextItem externalContext = getTestExternalContextItem(testDate, tci9A, tciAA);
196
197             final Map<String, Object> valueMap2 = new HashMap<>();
198             valueMap2.put(EXTERNAL_CONTEXT, externalContext);
199
200             contextDistributor.clear();
201             contextDistributor.init(new AxArtifactKey("ClearedandInittedDistributor", VERSION));
202             contextDistributor.registerModel(externalContextModel);
203
204             final AxArtifactKey axContextAlbumKey = new AxArtifactKey(EXTERNAL_CONTEXT_ALBUM, VERSION);
205             final ContextAlbum externalContextAlbum = contextDistributor.createContextAlbum(axContextAlbumKey);
206             assertNotNull(externalContextAlbum);
207             externalContextAlbum.setUserArtifactStack(Constants.getAxArtifactKeyArray());
208
209             externalContextAlbum.putAll(valueMap2);
210             externalContextAlbum.getAlbumDefinition().setWritable(false);
211
212             TestExternalContextItem externalContextItem =
213                     (TestExternalContextItem) externalContextAlbum.get(EXTERNAL_CONTEXT);
214
215             assertFalse(externalContextItem.getTestExternalContextItem000().getFlag());
216             assertEquals(BYTE_VAL, externalContextItem.getTestExternalContextItem001().getByteValue());
217             assertEquals(INT_VAL, externalContextItem.getTestExternalContextItem002().getIntValue());
218
219             assertFloat(LONG_VAL, externalContextItem.getTestExternalContextItem003().getLongValue());
220             assertFloat(FLOAT_VAL, externalContextItem.getTestExternalContextItem004().getFloatValue());
221
222             assertDouble(PI_VAL, externalContextItem.getTestExternalContextItem005().getDoubleValue());
223             assertEquals(STRING_EXT_VAL, externalContextItem.getTestExternalContextItem006().getStringValue());
224             assertEquals(new Long(testDate.getTime()),
225                     externalContextItem.getTestExternalContextItem007().getLongValue());
226             assertEquals(testDate, externalContextItem.getTestExternalContextItem008().getDateValue());
227             assertEquals(tci9A.getDateValue().getTime(),
228                     externalContextItem.getTestExternalContextItem009().getDateValue().getTime());
229
230             assertEquals(tciAA.getDateValue().getTime(),
231                     externalContextItem.getTestExternalContextItem00A().getDateValue().getTime());
232             assertEquals(TEST_TREE_SET, externalContextItem.getTestExternalContextItem00B().getSetValue());
233             assertEquals(TEST_HASH_MAP, externalContextItem.getTestExternalContextItem00C().getMapValue());
234
235             final Collection<Object> mapValues = externalContextAlbum.values();
236             assertTrue(externalContextAlbum.values().containsAll(mapValues));
237
238             // Check that clearing does not work
239             try {
240                 externalContextAlbum.clear();
241                 fail(EXCEPTION_MESSAGE);
242             } catch (final ContextRuntimeException e) {
243                 assertEquals("album \"ExternalContextAlbum:0.0.1\" clear() not allowed on read only albums",
244                         e.getMessage());
245             }
246
247             assertEquals(1, externalContextAlbum.size());
248
249             assertContextAlbumContains(externalContext, externalContextAlbum);
250
251             final Set<Entry<String, Object>> entrySet = externalContextAlbum.entrySet();
252             assertEquals(1, entrySet.size());
253
254             try {
255                 externalContextAlbum.get(null);
256             } catch (final ContextRuntimeException e) {
257                 assertEquals("album \"ExternalContextAlbum:0.0.1\" null keys are illegal on keys for get()",
258                         e.getMessage());
259
260             }
261
262             final Object aObject = externalContextAlbum.get(EXTERNAL_CONTEXT);
263             assertEquals(aObject, externalContext);
264
265             // put null keys should fail, throws a runtime exception
266             try {
267                 externalContextAlbum.put(null, null);
268             } catch (final ContextRuntimeException e) {
269                 assertEquals("album \"ExternalContextAlbum:0.0.1\" null keys are illegal on keys for put()",
270                         e.getMessage());
271             }
272
273             try {
274                 externalContextAlbum.put("TestExternalContextItem00A", null);
275             } catch (final ContextRuntimeException e) {
276                 assertEquals("album \"ExternalContextAlbum:0.0.1\" null values are illegal on key "
277                         + "\"TestExternalContextItem00A\" for put()", e.getMessage());
278             }
279             assertEquals(tciAA, externalContextItem.getTestExternalContextItem00A());
280
281             // Should return the hash set
282             assertEquals(TEST_TREE_SET, externalContextItem.getTestExternalContextItem00B().getSetValue());
283
284             assertTrue(externalContextAlbum.values().containsAll(mapValues));
285
286             // Set the write flag back as it should be
287             externalContextAlbum.getAlbumDefinition().setWritable(true);
288
289             // Put should return the previous contextItem
290             final TestExternalContextItem externalContextOther = new TestExternalContextItem();
291             externalContextOther.setTestExternalContextItem002(new TestContextIntItem());
292             externalContextOther.getTestExternalContextItem002().setIntValue(INT_VAL_2);
293
294             assertTrue(externalContextAlbum.put(EXTERNAL_CONTEXT, externalContextOther).equals(externalContext));
295             externalContextItem = (TestExternalContextItem) externalContextAlbum.get(EXTERNAL_CONTEXT);
296             assertEquals(INT_VAL_2, externalContextItem.getTestExternalContextItem002().getIntValue());
297             assertTrue(externalContextAlbum.put(EXTERNAL_CONTEXT, externalContext).equals(externalContextOther));
298             externalContextItem = (TestExternalContextItem) externalContextAlbum.get(EXTERNAL_CONTEXT);
299             assertEquals(INT_VAL_3, externalContextItem.getTestExternalContextItem002().getIntValue());
300
301             try {
302                 externalContextAlbum.put("TestExternalContextItem00A", null);
303             } catch (final ContextRuntimeException e) {
304                 assert (e.getMessage().equals("album \"ExternalContextAlbum:0.0.1\" null values are illegal on key "
305                         + "\"TestExternalContextItem00A\" for put()"));
306             }
307             assertTrue(externalContextAlbum.get(EXTERNAL_CONTEXT).equals(externalContext));
308
309             try {
310                 externalContextAlbum.put("TestExternalContextItemFFF", null);
311             } catch (final ContextRuntimeException e) {
312                 assert (e.getMessage().equals("album \"ExternalContextAlbum:0.0.1\" null values are illegal on key "
313                         + "\"TestExternalContextItemFFF\" for put()"));
314             }
315             assertEquals(1, externalContextAlbum.size());
316
317             try {
318                 externalContextAlbum.put("TestExternalContextItemFFF", null);
319             } catch (final ContextRuntimeException e) {
320                 assertEquals("album \"ExternalContextAlbum:0.0.1\" null values are illegal on key "
321                         + "\"TestExternalContextItemFFF\" for put()", e.getMessage());
322             }
323             assertEquals(1, externalContextAlbum.size());
324
325             // Should ignore remove
326             externalContextAlbum.remove("TestExternalContextItem017");
327             assertEquals(1, externalContextAlbum.size());
328             assertEquals(1, externalContextAlbum.values().size());
329             assertTrue(externalContextAlbum.values().containsAll(mapValues));
330         } catch (final Exception exception) {
331             LOGGER.error("Unexpected Error:", exception);
332             throw exception;
333         } finally {
334             contextDistributor.clear();
335         }
336
337     }
338
339     private void assertContextAlbumContains(final TestExternalContextItem externalContext,
340             final ContextAlbum externalContextAlbum) {
341         try {
342             externalContextAlbum.containsKey(null);
343         } catch (final ContextRuntimeException e) {
344             assertEquals("null values are illegal on method parameter \"key\"", e.getMessage());
345         }
346
347         assertTrue(externalContextAlbum.containsKey(EXTERNAL_CONTEXT));
348         assertTrue(!externalContextAlbum.containsKey(GLOBAL_CONTEXT_KEY));
349
350         try {
351             externalContextAlbum.containsValue(null);
352         } catch (final ContextRuntimeException e) {
353             assertEquals("null values are illegal on method parameter \"value\"", e.getMessage());
354         }
355
356         assertTrue(externalContextAlbum.containsValue(externalContext));
357         assertFalse(externalContextAlbum.containsValue("Hello"));
358     }
359
360     private ContextAlbum getContextAlbum(final Distributor contextDistributor) throws ContextException {
361         final ContextAlbum globalContextAlbum =
362                 contextDistributor.createContextAlbum(new AxArtifactKey(GLOBAL_CONTEXT_ALBUM, VERSION));
363         assertNotNull(globalContextAlbum);
364         globalContextAlbum.setUserArtifactStack(Constants.getAxArtifactKeyArray());
365         return globalContextAlbum;
366     }
367
368     private TestGlobalContextItem getTestGlobalContextItem(final Distributor contextDistributor, final Date testDate,
369             final TestContextDateTzItem tci9, final TestContextDateLocaleItem tciA) throws ContextException {
370         final AxContextModel globalContextModel = TestContextAlbumFactory.createGlobalContextModel();
371         final TestGlobalContextItem globalContext = getTestGlobalContextItem(testDate, tci9, tciA);
372         contextDistributor.registerModel(globalContextModel);
373         return globalContext;
374     }
375
376     private TestPolicyContextItem getTestPolicyContextItem(final ContextAlbum policyContextAlbum, final Date testDate) {
377         final TestContextStringItem contextStringItem = new TestContextStringItem(STRING_VAL);
378         final TestContextLongItem contextLongItem = new TestContextLongItem(LONG_VAL);
379         final TestContextDoubleItem contextDoubleItem = new TestContextDoubleItem(PI_VAL);
380         final TestContextBooleanItem contextBooleanItem = new TestContextBooleanItem(true);
381         final TestContextLongItem contextLongItem2 = new TestContextLongItem(testDate.getTime());
382         final TestContextTreeMapItem contextTreeMapItem = new TestContextTreeMapItem(TEST_HASH_MAP);
383
384         final Map<String, Object> valueMapA = new LinkedHashMap<>();
385         valueMapA.put("TestPolicyContextItem001", contextLongItem);
386         valueMapA.put("TestPolicyContextItem002", contextDoubleItem);
387         valueMapA.put("TestPolicyContextItem003", contextBooleanItem);
388         valueMapA.put("TestPolicyContextItem004", contextLongItem2);
389         valueMapA.put("TestPolicyContextItem005", contextTreeMapItem);
390         valueMapA.put("TestPolicyContextItem000", contextStringItem);
391
392         assertPutMethods(policyContextAlbum, contextStringItem, valueMapA);
393
394         final TestPolicyContextItem policyContext = new TestPolicyContextItem();
395
396         LOGGER.debug(policyContextAlbum.toString());
397
398         policyContext.setTestPolicyContextItem000(contextStringItem);
399         policyContext.setTestPolicyContextItem001(contextLongItem);
400         policyContext.setTestPolicyContextItem002(contextDoubleItem);
401         policyContext.setTestPolicyContextItem003(contextBooleanItem);
402         policyContext.setTestPolicyContextItem004(contextLongItem2);
403         policyContext.setTestPolicyContextItem005(contextTreeMapItem);
404         return policyContext;
405     }
406
407     private void assertPutMethods(final ContextAlbum policyContextAlbum, final TestContextStringItem contextStringItem,
408             final Map<String, Object> valueMapA) {
409         try {
410             policyContextAlbum.put("TestPolicyContextItem000", contextStringItem);
411             fail(EXCEPTION_MESSAGE);
412         } catch (final ContextRuntimeException e) {
413             assertEquals(
414                     getMessage("TestPolicyContextItem000", "TestContextItem006",
415                             TestContextStringItem.class.getCanonicalName(), "stringValue=" + STRING_VAL),
416                     e.getMessage());
417         }
418
419         try {
420             policyContextAlbum.putAll(valueMapA);
421             fail(EXCEPTION_MESSAGE);
422         } catch (final ContextRuntimeException e) {
423             assertEquals(getMessage("TestPolicyContextItem001", "TestContextItem003",
424                     TestContextLongItem.class.getCanonicalName(), "longValue=" + INT_VAL_3), e.getMessage());
425         }
426     }
427
428     private AxContextModel getAxContextModel() {
429         final AxContextModel policyContextModel = createPolicyContextModel();
430         final AxValidationResult result = new AxValidationResult();
431         policyContextModel.validate(result);
432         LOGGER.debug(result.toString());
433
434         assertTrue(result.isValid());
435         return policyContextModel;
436     }
437
438     private TestContextDateLocaleItem getTestContextDateLocaleItem(final Date testDate) {
439         final TestContextDateLocaleItem tciA = new TestContextDateLocaleItem();
440         tciA.setDateValue(new TestContextDateItem(testDate));
441         tciA.setTZValue(TIME_ZONE.getDisplayName());
442         tciA.setDST(true);
443         tciA.setUTCOffset(-600);
444         tciA.setLocale(Locale.ENGLISH);
445         return tciA;
446     }
447
448     private TestContextDateTzItem getTestContextDateTzItem(final Date testDate) {
449         final TestContextDateTzItem tci9 = new TestContextDateTzItem();
450         tci9.setDateValue(new TestContextDateItem(testDate));
451         tci9.setTZValue(TIME_ZONE.getDisplayName());
452         tci9.setDST(true);
453         return tci9;
454     }
455
456     private TestGlobalContextItem getTestGlobalContextItem(final Date testDate, final TestContextDateTzItem tci9,
457             final TestContextDateLocaleItem tciA) {
458         final TestGlobalContextItem globalContext = new TestGlobalContextItem();
459
460         final TestContextBooleanItem testGlobalContextItem000 = new TestContextBooleanItem(false);
461         final TestContextByteItem testGlobalContextItem001 = new TestContextByteItem(BYTE_VAL);
462         final TestContextIntItem testGlobalContextItem002 = new TestContextIntItem(INT_VAL);
463         final TestContextLongItem testGlobalContextItem003 = new TestContextLongItem(LONG_VAL);
464         final TestContextFloatItem testGlobalContextItem004 = new TestContextFloatItem(new Float(FLOAT_VAL));
465         final TestContextDoubleItem testGlobalContextItem005 = new TestContextDoubleItem(PI_VAL);
466         final TestContextStringItem testGlobalContextItem006 = new TestContextStringItem(STRING_GLOBAL_VAL);
467         final TestContextLongObjectItem testGlobalContextItem007 = new TestContextLongObjectItem(testDate.getTime());
468
469         final TestContextDateItem testGlobalContextItem008 = new TestContextDateItem(testDate);
470         final TestContextTreeSetItem testGlobalContextItem00B = new TestContextTreeSetItem(TEST_TREE_SET);
471         final TestContextTreeMapItem testGlobalContextItem00C = new TestContextTreeMapItem(TEST_HASH_MAP);
472
473
474         globalContext.setTestGlobalContextItem000(testGlobalContextItem000);
475         globalContext.setTestGlobalContextItem001(testGlobalContextItem001);
476         globalContext.setTestGlobalContextItem002(testGlobalContextItem002);
477         globalContext.setTestGlobalContextItem003(testGlobalContextItem003);
478         globalContext.setTestGlobalContextItem004(testGlobalContextItem004);
479         globalContext.setTestGlobalContextItem005(testGlobalContextItem005);
480         globalContext.setTestGlobalContextItem006(testGlobalContextItem006);
481         globalContext.setTestGlobalContextItem007(testGlobalContextItem007);
482         globalContext.setTestGlobalContextItem008(testGlobalContextItem008);
483         globalContext.setTestGlobalContextItem009(tci9);
484         globalContext.setTestGlobalContextItem00A(tciA);
485         globalContext.setTestGlobalContextItem00B(testGlobalContextItem00B);
486         globalContext.setTestGlobalContextItem00C(testGlobalContextItem00C);
487         return globalContext;
488     }
489
490     private TestExternalContextItem getTestExternalContextItem(final Date testDate, final TestContextDateTzItem tci9A,
491             final TestContextDateLocaleItem tciAA) {
492         final TestExternalContextItem externalContext = new TestExternalContextItem();
493
494         final TestContextBooleanItem testExternalContextItem000 = new TestContextBooleanItem(false);
495         final TestContextByteItem testExternalContextItem001 = new TestContextByteItem(BYTE_VAL);
496         final TestContextIntItem testExternalContextItem002 = new TestContextIntItem(INT_VAL);
497         final TestContextLongItem testExternalContextItem003 = new TestContextLongItem(LONG_VAL);
498         final TestContextFloatItem testExternalContextItem004 = new TestContextFloatItem(new Float(3.14159265359));
499         final TestContextDoubleItem testExternalContextItem005 = new TestContextDoubleItem(PI_VAL);
500         final TestContextStringItem testExternalContextItem006 = new TestContextStringItem(STRING_EXT_VAL);
501         final TestContextLongObjectItem testExternalContextItem007 = new TestContextLongObjectItem(testDate.getTime());
502         final TestContextDateItem testExternalContextItem008 = new TestContextDateItem(testDate);
503         final TestContextTreeSetItem testExternalContextItem00B = new TestContextTreeSetItem(TEST_TREE_SET);
504         final TestContextTreeMapItem testExternalContextItem00C = new TestContextTreeMapItem(TEST_HASH_MAP);
505
506
507         externalContext.setTestExternalContextItem000(testExternalContextItem000);
508         externalContext.setTestExternalContextItem001(testExternalContextItem001);
509         externalContext.setTestExternalContextItem002(testExternalContextItem002);
510         externalContext.setTestExternalContextItem003(testExternalContextItem003);
511         externalContext.setTestExternalContextItem004(testExternalContextItem004);
512         externalContext.setTestExternalContextItem005(testExternalContextItem005);
513         externalContext.setTestExternalContextItem006(testExternalContextItem006);
514         externalContext.setTestExternalContextItem007(testExternalContextItem007);
515         externalContext.setTestExternalContextItem008(testExternalContextItem008);
516         externalContext.setTestExternalContextItem009(tci9A);
517         externalContext.setTestExternalContextItem00A(tciAA);
518         externalContext.setTestExternalContextItem00B(testExternalContextItem00B);
519         externalContext.setTestExternalContextItem00C(testExternalContextItem00C);
520         return externalContext;
521     }
522
523     private String getMessage(final String key, final String objName, final String clazzName, final String valString) {
524         return getMessage(key, objName, clazzName, valString, TestPolicyContextItem.class.getCanonicalName());
525     }
526
527     private String getMessage(final String key, final String objName, final String clazzName, final String valString,
528             final String compatibleClazzName) {
529         return "Failed to set context value for key \"" + key + "\" in album \"PolicyContextAlbum:0.0.1\": "
530                 + "PolicyContextAlbum:0.0.1: object \"" + objName + " [" + valString + "]\" " + "of class \""
531                 + clazzName + "\"" + " not compatible with class \"" + compatibleClazzName + "\"";
532     }
533
534     private void assertFloat(final float actual, final float expected) {
535         assertTrue(Float.compare(actual, expected) == 0);
536     }
537
538     private void assertDouble(final double actual, final double expected) {
539         assertTrue(Double.compare(actual, expected) == 0);
540     }
541
542
543     private Distributor getDistributor() throws ContextException {
544         final AxArtifactKey distributorKey = new AxArtifactKey("ApexDistributorInit", VERSION);
545         final Distributor distributor = new DistributorFactory().getDistributor(distributorKey);
546         final AxContextModel policyContextModel = getAxContextModel();
547         distributor.registerModel(policyContextModel);
548         return distributor;
549     }
550 }