/hostadmiral/trunk/src/ak/hostadmiral/core/model/UserManager.java |
---|
22,6 → 22,7 |
{ |
private UserStore store; |
private UserValidator userValidator; |
private Class[] passwordStores; |
private Collection createdListeners = new ArrayList(); |
private Collection modifiedListeners = new ArrayList(); |
45,14 → 46,10 |
User user = new User(); |
if(!user.mayChangeBoss(editor)) { // ordinal user can create only own "subusers" |
if(!user.mayChangeBoss(editor)) // ordinal user can create only own "subusers" |
user.setBoss(editor); |
} |
// FIXME: make this configurable |
user.addPasswordStore(new PasswordStoreMd5()); |
user.addPasswordStore(new PasswordStoreCrypt()); |
user.addPasswordStore(new PasswordStorePlain()); |
setUserPasswordStores(user); |
return user; |
} |
315,6 → 312,20 |
} |
} |
protected void setUserPasswordStores(User user) |
throws ModelException |
{ |
if(passwordStores == null) return; |
try { |
for(int i = 0; i < passwordStores.length; i++) |
user.addPasswordStore((PasswordStore)passwordStores[i].newInstance()); |
} |
catch(Exception ex) { |
throw new ModelException(ex); |
} |
} |
public static final Integer SORT_LOGIN = new Integer(1); |
public static final Comparator LOGIN_COMPARATOR = new LoginComparator(); |
380,14 → 391,22 |
try { |
userManager = this; |
Class c = Class.forName((String)params.get("store")); |
Class c = Class.forName(((String[])params.get("store"))[0]); |
store = (UserStore)c.newInstance(); |
String userValidatorName = (String)params.get("userValidator"); |
String[] userValidatorName = (String[])params.get("userValidator"); |
if(userValidatorName != null) { |
Class c2 = Class.forName(userValidatorName); |
Class c2 = Class.forName(userValidatorName[0]); |
userValidator = (UserValidator)c2.newInstance(); |
} |
String[] passwordStoreNames = (String[])params.get("passwordStore"); |
if(passwordStoreNames != null) { |
passwordStores = new Class[passwordStoreNames.length]; |
for(int i = 0; i < passwordStoreNames.length; i++) { |
passwordStores[i] = Class.forName(passwordStoreNames[i]); |
} |
} |
} |
catch(Exception ex) { |
throw new ModelException(ex); |
/hostadmiral/trunk/src/ak/hostadmiral/core/model/InetDomainManager.java |
---|
294,7 → 294,7 |
try { |
inetDomainManager = this; |
Class c = Class.forName((String)params.get("store")); |
Class c = Class.forName(((String[])params.get("store"))[0]); |
store = (InetDomainStore)c.newInstance(); |
} |
catch(Exception ex) { |
/hostadmiral/trunk/src/ak/hostadmiral/core/model/MailboxManager.java |
---|
23,6 → 23,7 |
InetDomainDeletingListener |
{ |
private MailboxStore store; |
private Class[] passwordStores; |
private Collection createdListeners = new ArrayList(); |
private Collection modifiedListeners = new ArrayList(); |
44,12 → 45,8 |
if(!allowedToCreate(editor)) throw new ModelSecurityException(); |
Mailbox mailbox = new Mailbox(); |
setMailboxPasswordStores(mailbox); |
// FIXME: make this configurable |
mailbox.addPasswordStore(new PasswordStoreMd5()); |
mailbox.addPasswordStore(new PasswordStoreCrypt()); |
mailbox.addPasswordStore(new PasswordStorePlain()); |
return mailbox; |
} |
315,6 → 312,20 |
return cascade; |
} |
protected void setMailboxPasswordStores(Mailbox mailbox) |
throws ModelException |
{ |
if(passwordStores == null) return; |
try { |
for(int i = 0; i < passwordStores.length; i++) |
mailbox.addPasswordStore((PasswordStore)passwordStores[i].newInstance()); |
} |
catch(Exception ex) { |
throw new ModelException(ex); |
} |
} |
public static final Integer SORT_LOGIN = new Integer(1); |
public static final Integer SORT_DOMAIN = new Integer(2); |
381,8 → 392,16 |
try { |
mailboxManager = this; |
Class c = Class.forName((String)params.get("store")); |
Class c = Class.forName(((String[])params.get("store"))[0]); |
store = (MailboxStore)c.newInstance(); |
String[] passwordStoreNames = (String[])params.get("passwordStore"); |
if(passwordStoreNames != null) { |
passwordStores = new Class[passwordStoreNames.length]; |
for(int i = 0; i < passwordStoreNames.length; i++) { |
passwordStores[i] = Class.forName(passwordStoreNames[i]); |
} |
} |
} |
catch(Exception ex) { |
throw new ModelException(ex); |
/hostadmiral/trunk/src/ak/hostadmiral/core/model/SystemUserManager.java |
---|
339,7 → 339,7 |
try { |
systemUserManager = this; |
Class c = Class.forName((String)params.get("store")); |
Class c = Class.forName(((String[])params.get("store"))[0]); |
store = (SystemUserStore)c.newInstance(); |
} |
catch(Exception ex) { |
/hostadmiral/trunk/src/ak/hostadmiral/core/model/MailAliasManager.java |
---|
326,7 → 326,7 |
try { |
mailAliasManager = this; |
Class c = Class.forName((String)params.get("store")); |
Class c = Class.forName(((String[])params.get("store"))[0]); |
store = (MailAliasStore)c.newInstance(); |
} |
catch(Exception ex) { |
/hostadmiral/trunk/src/ak/hostadmiral/core/model/MailAliasDestinationManager.java |
---|
119,7 → 119,7 |
try { |
mailAliasDestinationManager = this; |
Class c = Class.forName((String)params.get("store")); |
Class c = Class.forName(((String[])params.get("store"))[0]); |
store = (MailAliasDestinationStore)c.newInstance(); |
} |
catch(Exception ex) { |
/hostadmiral/trunk/src/ak/hostadmiral/core/config/ConfigRoot.java |
---|
2,6 → 2,7 |
import java.util.List; |
import java.util.ArrayList; |
import java.util.Iterator; |
import ak.hostadmiral.util.ModelException; |
public class ConfigRoot |
61,14 → 62,26 |
+ ", second - " + second.versionMajor); |
this.dataSource = dataSource.merge(second.dataSource); |
this.initializations.addAll(second.initializations); // FIXME: replace dublicates |
for(Iterator i = second.initializations.iterator(); i.hasNext(); ) { |
ConfigInitialization ci = (ConfigInitialization)i.next(); |
this.initializations.remove(ci); |
this.initializations.add(ci); |
} |
return this; |
} |
public String toString() |
{ |
StringBuffer initStr = new StringBuffer(); |
for(Iterator i = initializations.iterator(); i.hasNext(); ) { |
ConfigInitialization ci = (ConfigInitialization)i.next(); |
initStr.append(ci); |
} |
return "hostadmiral config v" + versionMajor + "." + versionMinor + "\n" |
+ dataSource + "\t" + initializations; |
+ dataSource + "\n\tinitializations:\n" + initStr.toString() + "end of config"; |
} |
} |
/hostadmiral/trunk/src/ak/hostadmiral/core/config/ConfigInitParam.java |
---|
1,12 → 1,13 |
package ak.hostadmiral.core.config; |
import java.util.Map; |
import java.util.HashMap; |
import java.util.Iterator; |
import java.util.List; |
import java.util.ArrayList; |
public class ConfigInitParam |
{ |
private String name; |
private String value; |
private List values = new ArrayList(); |
public String getName() |
{ |
18,18 → 19,25 |
this.name = name; |
} |
public String getValue() |
public List getValues() |
{ |
return value; |
return values; |
} |
public void setValue(String value) |
{ |
this.value = value; |
values.add(value); |
} |
public String toString() |
{ |
return "\t\t\tinit param " + name + "=" + value + " "; |
StringBuffer valuesStr = new StringBuffer(); |
for(Iterator i = values.iterator(); i.hasNext(); ) { |
String s = (String)i.next(); |
if(valuesStr.length() > 0) valuesStr.append(", "); |
valuesStr.append(s); |
} |
return "\t\t\t" + name + "=" + valuesStr + "\n"; |
} |
} |
/hostadmiral/trunk/src/ak/hostadmiral/core/config/ConfigInitialization.java |
---|
1,12 → 1,14 |
package ak.hostadmiral.core.config; |
import java.util.List; |
import java.util.Iterator; |
import java.util.ArrayList; |
public class ConfigInitialization |
{ |
private String className; |
private List params = new ArrayList(); // List(ConfigInitParam) |
private String className; |
private boolean ignore = false; |
private List params = new ArrayList(); // List(ConfigInitParam) |
public String getClassName() |
{ |
18,6 → 20,21 |
this.className = className; |
} |
public boolean getIgnore() |
{ |
return ignore; |
} |
public void setIgnore(boolean ignore) |
{ |
this.ignore = ignore; |
} |
public void setIgnore(String ignore) |
{ |
this.ignore = Boolean.valueOf(ignore).booleanValue(); |
} |
public List getInitParam() |
{ |
return params; |
28,8 → 45,33 |
params.add(param); |
} |
public boolean equals(Object obj) |
{ |
if(!(obj instanceof ConfigInitialization)) return false; |
ConfigInitialization second = (ConfigInitialization)obj; |
return (this.className != null && second.className != null |
&& this.className.equals(second.className)); |
} |
public int hashCode() |
{ |
if(className == null) |
return 0; |
else |
return className.hashCode(); |
} |
public String toString() |
{ |
return "\t\tinitialization " + className + ": " + params + "\n"; |
StringBuffer paramsStr = new StringBuffer(); |
for(Iterator i = params.iterator(); i.hasNext(); ) { |
ConfigInitParam p = (ConfigInitParam)i.next(); |
paramsStr.append(p); |
} |
return "\t\t" + className + (ignore ? " (ignore)" : "") + ":\n" |
+ paramsStr.toString() + "\n"; |
} |
} |
/hostadmiral/trunk/src/ak/hostadmiral/core/config/ConfigDataSource.java |
---|
88,7 → 88,8 |
return "\tdata source: " + type + "\n" |
+ "\t\tdriver: " + driver + "\n" |
+ "\t\tuserName: " + userName + "\n" |
+ "\t\tpassword: " + password + "\n" |
+ "\t\tpassword: " |
+ ((password == null || password.equals("")) ? "(not set)" : "(set)") + "\n" |
+ "\t\turl: " + url + "\n" |
+ "\t\tdialect: " + dialect + "\n"; |
} |
/hostadmiral/trunk/src/ak/hostadmiral/core/config/Configurator.java |
---|
53,15 → 53,15 |
try { |
// get config |
ConfigRoot defaultConfig = readConfig(defaultStream); |
logger.debug("Default:\n" + defaultConfig); |
logger.debug("default:\n" + defaultConfig); |
checkConfigVersion("default", defaultConfig); |
ConfigRoot userConfig = readConfig(userStream); |
logger.debug("User:\n" + userConfig); |
logger.debug("user:\n" + userConfig); |
checkConfigVersion("user", userConfig); |
config = defaultConfig.merge(userConfig); |
logger.debug("Result:\n" + config); |
logger.info("result config:\n" + config); |
} |
catch(Exception ex) { |
throw new ModelException("Cannot read config: " + ex); |
81,6 → 81,8 |
for(Iterator i = config.getInitialization().iterator(); i.hasNext(); ) { |
ConfigInitialization ci = (ConfigInitialization)i.next(); |
if(ci.getIgnore()) continue; |
// get class |
Class c = null; |
try { |
107,7 → 109,7 |
Map params = new HashMap(); |
for(Iterator j = ci.getInitParam().iterator(); j.hasNext(); ) { |
ConfigInitParam p = (ConfigInitParam)j.next(); |
params.put(p.getName(), p.getValue()); |
params.put(p.getName(), (String[])p.getValues().toArray(new String[0])); |
} |
o.init(params); |
143,6 → 145,8 |
ConfigInitialization.class); |
digester.addBeanPropertySetter("hostadmiral/initializations/initialization/class", |
"className"); |
digester.addBeanPropertySetter("hostadmiral/initializations/initialization/ignore", |
"ignore"); |
digester.addSetNext("hostadmiral/initializations/initialization", "addInitialization"); |
digester.addObjectCreate("hostadmiral/initializations/initialization/init-param", |