Skip to content

Commit 4a173f7

Browse files
Merge pull request #8 from LabVIEW-Open-Source/release/1.0.0.3
Release/1.0.0.3
2 parents 3e9129f + 845aa0c commit 4a173f7

12 files changed

+117
-24
lines changed

Configuration Manager.vipb

+56-13
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
<VI_Package_Builder_Settings Version="0.6" Created_Date="2018-06-04 19:50:03" Modified_Date="2018-06-06 06:48:41" Creator="Francois Normandin" Comments="" ID="06f51ec3df6a4d8372f26833433c7c66">
1+
<VI_Package_Builder_Settings Version="0.6" Created_Date="2018-06-04 19:50:03" Modified_Date="2018-07-08 17:04:31" Creator="Francois Normandin" Comments="" ID="f880995910e9ce73801a331ea1a61fbf">
22
<Library_General_Settings>
33
<Package_File_Name>LabVIEW_Open_Source_lib_Configuration_Manager</Package_File_Name>
4-
<Library_Version>1.0.0.3</Library_Version>
4+
<Library_Version>1.0.0.4</Library_Version>
55
<Auto_Increment_Version>false</Auto_Increment_Version>
66
<Library_Source_Folder>source</Library_Source_Folder>
77
<Library_Output_Folder>_built-packages</Library_Output_Folder>
@@ -16,7 +16,10 @@
1616
<Target>LabVIEW</Target>
1717
</Library_General_Settings>
1818
<Advanced_Settings>
19-
<Package_Dependencies/>
19+
<Package_Dependencies>
20+
<External_Dependencies>labview_open_source_lib_data_manipulation &gt;= 1.0.0.1</External_Dependencies>
21+
<Direct_Dependencies>labview_open_source_lib_data_manipulation-1.0.0.1</Direct_Dependencies>
22+
</Package_Dependencies>
2023
<Custom_Action_VIs>
2124
<Pre-Build_VI/>
2225
<Post-Build_VI/>
@@ -31,11 +34,23 @@
3134
<Description>Configuration Manager is an interface for managing configuration data.
3235
User are expected to extend the core to provide concrete implementation for disk of database persistency.
3336

