directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Zheng, Kai" <kai.zh...@intel.com>
Subject RE: [01/12] directory-kerberos git commit: Working on json file based backend
Date Sat, 14 Mar 2015 03:37:58 GMT
>>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:kayyagari@apache.org]
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, <drankye@apache.org<mailto:drankye@apache.org>>
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 <drankye@gmail.com<mailto:drankye@gmail.com>>
Authored: Fri Mar 13 06:00:46 2015 +0800
Committer: Drankye <drankye@gmail.com<mailto:drankye@gmail.com>>
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
Mime
View raw message