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