[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-1584) @Logger and Spring beans
by Magnus Heino (JIRA)
@Logger and Spring beans
------------------------
Key: JBSEAM-1584
URL: http://jira.jboss.com/jira/browse/JBSEAM-1584
Project: JBoss Seam
Issue Type: Feature Request
Components: Spring
Affects Versions: 2.0.0.BETA1
Reporter: Magnus Heino
It would be nice if spring beans could be scanned for @Logger and injected with Log instances just like seam components.
Using the code below, you can add this to applicationContext.xml...
<bean class="org.jboss.seam.ioc.spring.LoggerPostProcessor" />
...to have all spring beans scanned for @Logger and have a Log instance injected, just like seam components. Then you can access the same context and log functionallity in your spring beans as in your seam components.
I guess the seam spring namespace could be extended with <seam:logger/> to make it even more simple to use.
package org.jboss.seam.ioc.spring;
import java.lang.reflect.Field;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.log.Logging;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.util.ReflectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.util.ReflectionUtils.FieldCallback;
public class LoggerPostProcessor implements BeanPostProcessor {
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
public Object postProcessBeforeInitialization(final Object bean, final String beanName) throws BeansException {
ReflectionUtils.doWithFields(bean.getClass(), new FieldCallback() {
public void doWith(Field field) throws IllegalArgumentException, IllegalAccessException {
if (field.isAnnotationPresent(Logger.class)) {
String category = field.getAnnotation(Logger.class).value();
if(!StringUtils.hasText(category)) {
category = bean.getClass().getName();
}
ReflectionUtils.makeAccessible(field);
field.set(bean, Logging.getLog(category));
}
}
});
return bean;
}
}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
16 years, 9 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-1484) Seam-gen should generate pages using templates relative to web application, not the pages themselves
by Dejan Krsmanovic (JIRA)
Seam-gen should generate pages using templates relative to web application, not the pages themselves
----------------------------------------------------------------------------------------------------
Key: JBSEAM-1484
URL: http://jira.jboss.com/jira/browse/JBSEAM-1484
Project: JBoss Seam
Issue Type: Patch
Components: Tools
Affects Versions: 1.3.0.ALPHA
Reporter: Dejan Krsmanovic
Priority: Minor
Attachments: seam-gen.txt
Seam-gen currently creates facelets xhtml pages having ui-composition element with template attribute specified relative to page itself. This is OK if all pages are stored in the root folder of web application. However, when you start refactoring and moving pages to separate folders you need to update template attribute in all ui-composition elements in moved pages.
So, I think seam-gen should generate pages with ui-composition element which references template relative to web-app, and not the page. In other words instead of:
<ui:composition ... template="layout/template.xhtml">
it should be:
<ui:composition ... template="/layout/template.xhtml">
With this change, you can move xhtml pages to any folder and template would still be referenced correctly.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
16 years, 9 months