You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by Kiran Ayyagari <ka...@apache.org> on 2015/03/14 04:02:09 UTC

Re: [01/12] directory-kerberos git commit: Working on json file based backend

Hello Kai,

On Sat, Mar 14, 2015 at 10:54 AM, <dr...@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 <dr...@gmail.com>
> Authored: Fri Mar 13 06:00:46 2015 +0800
> Committer: Drankye <dr...@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

RE: [01/12] directory-kerberos git commit: Working on json file based backend

Posted by "Zheng, Kai" <ka...@intel.com>.
>>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, <dr...@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 <dr...@gmail.com>>
Authored: Fri Mar 13 06:00:46 2015 +0800
Committer: Drankye <dr...@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