+/*
+ * Copyright (C) 2007-2012 Mathieu Baudier
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.argeo.server.dao;
import java.beans.PropertyEditor;
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.argeo.server.ArgeoServerException;
+import org.argeo.ArgeoException;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.InitializingBean;
-import org.springframework.beans.factory.generic.GenericBeanFactoryAccessor;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.core.io.Resource;
private List<String> scannedPackages = new ArrayList<String>();
- private List<Resource> workbooks = new ArrayList<Resource>();
+ private List<Resource> resources = new ArrayList<Resource>();
private Map<Class<?>, PropertyEditor> customEditors = new HashMap<Class<?>, PropertyEditor>();;
}
public void init() {
- // used to resolve inner references
- // Map<String, List<Object>> tempRefs = new HashMap<String,
- // List<Object>>();
+ for (PropertyEditor propertyEditor : customEditors.values())
+ if (propertyEditor instanceof LightDaoAware) {
+ ((LightDaoAware) propertyEditor).setLightDaoSupport(this);
+ }
+ // Load data
List<Reference> references = new ArrayList<Reference>();
- for (Resource res : workbooks) {
+ for (Resource res : resources) {
InputStream in = null;
try {
in = res.getInputStream();
load(in, references);
} catch (Exception e) {
- throw new ArgeoServerException("Cannot load stream", e);
+ throw new ArgeoException("Cannot load stream", e);
} finally {
IOUtils.closeQuietly(in);
}
@SuppressWarnings("unchecked")
public <T> T getByKey(Class<T> clss, Object key) {
+ if (key == null)
+ throw new ArgeoException("Key is null for " + clss);
return (T) model.get(findClass(clss)).get(key);
}
return res;
}
- @SuppressWarnings("unchecked")
+ @SuppressWarnings({ "unchecked", "rawtypes" })
public <T> List<T> list(Class<T> clss, Object filter) {
List<T> res = new ArrayList<T>();
res.addAll((Collection<T>) model.get(classToUse).values());
if (applicationContext != null)
- res.addAll(new GenericBeanFactoryAccessor(applicationContext)
- .getBeansOfType(clss).values());
+ res.addAll(applicationContext.getBeansOfType(clss).values());
return res;
}
- @SuppressWarnings("unchecked")
+ @SuppressWarnings({ "unchecked", "rawtypes" })
protected Class findClass(Class parent) {
if (model.containsKey(parent))
return parent;
return scannedPackages;
}
- public void setWorkbooks(List<Resource> workbooks) {
- this.workbooks = workbooks;
+ public void setResources(List<Resource> workbooks) {
+ this.resources = workbooks;
}
- public List<Resource> getWorkbooks() {
- return workbooks;
+ public List<Resource> getResources() {
+ return resources;
}
public void setClassLoader(ClassLoader classLoader) {