34-
This package contains a generic API for configuration data access. It includes a Collection class for multiple configurations and it includes a Cache class which provides in-memory configuration management.</Description>
37+
This package contains a generic API for configuration data access. It includes a Collection class for multiple configurations and it includes a Cache class which provides in-memory configuration management.
38+
39+
*********
40+
The ConfigurationManager project is aimed at providing the backbone for framework-agnostic configuration management. Developers can override data source, provide their own serialization/deserialization algorithms, encoding or encryption. It is meant to be used as an injectable configuration management tool where the developer chooses at runtime what is the configuration supported, thus allowing unit testing with dependency-injected configuration states, while accessing configuration from remote locations or local file in a production context.
41+
42+
This library proposes an abstract ConfigManager class and supplements it with a Cache ConfigManager (provides in-memory support) and a Collection ConfigManager (which aggregates an array of ConfigManagers). The CacheManager is a singleton in any given application instance (context). When merging managers into a Collection (or merging collections into a single one), the Cache managers are kept as a singleton. The Cache manager cannot be distributed over a network or shared in multiple application instances on the same machine. A distributed cache manager would be a specific type of manager that the developer can instantiate (it would act as a normal Config Manager).
43+
44+
Examples of Configuration Managers could be CfgManager.INI, CfgManager.mySQL, CfgManager.XML, etc.
45+
46+
During "Read" operations, the Collection of ConfigManagers is scanned until all elements have been found. If all elements are found in the first manager, it will not continue searching the other managers. Cache manager is always the last, unless the node specifies that it should be used preferably. On a successful read, the Cache manager is updated (Write) with the latest value.
47+
48+
During "Write" operations, the elements will be written in the first manager of the Collection, and Cache will be updated.</Description>
3549
<Copyright/>
3650
<Packager/>
3751
<URL/>
38-
<Release_Notes>Initial release - Configuration Manager with Collection and Cache support</Release_Notes>
52+
<Release_Notes>Adding Variant Read and Write support (flattens/unflattens variants to/from Key Value Pairs)
53+
This package now depends on LVOS DataManipulation package.</Release_Notes>
3954
</Description>
4055
<Destinations>
4156
<Toolkit_VIs>
@@ -312,7 +327,35 @@ This package contains a generic API for configuration data access. It includes a
312327
<Path>source\Advanced</Path>
313328
<VI_Title/>
314329
</Items_Data>
315-
<GUID>808B7DC185CF339F783E55F972A0D4DF</GUID>
330+
<Items_Data>
331+
<Type>Item</Type>
332+
<Sub_Palette_Index>-1</Sub_Palette_Index>
333+
<NameSub_Menu_Name>Write(Variant).vi</NameSub_Menu_Name>
334+
<Short_Name/>
335+
<is_Merge_VI>false</is_Merge_VI>
336+
<Position>
337+
<Row>3</Row>
338+
<Column>3</Column>
339+
</Position>
340+
<Icon>00000000</Icon>
341+
<Path>source\Manager\Write(Variant).vi</Path>
342+
<VI_Title/>
343+
</Items_Data>
344+
<Items_Data>
345+
<Type>Item</Type>
346+
<Sub_Palette_Index>-1</Sub_Palette_Index>
347+
<NameSub_Menu_Name>Read(Variant).vi</NameSub_Menu_Name>
348+
<Short_Name/>
349+
<is_Merge_VI>false</is_Merge_VI>
350+
<Position>
351+
<Row>3</Row>
352+
<Column>2</Column>
353+
</Position>
354+
<Icon>00000000</Icon>
355+
<Path>source\Manager\Read(Variant).vi</Path>
356+
<VI_Title/>
357+
</Items_Data>
358+
<GUID>F3FF291614BE58D24291B011C941655D</GUID>
316359
</Functions_Palette_Data>
317360
<Functions_Palette_Data>
318361
<Parent_Palette_Index>7</Parent_Palette_Index>
@@ -361,7 +404,7 @@ This package contains a generic API for configuration data access. It includes a
361404
<Path>source\Encoding\Encode.vi</Path>
362405
<VI_Title/>
363406
</Items_Data>
364-
<GUID>79FC6BED936BD6612BB1CE25BD844B58</GUID>
407+
<GUID>117BE5729F997DEBDFF36869F5DB989E</GUID>
365408
</Functions_Palette_Data>
366409
<Functions_Palette_Data>
367410
<Parent_Palette_Index>7</Parent_Palette_Index>
@@ -410,7 +453,7 @@ This package contains a generic API for configuration data access. It includes a
410453
<Path>source\Encoding.Base64\Encode.vi</Path>
411454
<VI_Title/>
412455
</Items_Data>
413-
<GUID>37718197EBCB17B699D773351B4A9403</GUID>
456+
<GUID>786DFFFFE1007EBA11FEB14636E1AFB8</GUID>
414457
</Functions_Palette_Data>
415458
<Functions_Palette_Data>
416459
<Parent_Palette_Index>7</Parent_Palette_Index>
@@ -459,7 +502,7 @@ This package contains a generic API for configuration data access. It includes a
459502
<Path>source\Encryption\Encrypt.vi</Path>
460503
<VI_Title/>
461504
</Items_Data>
462-
<GUID>CDA425607F084180454BA822FD762A08</GUID>
505+
<GUID>F3A962892D3C144E64FF08F67F199ECF</GUID>
463506
</Functions_Palette_Data>
464507
<Functions_Palette_Data>
465508
<Parent_Palette_Index>0</Parent_Palette_Index>
@@ -564,7 +607,7 @@ This package contains a generic API for configuration data access. It includes a
564607
<Path>source\Manager\Write Serializer.vi</Path>
565608
<VI_Title/>
566609
</Items_Data>
567-
<GUID>F48C5908CE3EDC03FF9F96CA819DD323</GUID>
610+
<GUID>C4FA08C910E32FBF56B9ED6E132D3802</GUID>
568611
</Functions_Palette_Data>
569612
<Functions_Palette_Data>
570613
<Parent_Palette_Index>7</Parent_Palette_Index>
@@ -613,7 +656,7 @@ This package contains a generic API for configuration data access. It includes a
613656
<Path>source\Serializer\UnMarshall.vi</Path>
614657
<VI_Title/>
615658
</Items_Data>
616-
<GUID>EC9347FFB24C5F425FBC2DD30C054751</GUID>
659+
<GUID>B5A35B5F3E1D6873FCA47864098700BB</GUID>
617660
</Functions_Palette_Data>
618661
<Functions_Palette_Data>
619662
<Parent_Palette_Index>0</Parent_Palette_Index>
@@ -662,7 +705,7 @@ This package contains a generic API for configuration data access. It includes a
662705
<Path>source\Collection\Create Collection.vi</Path>
663706
<VI_Title/>
664707
</Items_Data>
665-
<GUID>D64BAD861B05B0505B6CD194E8A74FB4</GUID>
708+
<GUID>4CF0198703108636C7D7B1D71C3FC38A</GUID>
666709
</Functions_Palette_Data>
667710
<Functions_Palette_Data>
668711
<Parent_Palette_Index>0</Parent_Palette_Index>
@@ -739,7 +782,7 @@ This package contains a generic API for configuration data access. It includes a
739782
<Path>source\Serializer</Path>
740783
<VI_Title/>
741784
</Items_Data>
742-
<GUID>32BC41928BD03EE908869F293B0E9911</GUID>
785+
<GUID>525981189EC3F42E43BAEBDCD68500CE</GUID>
743786
</Functions_Palette_Data>
744787
</Library_Palette_Definition>
745788
</VI_Package_Builder_Settings>

Configuration Manager.vipc

304 KB
Binary file not shown.

source/Cache/Merge.vi

780 Bytes
Binary file not shown.
9.6 KB
Binary file not shown.

source/CfgManager Test Launcher.vi

9.18 KB
Binary file not shown.

source/CfgManager.lvproj

