HSAdmin Backend Domains, E-Mail, Datenbanken
Purodha
2013-01-03 c1f04434a04d7469240dffab07503d4be78155e9
Some minor fixes in moduleprop, som commented out debugging stuff. Bug null pointer exception when referredProps have indirect fields, i.e. dot notation.
2 files modified
40 ■■■■■ changed files
hsarback/src/de/hsadmin/mods/cust/Customer.java 5 ●●●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/remote/ModulePropertiesRemote.java 35 ●●●● patch | view | raw | blame | history
hsarback/src/de/hsadmin/mods/cust/Customer.java
@@ -23,6 +23,7 @@
import javax.persistence.Transient;
import de.hsadmin.core.model.AbstractEntity;
import de.hsadmin.core.model.AnnFieldIO;
import de.hsadmin.core.model.AnnModuleImpl;
import de.hsadmin.mods.pac.Pac;
import de.hsadmin.mods.user.UnixUser;
@@ -80,9 +81,13 @@
    private Set<Contact> contacts;
    @OneToOne(fetch = EAGER, cascade = ALL, mappedBy = "customer")
    //@AnnFieldIO(referredProps = "customer")
    //@AnnFieldIO(referredProps = "customer.CustomersTariffl")
    //@AnnFieldIO(referredProps = "customer.CustomersTariff.domainDiscountUntil")
    private BankAccount bankAccount;
    @OneToOne(fetch = EAGER, cascade = ALL, mappedBy = "customer")
    //@AnnFieldIO(referredProps = "domainDiscountUntil")
    private CustomersTariff billData;
    @OneToMany(fetch = LAZY, cascade = ALL, mappedBy = "customer")
hsarback/src/de/hsadmin/remote/ModulePropertiesRemote.java
@@ -27,9 +27,8 @@
            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.entrySet()) {
                properties.load(resourceAsStream);
                for (Object moduleKey : properties.keySet()) {
                    Class<?> remoteClass = Class.forName(properties.getProperty((String) moduleKey));
                    Object newInstance = remoteClass.newInstance();
                    if (newInstance instanceof AbstractRemote) {
@@ -42,20 +41,22 @@
//                        AnnFieldIO fieldIO = entityClass.getAnnotation(AnnFieldIO.class);
                        for (Field f: entityClass.getDeclaredFields()) {
                            HashMap<String, Object> propertyProperties = new HashMap<String, Object>();
                            propertiesList.add(propertyProperties);
                            AnnFieldIO fieldIO = f.getAnnotation(AnnFieldIO.class);
                            String fieldName = f.getName();
                            propertyProperties.put("property", fieldName);
                            String regExp = fieldIO.validation();
                            propertyProperties.put("validation", regExp);
                            ReadWriteAccess rw = fieldIO.rw();
                            propertyProperties.put("rw", rw.name());
                            String[] referredProps = fieldIO.referredProps();
                            propertyProperties.put("referredProps", referredProps);
                            Class<?> declaringClass = f.getDeclaringClass();
                            for(String s : referredProps){
                                String fullPropertyName = fieldName+"."+s;
                                propertiesList.add(createReferredPropertyInfo(fullPropertyName, declaringClass, fullPropertyName));
                            if (fieldIO != null){
                                String fieldName = f.getName();
                                propertyProperties.put("property", fieldName);
                                String regExp = fieldIO.validation();
                                propertyProperties.put("validation", regExp);
                                ReadWriteAccess rw = fieldIO.rw();
                                propertyProperties.put("rw", rw.name());
                                String[] referredProps = fieldIO.referredProps();
                                propertyProperties.put("referredProps", referredProps);
                                Class<?> declaringClass = f.getDeclaringClass();
                                for(String s : referredProps){
                                    String fullPropertyName = fieldName+"."+s;
                                    propertiesList.add(createReferredPropertyInfo(fullPropertyName, declaringClass, fullPropertyName));
                                }
                                propertiesList.add(propertyProperties);
                            }
                        }                                            
                        result.add(modMap);
@@ -77,7 +78,7 @@
        int indexOfDot = propertyName.indexOf('.');
        if (indexOfDot>=0) {
            String prefix = propertyName.substring(0, indexOfDot);
            String remainingPart = propertyName.substring(indexOfDot + 1);
            String remainingPart = propertyName.substring(indexOfDot + 1);
            return createReferredPropertyInfo(fieldName, declaringClass.getDeclaredField(prefix).getDeclaringClass(), remainingPart);
        } else {
            Map<String, Object> result = new HashMap<String, Object>();