Search in sources :

Example 1 with ClassException

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;
}
Also used : ComponentScope(lucee.runtime.ComponentScope) ClassException(lucee.commons.lang.ClassException) Property(lucee.runtime.component.Property)

Example 2 with ClassException

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;
}
Also used : Entry(java.util.Map.Entry) TypeEntry(org.apache.axis.wsdl.symbolTable.TypeEntry) PhysicalClassLoader(lucee.commons.lang.PhysicalClassLoader) ArrayList(java.util.ArrayList) ClassException(lucee.commons.lang.ClassException) PropertyImpl(lucee.runtime.component.PropertyImpl) IOException(java.io.IOException) Property(lucee.runtime.component.Property) Key(lucee.runtime.type.Collection.Key)

Example 3 with ClassException

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;
    }
}
Also used : PageException(lucee.runtime.exp.PageException) ClassException(lucee.commons.lang.ClassException) ThreadLocalPageContext(lucee.runtime.engine.ThreadLocalPageContext) PageContext(lucee.runtime.PageContext) Component(lucee.runtime.Component)

Example 4 with ClassException

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);
}
Also used : LinkedHashMap(java.util.LinkedHashMap) HashMap(java.util.HashMap) ServletConfig(javax.servlet.ServletConfig) ThreadLocalConfig(lucee.runtime.engine.ThreadLocalConfig) Element(org.w3c.dom.Element) ClassException(lucee.commons.lang.ClassException) ClassDefinition(lucee.runtime.db.ClassDefinition) Struct(lucee.runtime.type.Struct) DumpWriterEntry(lucee.runtime.dump.DumpWriterEntry) Entry(java.util.Map.Entry) GatewayEntry(lucee.runtime.gateway.GatewayEntry) Iterator(java.util.Iterator) ArrayList(java.util.ArrayList) List(java.util.List) BundleException(org.osgi.framework.BundleException) IOException(java.io.IOException) Method(java.lang.reflect.Method) lucee.aprint(lucee.aprint) InvocationTargetException(java.lang.reflect.InvocationTargetException) ClassDefinitionImpl(lucee.transformer.library.ClassDefinitionImpl) CacheConnectionImpl(lucee.runtime.cache.CacheConnectionImpl) CFXTagClass(lucee.runtime.cfx.customtag.CFXTagClass) CPPCFXTagClass(lucee.runtime.cfx.customtag.CPPCFXTagClass) JavaCFXTagClass(lucee.runtime.cfx.customtag.JavaCFXTagClass) ServerCacheConnection(lucee.runtime.cache.ServerCacheConnection) Map(java.util.Map) LinkedHashMap(java.util.LinkedHashMap) HashMap(java.util.HashMap) ServerCacheConnection(lucee.runtime.cache.ServerCacheConnection) CacheConnection(lucee.runtime.cache.CacheConnection)

Example 5 with ClassException

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());
}
Also used : ClassException(lucee.commons.lang.ClassException) CacheHandler(lucee.runtime.cache.tag.CacheHandler)

Aggregations

ClassException (lucee.commons.lang.ClassException)15 BundleException (org.osgi.framework.BundleException)4 ArrayList (java.util.ArrayList)3 ResourceProvider (lucee.commons.io.res.ResourceProvider)3 CompressResourceProvider (lucee.commons.io.res.type.compress.CompressResourceProvider)3 PageException (lucee.runtime.exp.PageException)3 IOException (java.io.IOException)2 HashMap (java.util.HashMap)2 Map (java.util.Map)2 Entry (java.util.Map.Entry)2 Property (lucee.runtime.component.Property)2 ClassDefinition (lucee.runtime.db.ClassDefinition)2 ApplicationException (lucee.runtime.exp.ApplicationException)2 SecurityException (lucee.runtime.exp.SecurityException)2 TransformerException (lucee.transformer.TransformerException)2 InvocationTargetException (java.lang.reflect.InvocationTargetException)1 Method (java.lang.reflect.Method)1 Iterator (java.util.Iterator)1 LinkedHashMap (java.util.LinkedHashMap)1 List (java.util.List)1