+19
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,29 @@
2222
<Item Name="vi.lib" Type="Folder">
2323
<Item Name="Check if File or Folder Exists.vi" Type="VI" URL="/&lt;vilib&gt;/Utility/libraryn.llb/Check if File or Folder Exists.vi"/>
2424
<Item Name="Error Cluster From Error Code.vi" Type="VI" URL="/&lt;vilib&gt;/Utility/error.llb/Error Cluster From Error Code.vi"/>
25+
<Item Name="Get Type Code from I16 Array And Pos.vi" Type="VI" URL="/&lt;vilib&gt;/Utility/GetType.llb/Get Type Code from I16 Array And Pos.vi"/>
26+
<Item Name="KVP Parser.vi" Type="VI" URL="/&lt;vilib&gt;/LabVIEW Open Source/Data Manipulation/KVP Parser.vi"/>
2527
<Item Name="LabVIEWHTTPClient.lvlib" Type="Library" URL="/&lt;vilib&gt;/httpClient/LabVIEWHTTPClient.lvlib"/>
2628
<Item Name="NI_FileType.lvlib" Type="Library" URL="/&lt;vilib&gt;/Utility/lvfile.llb/NI_FileType.lvlib"/>
2729
<Item Name="NI_PackedLibraryUtility.lvlib" Type="Library" URL="/&lt;vilib&gt;/Utility/LVLibp/NI_PackedLibraryUtility.lvlib"/>
30+
<Item Name="OpenDescriptor.lvlib" Type="Library" URL="/&lt;vilib&gt;/LabVIEW Open Source/Data Manipulation/TypeDescriptor/OpenDescriptor.lvlib"/>
31+
<Item Name="OpenVariant.lvlib" Type="Library" URL="/&lt;vilib&gt;/LabVIEW Open Source/Data Manipulation/Variant/OpenVariant.lvlib"/>
32+
<Item Name="Space Constant.vi" Type="VI" URL="/&lt;vilib&gt;/dlg_ctls.llb/Space Constant.vi"/>
33+
<Item Name="TD_Compare Types.vi" Type="VI" URL="/&lt;vilib&gt;/Utility/GetType.llb/TD_Compare Types.vi"/>
34+
<Item Name="TD_Create Array.vi" Type="VI" URL="/&lt;vilib&gt;/Utility/GetType.llb/TD_Create Array.vi"/>
35+
<Item Name="TD_Create Cluster.vi" Type="VI" URL="/&lt;vilib&gt;/Utility/GetType.llb/TD_Create Cluster.vi"/>
36+
<Item Name="TD_Get Array Information.vi" Type="VI" URL="/&lt;vilib&gt;/Utility/GetType.llb/TD_Get Array Information.vi"/>
37+
<Item Name="TD_Get Cluster Information.vi" Type="VI" URL="/&lt;vilib&gt;/Utility/GetType.llb/TD_Get Cluster Information.vi"/>
38+
<Item Name="TD_Get Ref Info.vi" Type="VI" URL="/&lt;vilib&gt;/Utility/GetType.llb/TD_Get Ref Info.vi"/>
39+
<Item Name="TD_Length.ctl" Type="VI" URL="/&lt;vilib&gt;/Utility/GetType.llb/TD_Length.ctl"/>
40+
<Item Name="TD_Refnum Kind.ctl" Type="VI" URL="/&lt;vilib&gt;/Utility/GetType.llb/TD_Refnum Kind.ctl"/>
41+
<Item Name="Trim Whitespace.vi" Type="VI" URL="/&lt;vilib&gt;/Utility/error.llb/Trim Whitespace.vi"/>
42+
<Item Name="Type Code.ctl" Type="VI" URL="/&lt;vilib&gt;/Utility/GetType.llb/Type Code.ctl"/>
43+
<Item Name="Type Descriptor I16 Array.ctl" Type="VI" URL="/&lt;vilib&gt;/Utility/GetType.llb/Type Descriptor I16 Array.ctl"/>
44+
<Item Name="Type Descriptor I16.ctl" Type="VI" URL="/&lt;vilib&gt;/Utility/GetType.llb/Type Descriptor I16.ctl"/>
45+
<Item Name="Type Enum.ctl" Type="VI" URL="/&lt;vilib&gt;/Utility/GetType.llb/Type Enum.ctl"/>
2846
<Item Name="VariantType.lvlib" Type="Library" URL="/&lt;vilib&gt;/Utility/VariantDataType/VariantType.lvlib"/>
47+
<Item Name="whitespace.ctl" Type="VI" URL="/&lt;vilib&gt;/Utility/error.llb/whitespace.ctl"/>
2948
</Item>
3049
</Item>
3150
<Item Name="Build Specifications" Type="Build"/>

source/Manager/ConfigManager.lvclass

+42-11
Large diffs are not rendered by default.

source/Manager/Decompose KVPs.vi

23.1 KB
Binary file not shown.

source/Manager/Read(Variant).vi

29.1 KB
Binary file not shown.

source/Manager/Read.vi

2.16 KB
Binary file not shown.

source/Manager/Write(Variant).vi

27.1 KB
Binary file not shown.

source/Manager/Write.vi

8 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)