[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] @DeclareParents disallowed
|
I think the semantic of @DeclareParent usage has changed. Please consult the last version of
Developer Notebook.
./alex
--
.w( the_mindstorm )p.
#: Raoul Pierre changed the world a bit at a time by saying on 11/18/2005 12:08 PM :#
Hello,
I'm trying to set a DeclareParents annotation with an around advice (see
code below) and I get this error:
The annotation @DeclareParents is disallowed for this location
Is it possible to do such a thing? Or what did I do wrong?
I use Eclipse and AJDT under Windows XP
Regards
Pierre
package com.uwyn.ecalendar.aop;
import java.util.Locale;
import javax.servlet.http.HttpSession;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.DeclareParents;
import com.uwyn.rife.engine.ElementContext;
import com.uwyn.rife.engine.ElementSupport;
@Aspect
public class Localization {
public interface Localized {
public static final String PARAM_SESSION_LANGUAGE =
"sessionLanguage"; // $NON-NLS-1$
public static final String PARAM_SESSION_COUNTRY =
"sessionCountry"; // $NON-NLS-1$
public Void setLocale(Locale locale);
public Locale getLocale();
};
@DeclareParents("com.uwyn.rife.engine.ElementSupport")
class LocalizedImpl implements Localized {
private static final String EMPTY_STRING = ""; // $NON-NLS-1$
private Locale locale = null;
private HttpSession session = null;
{
this.session = ElementContext.getActiveElement()
.getHttpServletRequest()
.getSession(false);
if (this.session != null) {
String sessionLanguage = (String)
this.session.getAttribute(PARAM_SESSION_LANGUAGE);
if ((sessionLanguage != null) && (!
sessionLanguage.equals(EMPTY_STRING))) {
String sessionCountry = (String)
this.session.getAttribute(PARAM_SESSION_COUNTRY);
this.locale = new Locale(sessionLanguage,
sessionCountry);
}
}
}
public Void setLocale (Locale locale) {
this.locale = locale;
if (this.session != null) {
if (this.locale != null) {
this.session.setAttribute(PARAM_SESSION_LANGUAGE,
locale.getLanguage());
this.session.setAttribute(PARAM_SESSION_COUNTRY,
locale.getCountry());
}
else {
this.session.removeAttribute(PARAM_SESSION_LANGUAGE);
this.session.removeAttribute(PARAM_SESSION_COUNTRY);
}
}
else {
if (locale != null) {
this.session = ElementContext.getActiveElement()
.getHttpServletRequest()
.getSession(true);
this.session.setAttribute(PARAM_SESSION_LANGUAGE,
locale.getLanguage());
this.session.setAttribute(PARAM_SESSION_COUNTRY,
locale.getCountry());
}
}
}
public Locale getLocale() {
Locale userLocale = this.locale;
if (userLocale == null) {
userLocale =
ElementContext.getActiveElement().getRequestLocale();
}
return userLocale;
}
}
@Around("execution(public static String
com.uwyn.rife.config.RifeConfig.Tools.getDefaultLanguage())" +
" && this(localized)")
public Object getDefaultLanguage(ProceedingJoinPoint thisJoinPoint,
Localized localized)
throws Throwable{
return localized.getLocale().getLanguage();
}
}
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users
!DSPAM:437da8ec572649624381582!