0

在 Eclipse + AJDT 中,我实现了一个方法注释来检查授权,如下所示。

注解:

@Retention(RetentionPolicy.RUNTIME)
public @interface Secured {}

方面:

public aspect SecurityCheck {
  pointcut checkSecurity(Secured annotation) : execution(@Secured * *.*(..)) && @annotation(annotation);

  Object around(Secured annotation) throws PermissionException:
    checkSecurity(annotation) {
    ...
    if (...) throw new PermissionException();
    ...
    return proceed(annotation);
  }
}

用法:

@Secured
public void someMethod() {}

注释标记了应该应用方面的所有方法。Aspect 检查授权并抛出PermissionException失败。

但是,由于它是一个检查异常,someMethod()需要声明它:

@Secured
public void someMethod() throws PermissionException {}

Eclipse 不喜欢这样:里面没有东西someMethod()可以 throw PermissionException,所以它会抱怨。我必须做一个解决方法:

@Secured
public void someMethod() throws PermissionException {
  warn();
}

@SuppressWarnings("unused")
public static void warn() throws PermissionException {}

这让 Eclipse 很高兴,并且工作得很好。但是,warn()每次都调用只是为了让 Eclipse 闭嘴是相当丑陋的。

有什么可以做得更好?这是一个简单的 Eclipse 错误吗?

4

1 回答 1

0

我相信您在这里偶然发现了一个错误(https://bugs.eclipse.org/bugs/show_bug.cgi?id=240608),我相信它没有得到修复。

你需要它是一个检查异常吗?

于 2012-11-29T08:53:30.650 回答