use of lucee.commons.lang.ClassException in project Lucee by lucee.
the class AxisCaster method _toPojo.
private static Pojo _toPojo(PageContext pc, Pojo pojo, TypeMapping tm, TypeEntry typeEntry, QName type, Component comp, Set<Object> done) throws PageException {
// print.ds();System.exit(0);
comp = ComponentSpecificAccess.toComponentSpecificAccess(Component.ACCESS_PRIVATE, comp);
ComponentScope scope = comp.getComponentScope();
// create Pojo
if (pojo == null) {
try {
pojo = (Pojo) ClassUtil.loadInstance(ComponentUtil.getComponentPropertiesClass(pc, comp));
} catch (ClassException e) {
throw Caster.toPageException(e);
}
}
// initialize Pojo
Property[] props = comp.getProperties(false, true, false, false);
_initPojo(pc, typeEntry, type, pojo, props, scope, comp, tm, done);
return pojo;
}
use of lucee.commons.lang.ClassException in project Lucee by lucee.
the class AxisCaster method _toPojo.
private static Pojo _toPojo(PageContext pc, Pojo pojo, TypeMapping tm, TypeEntry typeEntry, QName type, Struct sct, Set<Object> done) throws PageException {
// print.ds();System.exit(0);
if (pojo == null) {
try {
PhysicalClassLoader cl = (PhysicalClassLoader) pc.getConfig().getRPCClassLoader(false);
pojo = (Pojo) ClassUtil.loadInstance(ComponentUtil.getStructPropertiesClass(pc, sct, cl));
} catch (ClassException e) {
throw Caster.toPageException(e);
} catch (IOException e) {
throw Caster.toPageException(e);
}
}
// initialize
List<Property> props = new ArrayList<Property>();
Iterator<Entry<Key, Object>> it = sct.entryIterator();
Entry<Key, Object> e;
PropertyImpl p;
while (it.hasNext()) {
e = it.next();
p = new PropertyImpl();
p.setAccess(Component.ACCESS_PUBLIC);
p.setName(e.getKey().getString());
p.setType(e.getValue() == null ? "any" : Caster.toTypeName(e.getValue()));
props.add(p);
}
_initPojo(pc, typeEntry, type, pojo, props.toArray(new Property[props.size()]), sct, null, tm, done);
return pojo;
}
use of lucee.commons.lang.ClassException in project Lucee by lucee.
the class Caster method otherTypeToClass.
private static Class<?> otherTypeToClass(String type) throws PageException, ClassException {
PageContext pc = ThreadLocalPageContext.get();
PageException pe = null;
// try to load as cfc
if (pc != null) {
try {
Component c = pc.loadComponent(type);
return ComponentUtil.getComponentPropertiesClass(pc, c);
} catch (PageException e) {
pe = e;
}
}
// try to load as class
try {
return ClassUtil.loadClass(type);
} catch (ClassException ce) {
if (pe != null)
throw pe;
throw ce;
}
}
use of lucee.commons.lang.ClassException in project Lucee by lucee.
the class XMLConfigWebFactory method loadCache.
/*private static ClassDefinition matchJDBCBundle(Config config, ClassDefinition cd) {
if(!cd.isBundle()) {
if("org.hsqldb.jdbcDriver".equals(cd.getClassName()))
return new ClassDefinitionImpl<>(cd.getClassName(), "hypersonic.hsqldb", null, config.getIdentification());
if("org.gjt.mm.mysql.Driver".equals(cd.getClassName()))
return new ClassDefinitionImpl<>(cd.getClassName(), "com.mysql.jdbc", null, config.getIdentification());
if("org.h2.Driver".equals(cd.getClassName()))
return new ClassDefinitionImpl<>(cd.getClassName(), "org.h2", null, config.getIdentification());
if("net.sourceforge.jtds.jdbc.Driver".equals(cd.getClassName()))
return new ClassDefinitionImpl<>(cd.getClassName(), "jtds", null, config.getIdentification());
if("com.microsoft.jdbc.sqlserver.SQLServerDriver".equals(cd.getClassName()))
return new ClassDefinitionImpl<>(cd.getClassName(), "microsoft.sqljdbc", null, config.getIdentification());
}
return cd;
}*/
/**
* @param configServer
* @param config
* @param doc
*/
/**
* @param configServer
* @param config
* @param doc
*/
private static void loadCache(ConfigServerImpl configServer, ConfigImpl config, Document doc, Log log) {
boolean hasCS = configServer != null;
// load Cache info
{
Element parent = getChildByName(doc.getDocumentElement(), "caches");
Element[] children = getChildren(parent, "cache");
Map<String, ClassDefinition> map = new HashMap<String, ClassDefinition>();
// first add the server drivers, so they can be overwritten
if (configServer != null) {
Iterator<ClassDefinition> it = configServer.getCacheDefinitions().values().iterator();
ClassDefinition cd;
while (it.hasNext()) {
cd = it.next();
map.put(cd.getClassName(), cd);
}
}
ClassDefinition cd;
String label;
for (Element child : children) {
cd = getClassDefinition(child, "", config.getIdentification());
// check if it is a bundle
if (!cd.isBundle()) {
log.error("Datasource", "[" + cd + "] does not have bundle info");
continue;
}
map.put(cd.getClassName(), cd);
}
config.setCacheDefinitions(map);
}
Map<String, CacheConnection> caches = new HashMap<String, CacheConnection>();
boolean hasAccess = ConfigWebUtil.hasAccess(config, SecurityManagerImpl.TYPE_CACHE);
// print.o("LOAD CACHE:"+hasAccess+":"+hasCS);
Element eCache = getChildByName(doc.getDocumentElement(), "cache");
// has changes
String md5 = getMD5(eCache, hasCS ? configServer.getCacheMD5() : "");
if (md5.equals(config.getCacheMD5()))
return;
config.setCacheMD5(md5);
String[] typeNames = new String[] { "resource", "function", "include", "query", "template", "object", "file", "http", "webservice" };
int[] types = new int[] { ConfigImpl.CACHE_TYPE_RESOURCE, ConfigImpl.CACHE_TYPE_FUNCTION, ConfigImpl.CACHE_TYPE_INCLUDE, ConfigImpl.CACHE_TYPE_QUERY, ConfigImpl.CACHE_TYPE_TEMPLATE, ConfigImpl.CACHE_TYPE_OBJECT, ConfigImpl.CACHE_TYPE_FILE, ConfigImpl.CACHE_TYPE_HTTP, ConfigImpl.CACHE_TYPE_WEBSERVICE };
// default cache
for (int i = 0; i < types.length; i++) {
String def = getAttr(eCache, "default-" + typeNames[i]);
if (hasAccess && !StringUtil.isEmpty(def)) {
config.setCacheDefaultConnectionName(types[i], def);
} else if (hasCS) {
if (eCache.hasAttribute("default-" + typeNames[i]))
config.setCacheDefaultConnectionName(types[i], "");
else
config.setCacheDefaultConnectionName(types[i], configServer.getCacheDefaultConnectionName(types[i]));
} else
config.setCacheDefaultConnectionName(+types[i], "");
}
// cache connections
Element[] eConnections = getChildren(eCache, "connection");
// if(hasAccess) {
ClassDefinition cd;
String name;
CacheConnection cc;
// caches
if (hasAccess)
for (int i = 0; i < eConnections.length; i++) {
Element eConnection = eConnections[i];
name = getAttr(eConnection, "name");
cd = getClassDefinition(eConnection, "", config.getIdentification());
if (!cd.isBundle()) {
ClassDefinition _cd = config.getCacheDefinition(cd.getClassName());
if (_cd != null)
cd = _cd;
}
try {
Struct custom = toStruct(getAttr(eConnection, "custom"));
// Workaround for old EHCache class defintions
if (cd.getClassName() != null && cd.getClassName().endsWith(".EHCacheLite")) {
cd = new ClassDefinitionImpl("org.lucee.extension.cache.eh.EHCache");
if (!custom.containsKey("distributed"))
custom.setEL("distributed", "off");
if (!custom.containsKey("asynchronousReplicationIntervalMillis"))
custom.setEL("asynchronousReplicationIntervalMillis", "1000");
if (!custom.containsKey("maximumChunkSizeBytes"))
custom.setEL("maximumChunkSizeBytes", "5000000");
} else //
if (cd.getClassName() != null && (cd.getClassName().endsWith(".extension.io.cache.eh.EHCache") || cd.getClassName().endsWith("lucee.runtime.cache.eh.EHCache")))
cd = new ClassDefinitionImpl("org.lucee.extension.cache.eh.EHCache");
// else cacheClazz = cd.getClazz();
cc = new CacheConnectionImpl(config, name, cd, custom, Caster.toBooleanValue(getAttr(eConnection, "read-only"), false), Caster.toBooleanValue(getAttr(eConnection, "storage"), false));
if (!StringUtil.isEmpty(name)) {
caches.put(name.toLowerCase(), cc);
} else
SystemOut.print(config.getErrWriter(), "missing cache name");
} catch (ClassException ce) {
log.error("Cache", ce);
// SystemOut.print(config.getErrWriter(), ExceptionUtil.getStacktrace(ce, true));
} catch (BundleException be) {
log.error("Cache", be);
// SystemOut.print(config.getErrWriter(), ExceptionUtil.getStacktrace(be, true));
} catch (IOException e) {
log.error("Cache", e);
// SystemOut.print(config.getErrWriter(), ExceptionUtil.getStacktrace(e, true));
}
}
// }
// call static init once per driver
{
// group by classes
final Map<ClassDefinition, List<CacheConnection>> _caches = new HashMap<ClassDefinition, List<CacheConnection>>();
{
Iterator<Entry<String, CacheConnection>> it = caches.entrySet().iterator();
Entry<String, CacheConnection> entry;
List<CacheConnection> list;
while (it.hasNext()) {
entry = it.next();
cc = entry.getValue();
// Jira 3196 ?!
if (cc == null)
continue;
list = _caches.get(cc.getClassDefinition());
if (list == null) {
list = new ArrayList<CacheConnection>();
_caches.put(cc.getClassDefinition(), list);
}
list.add(cc);
}
}
// call
Iterator<Entry<ClassDefinition, List<CacheConnection>>> it = _caches.entrySet().iterator();
Entry<ClassDefinition, List<CacheConnection>> entry;
List<CacheConnection> list;
ClassDefinition _cd;
while (it.hasNext()) {
entry = it.next();
list = entry.getValue();
_cd = entry.getKey();
try {
Method m = _cd.getClazz().getMethod("init", new Class[] { Config.class, String[].class, Struct[].class });
if (Modifier.isStatic(m.getModifiers()))
m.invoke(null, new Object[] { config, _toCacheNames(list), _toArguments(list) });
else
SystemOut.print(config.getErrWriter(), "method [init(Config,String[],Struct[]):void] for class [" + _cd.toString() + "] is not static");
} catch (InvocationTargetException e) {
log.error("Cache", e.getTargetException());
} catch (RuntimeException e) {
log.error("Cache", e);
} catch (NoSuchMethodException e) {
log.error("Cache", "missing method [public static init(Config,String[],Struct[]):void] for class [" + _cd.toString() + "] ");
// SystemOut.print(config.getErrWriter(), "missing method [public static init(Config,String[],Struct[]):void] for class [" + _cd.toString() + "] ");
} catch (Throwable e) {
ExceptionUtil.rethrowIfNecessary(e);
log.error("Cache", e);
}
}
}
// Copy Parent caches as readOnly
if (hasCS) {
Map<String, CacheConnection> ds = configServer.getCacheConnections();
Iterator<Entry<String, CacheConnection>> it = ds.entrySet().iterator();
Entry<String, CacheConnection> entry;
while (it.hasNext()) {
entry = it.next();
cc = entry.getValue();
if (!caches.containsKey(entry.getKey()))
caches.put(entry.getKey(), new ServerCacheConnection(configServer, cc));
}
}
config.setCaches(caches);
}
use of lucee.commons.lang.ClassException in project Lucee by lucee.
the class ConfigImpl method addCacheHandler.
protected void addCacheHandler(String id, ClassDefinition<CacheHandler> cd) throws ClassException, BundleException {
Class<CacheHandler> clazz = cd.getClazz();
// just try to load and forget afterwards
Object o = ClassUtil.loadInstance(clazz);
if (o instanceof CacheHandler) {
addCacheHandler(id, clazz);
} else
throw new ClassException("object [" + Caster.toClassName(o) + "] must implement the interface " + CacheHandler.class.getName());
}
Aggregations