summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2014-07-24 09:23:15 +0200
committerAndrew Branson <andrew.branson@cern.ch>2014-07-24 09:23:15 +0200
commitfdaf02db3616b7b36168e97462b7d55adc47fee2 (patch)
treef28ba554a662571e2706449c773890bf03d00325
parent3a1cf227c6744c94d8620b13c1e5a430cd6895ce (diff)
Move cluster storage implementation into lookup.ldap package, leave
stubs in the old persistency package for backwards compatibility.
-rw-r--r--src/main/java/com/c2kernel/lookup/ldap/LDAPClientReader.java44
-rw-r--r--src/main/java/com/c2kernel/lookup/ldap/LDAPClusterStorage.java176
-rw-r--r--src/main/java/com/c2kernel/persistency/LDAPClientReader.java50
-rw-r--r--src/main/java/com/c2kernel/persistency/LDAPClusterStorage.java184
4 files changed, 242 insertions, 212 deletions
diff --git a/src/main/java/com/c2kernel/lookup/ldap/LDAPClientReader.java b/src/main/java/com/c2kernel/lookup/ldap/LDAPClientReader.java
new file mode 100644
index 0000000..a02d4fd
--- /dev/null
+++ b/src/main/java/com/c2kernel/lookup/ldap/LDAPClientReader.java
@@ -0,0 +1,44 @@
+package com.c2kernel.lookup.ldap;
+
+import com.c2kernel.entity.C2KLocalObject;
+import com.c2kernel.persistency.ClusterStorageException;
+
+/** Allows clients to directly load properties and collections from the LDAP
+* so no CORBA calls need to be made during normal browsing
+*/
+
+public class LDAPClientReader extends LDAPClusterStorage {
+ // return all readwrite support as readonly
+ @Override
+ public short queryClusterSupport(String clusterType) {
+ return (short)(super.queryClusterSupport(clusterType) & READ);
+ }
+
+
+ /**
+ * @see com.c2kernel.persistency.ClusterStorage#delete(Integer, String)
+ */
+ @Override
+ public void delete(Integer sysKey, String path)
+ throws ClusterStorageException {
+ throw new ClusterStorageException("Writing not supported in ClientReader");
+ }
+
+ /**
+ * @see com.c2kernel.persistency.ClusterStorage#getName()
+ */
+ @Override
+ public String getName() {
+ return "LDAP Client Cluster Reader";
+ }
+
+ /**
+ * @see com.c2kernel.persistency.ClusterStorage#put(Integer, String, C2KLocalObject)
+ */
+
+ public void put(Integer sysKey, String path, C2KLocalObject obj)
+ throws ClusterStorageException {
+ throw new ClusterStorageException("Writing not supported in ClientReader");
+ }
+
+}
diff --git a/src/main/java/com/c2kernel/lookup/ldap/LDAPClusterStorage.java b/src/main/java/com/c2kernel/lookup/ldap/LDAPClusterStorage.java
new file mode 100644
index 0000000..f309378
--- /dev/null
+++ b/src/main/java/com/c2kernel/lookup/ldap/LDAPClusterStorage.java
@@ -0,0 +1,176 @@
+package com.c2kernel.lookup.ldap;
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
+import com.c2kernel.common.ObjectNotFoundException;
+import com.c2kernel.entity.C2KLocalObject;
+import com.c2kernel.lookup.InvalidItemPathException;
+import com.c2kernel.lookup.ItemPath;
+import com.c2kernel.lookup.Lookup;
+import com.c2kernel.persistency.ClusterStorage;
+import com.c2kernel.persistency.ClusterStorageException;
+import com.c2kernel.process.Gateway;
+import com.c2kernel.process.auth.Authenticator;
+import com.c2kernel.property.Property;
+import com.c2kernel.utils.Logger;
+
+public class LDAPClusterStorage extends ClusterStorage {
+ LDAPPropertyManager ldapStore;
+
+ @Override
+ public void open(Authenticator auth) throws ClusterStorageException {
+ Lookup lookup = Gateway.getLookup();
+ if (lookup instanceof LDAPLookup)
+ ldapStore = ((LDAPLookup)lookup).getPropManager();
+ else
+ throw new ClusterStorageException("Cannot use LDAP cluster storage without LDAP Lookup");
+
+ }
+
+ @Override
+ public void close() throws ClusterStorageException {
+ }
+
+ // introspection
+ @Override
+ public short queryClusterSupport(String clusterType) {
+ if (clusterType.equals(PROPERTY))
+ return READWRITE;
+ else
+ return NONE;
+ }
+
+ @Override
+ public String getName() {
+ return "LDAP Cluster Storage";
+ }
+
+ @Override
+ public String getId() {
+ return "LDAP";
+ }
+
+ // retrieve object by path
+ @Override
+ public C2KLocalObject get(Integer sysKey, String path) throws ClusterStorageException {
+ Logger.msg(6, "LDAPClusterStorage.get() - "+sysKey+"/"+path);
+ StringTokenizer tok = new StringTokenizer(path, "/");
+ int pathLength = tok.countTokens();
+ if (pathLength != 2)
+ throw new ClusterStorageException("Path length was invalid: "+path);
+ String type = tok.nextToken();
+
+ ItemPath thisEntity;
+ try {
+ thisEntity = new ItemPath(sysKey.intValue());
+ } catch (InvalidItemPathException e) {
+ throw new ClusterStorageException("Invalid Syskey:"+sysKey);
+ }
+
+ String objName = tok.nextToken();
+ C2KLocalObject newObj;
+
+ if (type.equals(PROPERTY)) {
+ try {
+ Property newProperty = ldapStore.getProperty(thisEntity, objName);
+ newObj = newProperty;
+ } catch (ObjectNotFoundException ex) {
+ throw new ClusterStorageException("Property "+objName+" not found in "+sysKey);
+ }
+
+ }
+ else
+ throw new ClusterStorageException("Cluster type "+type+" not supported.");
+
+ return newObj;
+ }
+ // store object by path
+ @Override
+ public void put(Integer sysKey, C2KLocalObject obj) throws ClusterStorageException {
+ Logger.msg(6, "LDAPClusterStorage.put() - "+sysKey+"/"+ClusterStorage.getPath(obj));
+
+ String type = obj.getClusterType();
+
+ ItemPath thisEntity;
+ try {
+ thisEntity = new ItemPath(sysKey.intValue());
+ } catch (InvalidItemPathException e) {
+ throw new ClusterStorageException("Invalid Syskey:"+sysKey);
+ }
+
+ if (type.equals(PROPERTY)) {
+ try {
+ ldapStore.setProperty(thisEntity, (Property)obj);
+ } catch (Exception e1) {
+ Logger.error(e1);
+ throw new ClusterStorageException("LDAPClusterStorage - could not write property");
+ }
+ }
+ else
+ throw new ClusterStorageException("Cluster type "+type+" not supported.");
+
+ }
+ // delete cluster
+ @Override
+ public void delete(Integer sysKey, String path) throws ClusterStorageException {
+ StringTokenizer tok = new StringTokenizer(path, "/");
+ int pathLength = tok.countTokens();
+ if (pathLength != 2)
+ throw new ClusterStorageException("Path length was invalid: "+path);
+ String type = tok.nextToken();
+
+ ItemPath thisEntity;
+ try {
+ thisEntity = new ItemPath(sysKey.intValue());
+ } catch (InvalidItemPathException e) {
+ throw new ClusterStorageException("Invalid Syskey:"+sysKey);
+ }
+
+ if (type.equals(PROPERTY)) {
+ try {
+ ldapStore.deleteProperty(thisEntity, tok.nextToken());
+ } catch (Exception e1) {
+ Logger.error(e1);
+ throw new ClusterStorageException("LDAPClusterStorage - could not delete property");
+ }
+ }
+ else
+ throw new ClusterStorageException("Cluster type "+type+" not supported.");
+
+ }
+
+ /* navigation */
+
+ // directory listing
+ @Override
+ public String[] getClusterContents(Integer sysKey, String path) throws ClusterStorageException {
+ Logger.msg(6, "LDAPClusterStorage.getClusterContents() - "+sysKey+"/"+path);
+ StringTokenizer tok = new StringTokenizer(path, "/");
+ int pathLength = tok.countTokens();
+ if (pathLength > 1)
+ return new String[0];
+
+ String type = getClusterType(path);
+ try
+ {
+ ItemPath thisEntity = new ItemPath(sysKey.intValue());
+ if (type.equals(PROPERTY))
+ return ldapStore.getPropertyNames(thisEntity);
+ else
+ if (type.equals("")) { // root query
+ String[] allClusters = new String[0];
+ ArrayList<String> clusterList = new ArrayList<String>();
+ if (ldapStore.hasProperties(thisEntity))
+ clusterList.add(PROPERTY);
+ allClusters = clusterList.toArray(allClusters);
+ return allClusters;
+ }
+ else
+ throw new ClusterStorageException("Cluster type "+type+" not supported.");
+ } catch (InvalidItemPathException e) {
+ throw new ClusterStorageException("Invalid Syskey:"+sysKey);
+ } catch (ObjectNotFoundException e) {
+ throw new ClusterStorageException("Entity "+sysKey+" does not exist");
+ }
+ }
+}
diff --git a/src/main/java/com/c2kernel/persistency/LDAPClientReader.java b/src/main/java/com/c2kernel/persistency/LDAPClientReader.java
index ac9215c..4458ac6 100644
--- a/src/main/java/com/c2kernel/persistency/LDAPClientReader.java
+++ b/src/main/java/com/c2kernel/persistency/LDAPClientReader.java
@@ -1,43 +1,15 @@
package com.c2kernel.persistency;
-import com.c2kernel.entity.C2KLocalObject;
-
-/** Allows clients to directly load properties and collections from the LDAP
-* so no CORBA calls need to be made during normal browsing
-*/
-
-public class LDAPClientReader extends LDAPClusterStorage {
- // return all readwrite support as readonly
- @Override
- public short queryClusterSupport(String clusterType) {
- return (short)(super.queryClusterSupport(clusterType) & READ);
- }
-
-
- /**
- * @see com.c2kernel.persistency.ClusterStorage#delete(Integer, String)
- */
- @Override
- public void delete(Integer sysKey, String path)
- throws ClusterStorageException {
- throw new ClusterStorageException("Writing not supported in ClientReader");
- }
-
- /**
- * @see com.c2kernel.persistency.ClusterStorage#getName()
- */
- @Override
- public String getName() {
- return "LDAP Client Cluster Reader";
+/**
+ * Provided for easier loading (may be referenced without package in ClusterStorage property)
+ *
+ * @author abranson
+ *
+ */
+public class LDAPClientReader extends com.c2kernel.lookup.ldap.LDAPClientReader {
+
+ public LDAPClientReader() {
+ super();
}
-
- /**
- * @see com.c2kernel.persistency.ClusterStorage#put(Integer, String, C2KLocalObject)
- */
-
- public void put(Integer sysKey, String path, C2KLocalObject obj)
- throws ClusterStorageException {
- throw new ClusterStorageException("Writing not supported in ClientReader");
- }
-
+
}
diff --git a/src/main/java/com/c2kernel/persistency/LDAPClusterStorage.java b/src/main/java/com/c2kernel/persistency/LDAPClusterStorage.java
index 4762a33..005c6e8 100644
--- a/src/main/java/com/c2kernel/persistency/LDAPClusterStorage.java
+++ b/src/main/java/com/c2kernel/persistency/LDAPClusterStorage.java
@@ -1,176 +1,14 @@
package com.c2kernel.persistency;
-import java.util.ArrayList;
-import java.util.StringTokenizer;
-import com.c2kernel.common.ObjectNotFoundException;
-import com.c2kernel.entity.C2KLocalObject;
-import com.c2kernel.lookup.InvalidItemPathException;
-import com.c2kernel.lookup.ItemPath;
-import com.c2kernel.lookup.Lookup;
-import com.c2kernel.lookup.ldap.LDAPLookup;
-import com.c2kernel.lookup.ldap.LDAPPropertyManager;
-import com.c2kernel.process.Gateway;
-import com.c2kernel.process.auth.Authenticator;
-import com.c2kernel.property.Property;
-import com.c2kernel.utils.Logger;
-
-public class LDAPClusterStorage extends ClusterStorage {
- LDAPPropertyManager ldapStore;
-
- @Override
- public void open(Authenticator auth) throws ClusterStorageException {
- Lookup lookup = Gateway.getLookup();
- if (lookup instanceof LDAPLookup)
- ldapStore = ((LDAPLookup)lookup).getPropManager();
- else
- throw new ClusterStorageException("Cannot use LDAP cluster storage without LDAP Lookup");
-
- }
-
- @Override
- public void close() throws ClusterStorageException {
- }
-
- // introspection
- @Override
- public short queryClusterSupport(String clusterType) {
- if (clusterType.equals(PROPERTY))
- return READWRITE;
- else
- return NONE;
- }
-
- @Override
- public String getName() {
- return "LDAP Cluster Storage";
- }
-
- @Override
- public String getId() {
- return "LDAP";
- }
-
- // retrieve object by path
- @Override
- public C2KLocalObject get(Integer sysKey, String path) throws ClusterStorageException {
- Logger.msg(6, "LDAPClusterStorage.get() - "+sysKey+"/"+path);
- StringTokenizer tok = new StringTokenizer(path, "/");
- int pathLength = tok.countTokens();
- if (pathLength != 2)
- throw new ClusterStorageException("Path length was invalid: "+path);
- String type = tok.nextToken();
-
- ItemPath thisEntity;
- try {
- thisEntity = new ItemPath(sysKey.intValue());
- } catch (InvalidItemPathException e) {
- throw new ClusterStorageException("Invalid Syskey:"+sysKey);
- }
-
- String objName = tok.nextToken();
- C2KLocalObject newObj;
-
- if (type.equals(PROPERTY)) {
- try {
- Property newProperty = ldapStore.getProperty(thisEntity, objName);
- newObj = newProperty;
- } catch (ObjectNotFoundException ex) {
- throw new ClusterStorageException("Property "+objName+" not found in "+sysKey);
- }
-
- }
- else
- throw new ClusterStorageException("Cluster type "+type+" not supported.");
-
- return newObj;
- }
- // store object by path
- @Override
- public void put(Integer sysKey, C2KLocalObject obj) throws ClusterStorageException {
- Logger.msg(6, "LDAPClusterStorage.put() - "+sysKey+"/"+ClusterStorage.getPath(obj));
-
- String type = obj.getClusterType();
-
- ItemPath thisEntity;
- try {
- thisEntity = new ItemPath(sysKey.intValue());
- } catch (InvalidItemPathException e) {
- throw new ClusterStorageException("Invalid Syskey:"+sysKey);
- }
-
- if (type.equals(PROPERTY)) {
- try {
- ldapStore.setProperty(thisEntity, (Property)obj);
- } catch (Exception e1) {
- Logger.error(e1);
- throw new ClusterStorageException("LDAPClusterStorage - could not write property");
- }
- }
- else
- throw new ClusterStorageException("Cluster type "+type+" not supported.");
-
- }
- // delete cluster
- @Override
- public void delete(Integer sysKey, String path) throws ClusterStorageException {
- StringTokenizer tok = new StringTokenizer(path, "/");
- int pathLength = tok.countTokens();
- if (pathLength != 2)
- throw new ClusterStorageException("Path length was invalid: "+path);
- String type = tok.nextToken();
-
- ItemPath thisEntity;
- try {
- thisEntity = new ItemPath(sysKey.intValue());
- } catch (InvalidItemPathException e) {
- throw new ClusterStorageException("Invalid Syskey:"+sysKey);
- }
-
- if (type.equals(PROPERTY)) {
- try {
- ldapStore.deleteProperty(thisEntity, tok.nextToken());
- } catch (Exception e1) {
- Logger.error(e1);
- throw new ClusterStorageException("LDAPClusterStorage - could not delete property");
- }
- }
- else
- throw new ClusterStorageException("Cluster type "+type+" not supported.");
-
- }
-
- /* navigation */
-
- // directory listing
- @Override
- public String[] getClusterContents(Integer sysKey, String path) throws ClusterStorageException {
- Logger.msg(6, "LDAPClusterStorage.getClusterContents() - "+sysKey+"/"+path);
- StringTokenizer tok = new StringTokenizer(path, "/");
- int pathLength = tok.countTokens();
- if (pathLength > 1)
- return new String[0];
-
- String type = getClusterType(path);
- try
- {
- ItemPath thisEntity = new ItemPath(sysKey.intValue());
- if (type.equals(PROPERTY))
- return ldapStore.getPropertyNames(thisEntity);
- else
- if (type.equals("")) { // root query
- String[] allClusters = new String[0];
- ArrayList<String> clusterList = new ArrayList<String>();
- if (ldapStore.hasProperties(thisEntity))
- clusterList.add(PROPERTY);
- allClusters = clusterList.toArray(allClusters);
- return allClusters;
- }
- else
- throw new ClusterStorageException("Cluster type "+type+" not supported.");
- } catch (InvalidItemPathException e) {
- throw new ClusterStorageException("Invalid Syskey:"+sysKey);
- } catch (ObjectNotFoundException e) {
- throw new ClusterStorageException("Entity "+sysKey+" does not exist");
- }
- }
+/**
+ * Provided for easier loading (may be referenced without package in ClusterStorage property)
+ *
+ * @author abranson
+ *
+ */
+public class LDAPClusterStorage extends com.c2kernel.lookup.ldap.LDAPClusterStorage {
+
+ public LDAPClusterStorage() {
+ super();
+ }
}