pnoltes opened a new pull request, #765:
URL: https://github.com/apache/celix/pull/765

   # Refactor Manifest Format to JSON
   
   This PR refactors the MANIFEST format to JSON. Consequently, the custom 
manifest parsing is removed, and the properties JSON format is now used.
   
   ## Additional Changes
   
   This PR has grown considerably larger than initially intended due to the 
following additional changes:
   
   - **Deprecation Clean-Up**: Some of the framework deprecated APIs have been 
moved to the framework `src` directory, and deprecated code that was no longer 
used has been removed. This cleanup primarily focused on bundle and module api.
   - **Source File Updates**: Many source files were updated, mostly to adjust 
include statements. In some cases, usage of deprecated bundle api has been 
replaced.
   
   ### Manifest Attribute Definitions
   
   - **Private Defines**: Mandatory and recognized optional manifest attribute 
names are no longer defined in `celix_constants.h`. Instead, they are private 
defines within the bundle manifest source file.
   - **New Functions**: Functions were added to explicitly retrieve the values 
of mandatory or recognized optional manifest attributes.
   - **Manifest Attribute Names**: The used manifest attribute names has 
changed to be more aligned with the naming scheme of config properties.  
   
   ### CMake Function Names
   
   The CMake function `celix_bundle_headers` remains unchanged, ensuring no 
breaking changes. i.e.:
     ```cmake
     celix_bundle_headers(my_bundle "Attribute1: Value1" "Attribute2: Value2")
     ```
   still works. 
   
   This is the same approach was done for the container config properties 
(e.g., `celix_container_runtime_properties` and 
`celix_container_embedded_properties` are backwards compatible). However, 
because `celix_bundle_headers` is not as heavily used, it might be beneficial 
to introduce a new CMake function that accepts separated arguments for 
attribute names and values, such as:
     ```cmake
     celix_bundle_manifest(my_bundle "Attribute1" "Value1")
     ```
   
   ### Bundle Packaging
   
   - Currently, a bundle zip can be created with `jar` if the `jar` executable 
is available. This was beneficial for ensuring the MANIFEST.MF file was the 
first file in the zip.
   - With the JSON format, this benefit is no longer relevant. 
   - We can keep the  support for using `jar` to package a bundle, but we could 
also drop jar support.
   
   ### Future Work
   
   After this PR is merged, my plan is to continue with #509 by:
   
   1. Moving all deprecated API headers (except those used in remote services) 
to the framework `src` directory.
   2. Renaming, refactoring, or removing the deprecated functions.
   
   In a subsequent pull request, the remote services implementation will be 
refactored to remove the usage of the remaining deprecated APIs.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@celix.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to