>>I have been using google-gson[1] and it served as a great library for many of >>my usecases >>and is used in eSCIMo too.
>>just wanted to let you know about this alternative, in case if you want to >>consider. That’s a great suggestion, Kiran. I will consider it, thanks ! Regards, Kai From: Kiran Ayyagari [mailto:[email protected]] Sent: Saturday, March 14, 2015 11:02 AM To: Apache Directory Developers List Subject: Re: [01/12] directory-kerberos git commit: Working on json file based backend Hello Kai, On Sat, Mar 14, 2015 at 10:54 AM, <[email protected]<mailto:[email protected]>> wrote: Repository: directory-kerberos Updated Branches: refs/heads/master 1abc0cd9a -> 097d43c42 Working on json file based backend Project: http://git-wip-us.apache.org/repos/asf/directory-kerberos/repo Commit: http://git-wip-us.apache.org/repos/asf/directory-kerberos/commit/4f544720 Tree: http://git-wip-us.apache.org/repos/asf/directory-kerberos/tree/4f544720 Diff: http://git-wip-us.apache.org/repos/asf/directory-kerberos/diff/4f544720 Branch: refs/heads/master Commit: 4f544720948db5a5cc369c7ea97de139513b8bc9 Parents: a94dd21 Author: Drankye <[email protected]<mailto:[email protected]>> Authored: Fri Mar 13 06:00:46 2015 +0800 Committer: Drankye <[email protected]<mailto:[email protected]>> Committed: Fri Mar 13 06:00:46 2015 +0800 ---------------------------------------------------------------------- kdc-backend/Json-identity-backend/pom.xml | 46 +++++++++ .../identitybackend/JsonIdentityBackend.java | 103 +++++++++++++++++++ kdc-backend/pom.xml | 1 + 3 files changed, 150 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4f544720/kdc-backend/Json-identity-backend/pom.xml ---------------------------------------------------------------------- diff --git a/kdc-backend/Json-identity-backend/pom.xml b/kdc-backend/Json-identity-backend/pom.xml new file mode 100644 index 0000000..d233d9c --- /dev/null +++ b/kdc-backend/Json-identity-backend/pom.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. See accompanying LICENSE file. +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.apache.kerby</groupId> + <artifactId>kdc-backend</artifactId> + <version>1.0-SNAPSHOT</version> + </parent> + + <artifactId>Json-identity-backend</artifactId> + + <name>Json identity backend</name> + <description>Json identity backend</description> + + <dependencies> + <dependency> + <groupId>org.apache.kerby</groupId> + <artifactId>kerby-config</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.kerby</groupId> + <artifactId>kerb-identity</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>com.googlecode.json-simple</groupId> I have been using google-gson[1] and it served as a great library for many of my usecases and is used in eSCIMo too. just wanted to let you know about this alternative, in case if you want to consider. [1] https://code.google.com/p/google-gson/ + <artifactId>json-simple</artifactId> + <version>1.1.1</version> + </dependency> + </dependencies> +</project> http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4f544720/kdc-backend/Json-identity-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java ---------------------------------------------------------------------- diff --git a/kdc-backend/Json-identity-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java b/kdc-backend/Json-identity-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java new file mode 100644 index 0000000..a54ca08 --- /dev/null +++ b/kdc-backend/Json-identity-backend/src/main/java/org/apache/kerby/kerberos/kdc/identitybackend/JsonIdentityBackend.java @@ -0,0 +1,103 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.kerby.kerberos.kdc.identitybackend; + +import org.apache.kerby.config.Config; +import org.apache.kerby.kerberos.kerb.identity.KrbIdentity; +import org.apache.kerby.kerberos.kerb.identity.backend.InMemoryIdentityBackend; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; + +/** + * An LDAP based backend implementation. + * + */ +public class JsonIdentityBackend extends InMemoryIdentityBackend { + public static final String JSON_IDENTITY_BACKEND_FILE = + "kdc.identitybackend.json.file"; + private Config config; + private File jsonKdbFile; + + /** + * Constructing an instance using specified config that contains anything + * to be used to initialize the json format database. + * @param config + */ + public JsonIdentityBackend(Config config) { + this.config = config; + } + + /** + * Load identities from file + */ + public void load() throws IOException { + String jsonFile = config.getString(JSON_IDENTITY_BACKEND_FILE); + if (jsonFile == null || jsonFile.isEmpty()) { + throw new RuntimeException("No json kdb file is found"); + } + + jsonKdbFile = new File(jsonFile); + if (! jsonKdbFile.exists()) { + throw new FileNotFoundException("File not found:" + jsonFile); + } + + // TODO: load the kdb file. + } + + private void checkAndLoad() { + // TODO: check kdb file timestamp to see if it's changed or not. If + // necessary load the kdb again. + } + + /** + * Persist the updated identities back + */ + public void save() { + // TODO: save into the kdb file + } + + @Override + public KrbIdentity getIdentity(String name) { + return super.getIdentity(name); + } + + @Override + public void addIdentity(KrbIdentity identity) { + super.addIdentity(identity); + + // TODO: save + } + + @Override + public void updateIdentity(KrbIdentity identity) { + super.updateIdentity(identity); + + // TODO: save + } + + @Override + public void deleteIdentity(KrbIdentity identity) { + super.deleteIdentity(identity); + + // TODO: save + } +} http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/4f544720/kdc-backend/pom.xml ---------------------------------------------------------------------- diff --git a/kdc-backend/pom.xml b/kdc-backend/pom.xml index 8f81d7b..66408b2 100644 --- a/kdc-backend/pom.xml +++ b/kdc-backend/pom.xml @@ -28,5 +28,6 @@ <modules> <module>ldap-identity-backend</module> + <module>json-identity-backend</module> </modules> </project> -- Kiran Ayyagari http://keydap.com
