The app works like a stand alone camera app on your machine.
It lets you click pictures and uploads it to pre-configured storage account on Azure. It also lets you list and delete the pictures from the storage account.
It uses keyvault to hide storage account credentials, and your service principal needs to be given access to keyvault for you to be able to use the app.
App Design:
- App bootstraps and uses your service principal to get storage account details from the key vault.
- Camera Starts displaying the Camera UI (Swing UI)
- Using the UI pictures are clicked, uploaded, listed or deleted.
- The storage credentials fetched in Step 1 are used to perform storage operations in Step 3.
Libraries/Tools used: Jackson RxJava (will migrate to Reactor) Spotbugs azure-mgmt-vault azure-storage-blob
Setup Instructions:
a. Configure Following Environment Variables:
1. "CAM_VAULT_URL"
2. "CAM_CLIENT"
3. "CAM_CLIENT_KEY"
4. "CAM_TENANT"
b. Get your Service Principal added to camera vault's access policies.
c. Compile and run the app
Benchmarks:
Performance of the capture path (frame conversion and JPEG encoding) is tracked with
CodSpeed using JMH benchmarks living in
benchmarks/. To run them locally (JDK 21+ required):
git submodule update --init third-party/codspeed-jvm
git -C third-party/codspeed-jvm submodule update --init --recursive \
jmh-fork/jmh-core/native-instrument-hooks/instrument-hooks
cd third-party/codspeed-jvm && ./gradlew -p jmh-fork publishToMavenLocal && cd -
mvn -f benchmarks/pom.xml package
java -jar benchmarks/target/benchmarks.jar -gc trueScreenShots:
