diff --git a/hsarback/conf/META-INF/persistence-with-sql-logging.xml b/hsarback/conf/META-INF/persistence-with-sql-logging.xml index f551d23..cbbe3f5 100644 --- a/hsarback/conf/META-INF/persistence-with-sql-logging.xml +++ b/hsarback/conf/META-INF/persistence-with-sql-logging.xml @@ -6,7 +6,6 @@ de.hsadmin.core.qserv.QueueTask de.hsadmin.mods.cust.Customer de.hsadmin.mods.cust.Contact - de.hsadmin.mods.cust.BankAccount de.hsadmin.mods.pac.Pac de.hsadmin.mods.pac.BasePac de.hsadmin.mods.pac.BaseComponent diff --git a/hsarback/conf/META-INF/persistence.xml b/hsarback/conf/META-INF/persistence.xml index 5e0734c..ae4304b 100644 --- a/hsarback/conf/META-INF/persistence.xml +++ b/hsarback/conf/META-INF/persistence.xml @@ -6,7 +6,6 @@ de.hsadmin.core.qserv.QueueTask de.hsadmin.mods.cust.Customer de.hsadmin.mods.cust.Contact - de.hsadmin.mods.cust.BankAccount de.hsadmin.mods.pac.Pac de.hsadmin.mods.pac.BasePac de.hsadmin.mods.pac.BaseComponent diff --git a/hsarback/conf/WEB-INF/prod-web.xml b/hsarback/conf/WEB-INF/prod-web.xml index 1b71c01..4899424 100644 --- a/hsarback/conf/WEB-INF/prod-web.xml +++ b/hsarback/conf/WEB-INF/prod-web.xml @@ -11,6 +11,14 @@ Queue Status Servlet de.hsadmin.core.qserv.QueueStatusReceiverServlet + + proxyValidateUrl + https://@LOGIN_HOST@:@LOGIN_PORT@/cas/proxyValidate + + + proxyServiceUrl + https://@CONFIG_HOST@:@CONFIG_PORT@/hsar/backend + 1 @@ -18,8 +26,8 @@ XmlRpcServlet de.hsadmin.remote.HSXmlRpcServlet - enabledForExtensions - true + enabledForExtensions + true @@ -28,11 +36,6 @@ /queueStatus - - CLI Client Connector - /hsadmin/cli-interface/ - - XmlRpcServlet /xmlrpc/* diff --git a/hsarback/conf/WEB-INF/test-web.xml b/hsarback/conf/WEB-INF/test-web.xml index df5a9df..47c2dd5 100644 --- a/hsarback/conf/WEB-INF/test-web.xml +++ b/hsarback/conf/WEB-INF/test-web.xml @@ -11,6 +11,14 @@ Queue Status Servlet de.hsadmin.core.qserv.QueueStatusReceiverServlet + + proxyValidateUrl + https://@LOGIN_HOST@:@LOGIN_PORT@/cas/proxyValidate + + + proxyServiceUrl + https://@CONFIG_HOST@:@CONFIG_PORT@/hsar/backend + 1 @@ -28,11 +36,6 @@ /queueStatus - - CLI Client Connector - /hsadmin/cli-interface/ - - XmlRpcServlet /xmlrpc/* diff --git a/hsarback/src/de/hsadmin/core/qserv/QueueStatusReceiverServlet.java b/hsarback/src/de/hsadmin/core/qserv/QueueStatusReceiverServlet.java index af52c92..1d70163 100644 --- a/hsarback/src/de/hsadmin/core/qserv/QueueStatusReceiverServlet.java +++ b/hsarback/src/de/hsadmin/core/qserv/QueueStatusReceiverServlet.java @@ -18,12 +18,14 @@ import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.persistence.EntityManager; +import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import de.hsadmin.core.model.TechnicalException; +import de.hsadmin.core.model.TicketValidator; import de.hsadmin.core.model.Transaction; import de.hsadmin.core.util.Config; @@ -43,6 +45,10 @@ public class QueueStatusReceiverServlet extends HttpServlet @Override public void init() throws ServletException { + final ServletConfig cfg = getServletConfig(); + final String validateURL = cfg.getInitParameter("proxyValidateUrl"); + final String serviceURL = cfg.getInitParameter("proxyServiceUrl"); + TicketValidator.getInstance().initialize(validateURL, serviceURL); isConnected = false; messageCount = 0; errorCount = 0; diff --git a/hsarback/src/de/hsadmin/remote/PropertyRemote.java b/hsarback/src/de/hsadmin/remote/PropertyRemote.java new file mode 100644 index 0000000..6d924aa --- /dev/null +++ b/hsarback/src/de/hsadmin/remote/PropertyRemote.java @@ -0,0 +1,104 @@ +package de.hsadmin.remote; + +import java.io.InputStream; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +import de.hsadmin.core.model.AbstractEntity; +import de.hsadmin.core.model.AnnFieldIO; +import de.hsadmin.core.model.AuthenticationException; +import de.hsadmin.core.model.HSAdminException; +import de.hsadmin.core.model.ReadWriteAccess; +import de.hsadmin.core.model.Transaction; + +public class PropertyRemote implements IRemote { + + @Override + public List> search(String runAsUser, String ticket, + Map whereParams) throws HSAdminException { + String user = runAsUser; + List> result = new ArrayList>(); + Transaction transaction = new Transaction(user); + try { + if (transaction.login(user, ticket)) { + InputStream resourceAsStream = getClass().getClassLoader().getResourceAsStream("org/apache/xmlrpc/webserver/XmlRpcServlet.properties"); + Properties properties = new Properties(); + properties.load(resourceAsStream); + for (Object moduleKey : properties.keySet()) { + Class remoteClass = Class.forName(properties.getProperty((String) moduleKey)); + Object newInstance = remoteClass.newInstance(); + if (newInstance instanceof AbstractRemote) { + AbstractRemote remote = (AbstractRemote) newInstance; + Class entityClass = remote.getEntityClass(); + for (Field f: entityClass.getDeclaredFields()) { + AnnFieldIO fieldIO = f.getAnnotation(AnnFieldIO.class); + if (fieldIO != null) { + HashMap propertyProperties = new HashMap(); + String fieldName = f.getName(); + propertyProperties.put("module", (String) moduleKey); + propertyProperties.put("name", fieldName); + propertyProperties.put("searchable", "equals"); + propertyProperties.put("readwriteable", "read"); + ReadWriteAccess rw = fieldIO.rw(); + if (ReadWriteAccess.READONLY.equals(rw)) { + propertyProperties.put("readwriteable", "read"); + } + if (ReadWriteAccess.READWRITE.equals(rw)) { + propertyProperties.put("readwriteable", "readwrite"); + } + if (ReadWriteAccess.WRITEONCE.equals(rw)) { + propertyProperties.put("readwriteable", "writeonce"); + } + if (ReadWriteAccess.WRITEONLY.equals(rw)) { + propertyProperties.put("readwriteable", "none"); + } + propertyProperties.put("type", "string"); + propertyProperties.put("displaySequence", "2"); + if ("name".equals(fieldName)) { + propertyProperties.put("displaySequence", "1"); + } + propertyProperties.put("displayVisible", "always"); + propertyProperties.put("minLength", "0"); + propertyProperties.put("maxLength", "999"); + String regExp = fieldIO.validation(); + propertyProperties.put("validationRegexp", regExp); + result.add(propertyProperties); + } + } + } + } + return result; + } else { + throw new AuthenticationException("authentication failed"); + } + } catch (Exception e) { + throw new HSAdminException(e); + } finally { + transaction.close(); + } + } + + @Override + public Map add(String runAsUser, String ticket, + Map setParams) throws HSAdminException { + throw new HSAdminException("read only module"); + } + + @Override + public void delete(String runAsUser, String ticket, + Map whereParams) throws HSAdminException { + throw new HSAdminException("read only module"); + } + + @Override + public List> update(String runAsUser, String ticket, + Map setParams, Map whereParams) + throws HSAdminException { + throw new HSAdminException("read only module"); + } + +} diff --git a/hsarback/src/org/apache/xmlrpc/webserver/XmlRpcServlet.properties b/hsarback/src/org/apache/xmlrpc/webserver/XmlRpcServlet.properties index fb56deb..d233600 100644 --- a/hsarback/src/org/apache/xmlrpc/webserver/XmlRpcServlet.properties +++ b/hsarback/src/org/apache/xmlrpc/webserver/XmlRpcServlet.properties @@ -10,3 +10,4 @@ postgresqluser=de.hsadmin.remote.PgsqlUserRemote mysqldb=de.hsadmin.remote.MysqlDbRemote postgresqldb=de.hsadmin.remote.PgsqlDbRemote moduleprop=de.hsadmin.remote.ModulePropertiesRemote +property=de.hsadmin.remote.PropertyRemote \ No newline at end of file