summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2014-09-15 11:41:39 +0200
committerAndrew Branson <andrew.branson@cern.ch>2014-09-15 11:41:39 +0200
commit3bb0aefa38c27221114a2db749d2eaa1a9df0336 (patch)
tree022a172278d54a35ae464ecd3fc8a19ab6231bf9
parent95b8f12336bbc46f8d3e7cd407b89911aba8d2c5 (diff)
Add trim calls to ObjectProperties.getString() to discard any extra
whitespace around the values. Fixes #165 Remove old Gateway.getProperty methods - there should be no deprecated methods in the 3.0 release Move all getProperty() calls to getString or other so they will be trimmed. Introduce ObjectProperties.getInstances to create ArrayLists of objects from comma-separated class name lists.
-rw-r--r--src/main/java/com/c2kernel/entity/agent/Job.java17
-rw-r--r--src/main/java/com/c2kernel/lookup/RolePath.java2
-rw-r--r--src/main/java/com/c2kernel/persistency/XMLClusterStorage.java2
-rw-r--r--src/main/java/com/c2kernel/process/Bootstrap.java34
-rw-r--r--src/main/java/com/c2kernel/process/ClientShell.java4
-rw-r--r--src/main/java/com/c2kernel/process/Gateway.java21
-rw-r--r--src/main/java/com/c2kernel/process/UserCodeProcess.java2
-rw-r--r--src/main/java/com/c2kernel/process/module/ModuleManager.java5
-rw-r--r--src/main/java/com/c2kernel/scripting/ScriptConsole.java4
-rw-r--r--src/main/java/com/c2kernel/utils/ObjectProperties.java40
10 files changed, 69 insertions, 62 deletions
diff --git a/src/main/java/com/c2kernel/entity/agent/Job.java b/src/main/java/com/c2kernel/entity/agent/Job.java
index fe2084d..13bd268 100644
--- a/src/main/java/com/c2kernel/entity/agent/Job.java
+++ b/src/main/java/com/c2kernel/entity/agent/Job.java
@@ -349,15 +349,16 @@ public class Job implements C2KLocalObject
synchronized (ocInitCache) {
ocInit = ocInitCache.get(ocPropName);
if (ocInit == null) {
- Object ocInitObj = Gateway.getProperties().get(ocPropName);
- if (ocInitObj instanceof String) {
- try {
- ocInitObj = Class.forName((String)ocInitObj).newInstance();
- } catch (Exception e) {
- Logger.error(e);
- throw new InvalidDataException("Could not instantiate OutcomeInstantiator "+ocInitObj+" for "+ocPropName);
- }
+ Object ocInitObj;
+ if (!Gateway.getProperties().containsKey(ocPropName)) {
+ throw new InvalidDataException("Outcome instantiator "+ocPropName+" isn't defined", "");
}
+ try {
+ ocInitObj = Gateway.getProperties().getInstance(ocPropName);
+ } catch (Exception e) {
+ Logger.error(e);
+ throw new InvalidDataException("Outcome instantiator "+ocPropName+" couldn't be instantiated", "");
+ }
ocInit = (OutcomeInitiator)ocInitObj; // throw runtime class cast if it isn't one
ocInitCache.put(ocPropName, ocInit);
}
diff --git a/src/main/java/com/c2kernel/lookup/RolePath.java b/src/main/java/com/c2kernel/lookup/RolePath.java
index fa37fb3..9f9c597 100644
--- a/src/main/java/com/c2kernel/lookup/RolePath.java
+++ b/src/main/java/com/c2kernel/lookup/RolePath.java
@@ -61,7 +61,7 @@ public class RolePath extends DomainPath
@Override
- public void checkType() {
+ protected void checkType() {
mType = CONTEXT;
}
diff --git a/src/main/java/com/c2kernel/persistency/XMLClusterStorage.java b/src/main/java/com/c2kernel/persistency/XMLClusterStorage.java
index 8f01d8e..d3ee503 100644
--- a/src/main/java/com/c2kernel/persistency/XMLClusterStorage.java
+++ b/src/main/java/com/c2kernel/persistency/XMLClusterStorage.java
@@ -19,7 +19,7 @@ public class XMLClusterStorage extends ClusterStorage {
@Override
public void open(Authenticator auth) throws ClusterStorageException {
- String rootProp = Gateway.getProperties().getProperty("XMLStorage.root");
+ String rootProp = Gateway.getProperties().getString("XMLStorage.root");
if (rootProp == null)
throw new ClusterStorageException("XMLClusterStorage.open() - Root path not given in config file.");
diff --git a/src/main/java/com/c2kernel/process/Bootstrap.java b/src/main/java/com/c2kernel/process/Bootstrap.java
index 3b61ad3..0f06616 100644
--- a/src/main/java/com/c2kernel/process/Bootstrap.java
+++ b/src/main/java/com/c2kernel/process/Bootstrap.java
@@ -224,21 +224,17 @@ public class Bootstrap
private static ResourceImportHandler getHandler(String resType) throws Exception {
if (resHandlerCache.containsKey(resType))
return resHandlerCache.get(resType);
- ResourceImportHandler handler;
- Object handlerProp = Gateway.getProperties().get("ResourceImportHandler."+resType);
- if (handlerProp instanceof ResourceImportHandler)
- handler = (ResourceImportHandler)handlerProp;
- else if (handlerProp instanceof String) { //class name
+ ResourceImportHandler handler = null;
+ if (Gateway.getProperties().containsKey("ResourceImportHandler."+resType)) {
try {
- Class<?> handlerClass = Class.forName((String)handlerProp);
- handler = (ResourceImportHandler) handlerClass.newInstance();
- } catch (ClassNotFoundException e) {
- throw new Exception("Handler class "+handlerProp+" for importing "+resType+" resources not found");
- } catch (ClassCastException e) {
- throw new Exception(handlerProp+" for importing "+resType+" was not a ResourceImportHandler");
- }
+ handler = (ResourceImportHandler) Gateway.getProperties().getInstance("ResourceImportHandler."+resType);
+ } catch (Exception ex) {
+ Logger.error(ex);
+ Logger.error("Exception loading ResourceHandler for "+resType+". Using default.");
+ }
}
- else
+
+ if (handler == null)
handler = new DefaultResourceImportHandler(resType);
resHandlerCache.put(resType, handler);
@@ -327,7 +323,7 @@ public class Bootstrap
*/
public static void checkAdminAgents() throws Exception {
// check for administrative user
- String adminPassword = Gateway.getProperties().getProperty("AdminPassword", "admin12345");
+ String adminPassword = Gateway.getProperties().getString("AdminPassword", "admin12345");
// check for import user
checkAgent("system", adminPassword, "Admin", new UUID(0, 0), false);
@@ -340,7 +336,7 @@ public class Bootstrap
public static void createServerItem() throws Exception {
LookupManager lookupManager = Gateway.getLookupManager();
- String serverName = Gateway.getProperties().getProperty("ItemServer.name");
+ String serverName = Gateway.getProperties().getString("ItemServer.name", InetAddress.getLocalHost().getHostName());
thisServerPath = new DomainPath("/servers/"+serverName);
ItemPath serverEntity;
try {
@@ -356,12 +352,12 @@ public class Bootstrap
Gateway.getStorage().put(serverEntity, new Property("Name", serverName, false), null);
Gateway.getStorage().put(serverEntity, new Property("Type", "Server", false), null);
Gateway.getStorage().put(serverEntity, new Property("KernelVersion", Gateway.getKernelVersion(), true), null);
- if (Gateway.getProperties().getProperty("ItemServer.Proxy.port") != null)
- Gateway.getStorage().put(serverEntity,
- new Property("ProxyPort", Gateway.getProperties().getProperty("ItemServer.Proxy.port"), false), null);
+ int proxyPort = Gateway.getProperties().getInt("ItemServer.Proxy.port", 1553);
+ Gateway.getStorage().put(serverEntity,
+ new Property("ProxyPort", String.valueOf(proxyPort), false), null);
Gateway.getStorage().put(serverEntity,
new Property("ConsolePort", String.valueOf(Logger.getConsolePort()), true), null);
- Gateway.getProxyManager().connectToProxyServer(Gateway.getProperties().getProperty("ItemServer.name"), Gateway.getProperties().getInt("ItemServer.Proxy.port"));
+ Gateway.getProxyManager().connectToProxyServer(serverName, proxyPort);
}
diff --git a/src/main/java/com/c2kernel/process/ClientShell.java b/src/main/java/com/c2kernel/process/ClientShell.java
index eeeb07f..d97a3de 100644
--- a/src/main/java/com/c2kernel/process/ClientShell.java
+++ b/src/main/java/com/c2kernel/process/ClientShell.java
@@ -41,9 +41,7 @@ public class ClientShell extends StandardClient {
public static void main(String[] args) throws Exception {
Gateway.init(readC2KArgs(args));
- String authClassName = Gateway.getProperties().getProperty("cli.auth");
- Class<?> authClass = Gateway.getResource().getClassForName(authClassName);
- ProxyLogin auth = (ProxyLogin)authClass.newInstance();
+ ProxyLogin auth = (ProxyLogin)Gateway.getProperties().getInstance("cli.auth");
AgentProxy user = auth.authenticate(Gateway.getProperties().getProperty("Name"));
ClientShell shell = new ClientShell(user);
shell.run();
diff --git a/src/main/java/com/c2kernel/process/Gateway.java b/src/main/java/com/c2kernel/process/Gateway.java
index c2dd646..2de2b99 100644
--- a/src/main/java/com/c2kernel/process/Gateway.java
+++ b/src/main/java/com/c2kernel/process/Gateway.java
@@ -135,7 +135,7 @@ public class Gateway
dumpC2KProps(7);
//Initialise language file
- String languageFile = getProperty("language.file");
+ String languageFile = getProperties().getString("language.file");
if (languageFile != null && languageFile.length() > 0) {
Language.isTranlated=true;
Language.mTableOfTranslation = FileStringUtility.loadLanguageFile(languageFile);
@@ -376,24 +376,7 @@ public class Gateway
}
static public String getCentreId() {
- return getProperty("LocalCentre");
- }
-
- @Deprecated
- static public String getProperty(String propName) {
- return getProperty(propName, null);
- }
-
- @Deprecated
- static public String getProperty(String propName, String defaultValue) {
- if (mC2KProps == null) return defaultValue;
- return mC2KProps.getProperty(propName, defaultValue);
- }
-
- @Deprecated
- static public void setProperty(String propName, String propValue) {
- if (mC2KProps == null) return;
- mC2KProps.put(propName, propValue);
+ return getProperties().getString("LocalCentre");
}
static public Enumeration<?> propertyNames() {
diff --git a/src/main/java/com/c2kernel/process/UserCodeProcess.java b/src/main/java/com/c2kernel/process/UserCodeProcess.java
index 6b34bf5..cb8ca74 100644
--- a/src/main/java/com/c2kernel/process/UserCodeProcess.java
+++ b/src/main/java/com/c2kernel/process/UserCodeProcess.java
@@ -209,7 +209,7 @@ public class UserCodeProcess extends StandardClient implements ProxyObserver<Job
}
public static UserCodeProcess getInstance() throws UnknownHostException {
- return new UserCodeProcess(InetAddress.getLocalHost().getHostName(), "uc", Gateway.getProperties().getProperty("AuthResource", "Cristal"));
+ return new UserCodeProcess(InetAddress.getLocalHost().getHostName(), "uc", Gateway.getProperties().getString("AuthResource", "Cristal"));
}
static public void main(String[] args)
diff --git a/src/main/java/com/c2kernel/process/module/ModuleManager.java b/src/main/java/com/c2kernel/process/module/ModuleManager.java
index 4fde044..02e7eaa 100644
--- a/src/main/java/com/c2kernel/process/module/ModuleManager.java
+++ b/src/main/java/com/c2kernel/process/module/ModuleManager.java
@@ -144,7 +144,7 @@ public class ModuleManager {
public void registerModules() throws ModuleException {
ItemProxy serverEntity;
try {
- serverEntity = Gateway.getProxyManager().getProxy(new DomainPath("/servers/"+Gateway.getProperties().getProperty("ItemServer.name")));
+ serverEntity = Gateway.getProxyManager().getProxy(new DomainPath("/servers/"+Gateway.getProperties().getString("ItemServer.name")));
} catch (ObjectNotFoundException e) {
throw new ModuleException("Cannot find local server name.");
}
@@ -156,8 +156,7 @@ public class ModuleManager {
Logger.msg("Registering module "+thisMod.getName());
try {
- String nsReset = Gateway.getProperties().getProperty("Module."+thisMod.getNamespace()+".reset");
- boolean thisReset = nsReset == null?reset:nsReset.equals("true");
+ boolean thisReset = Gateway.getProperties().getBoolean("Module."+thisMod.getNamespace()+".reset");
thisMod.importAll(serverEntity, user, modulesXML.get(thisMod.getNamespace()), thisReset);
} catch (Exception e) {
Logger.error(e);
diff --git a/src/main/java/com/c2kernel/scripting/ScriptConsole.java b/src/main/java/com/c2kernel/scripting/ScriptConsole.java
index 6b77a4f..27e1234 100644
--- a/src/main/java/com/c2kernel/scripting/ScriptConsole.java
+++ b/src/main/java/com/c2kernel/scripting/ScriptConsole.java
@@ -44,10 +44,10 @@ public class ScriptConsole implements SocketHandler {
static {
securityMode = ALLOW;
- String hosts = Gateway.getProperties().getProperty("ItemServer.Console.allow");
+ String hosts = Gateway.getProperties().getString("ItemServer.Console.allow");
if (hosts == null || hosts.equals("")) {
securityMode = DENY;
- hosts = Gateway.getProperties().getProperty("ItemServer.Console.deny");
+ hosts = Gateway.getProperties().getString("ItemServer.Console.deny");
}
if (hosts == null || hosts.equals("")) { // by default only allow localhost
securityMode = ALLOW;
diff --git a/src/main/java/com/c2kernel/utils/ObjectProperties.java b/src/main/java/com/c2kernel/utils/ObjectProperties.java
index 8dacd2c..d9bf0f6 100644
--- a/src/main/java/com/c2kernel/utils/ObjectProperties.java
+++ b/src/main/java/com/c2kernel/utils/ObjectProperties.java
@@ -1,7 +1,9 @@
package com.c2kernel.utils;
+import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Properties;
+import java.util.StringTokenizer;
public class ObjectProperties extends Properties {
@@ -13,11 +15,13 @@ public class ObjectProperties extends Properties {
}
public String getString(String propName) {
- return super.getProperty(propName);
+ return getString(propName, null);
}
public String getString(String propName, String defaultValue) {
- return super.getProperty(propName, defaultValue);
+ String value = super.getProperty(propName, defaultValue);
+ if (value!=null) value = value.trim();
+ return value;
}
/**
@@ -145,7 +149,11 @@ public class ObjectProperties extends Properties {
Logger.msg(logLevel, "Properties:");
for (Enumeration<?> e = propertyNames(); e.hasMoreElements();) {
String name = (String) e.nextElement();
- Logger.msg(" "+name+" ("+getObject(name).getClass().getSimpleName()+"): "+getObject(name).toString());
+ Object value = getObject(name);
+ if (value == null)
+ Logger.msg(" "+name+": null");
+ else
+ Logger.msg(" "+name+" ("+getObject(name).getClass().getSimpleName()+"): '"+getObject(name).toString()+"'");
}
}
@@ -154,12 +162,34 @@ public class ObjectProperties extends Properties {
if (prop == null || prop.equals(""))
throw new InstantiationException("Property '"+propName+"' was not defined. Cannot instantiate.");
if (prop instanceof String)
- return Class.forName((String)prop).newInstance();
+ return Class.forName(((String)prop).trim()).newInstance();
return prop;
}
public Object getInstance(String propName) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
return getInstance(propName, null);
}
-
+
+ public ArrayList<?> getInstances(String propName, Object defaultVal) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+ Object val = getObject(propName, defaultVal);
+ if (val == null) return null;
+ if (val instanceof ArrayList)
+ return (ArrayList<?>)val;
+ else if (val instanceof String) {
+ ArrayList<Object> retArr = new ArrayList<Object>();
+ StringTokenizer tok = new StringTokenizer((String)val, ",");
+ while (tok.hasMoreTokens())
+ retArr.add(getInstance(tok.nextToken()));
+ return retArr;
+ }
+ else {
+ ArrayList<Object> retArr = new ArrayList<Object>();
+ retArr.add(val);
+ return retArr;
+ }
+ }
+
+ public ArrayList<?> getInstances(String propName) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+ return getInstances(propName, null);
+ }
}