Skip to content

Commit

Permalink
Improved and moved the Metadata util to the Beany module.
Browse files Browse the repository at this point in the history
  • Loading branch information
nmihajlovski committed Jan 18, 2015
1 parent 0ca0d94 commit 1016d3f
Show file tree
Hide file tree
Showing 9 changed files with 35 additions and 21 deletions.
Expand Up @@ -27,6 +27,7 @@

import org.rapidoid.annotation.Scaffold;
import org.rapidoid.beany.Beany;
import org.rapidoid.beany.Metadata;
import org.rapidoid.db.DB;
import org.rapidoid.html.Cmd;
import org.rapidoid.html.Tag;
Expand All @@ -41,7 +42,6 @@
import org.rapidoid.security.Secure;
import org.rapidoid.util.Cls;
import org.rapidoid.util.Conf;
import org.rapidoid.util.Metadata;
import org.rapidoid.util.U;

public class AppPageGeneric extends AppGUI {
Expand Down
Expand Up @@ -25,9 +25,9 @@
import java.util.Map;
import java.util.Map.Entry;

import org.rapidoid.beany.Metadata;
import org.rapidoid.security.annotation.DevMode;
import org.rapidoid.util.Arr;
import org.rapidoid.util.Metadata;

public class AppScreens implements Comparator<Class<?>> {

Expand Down
5 changes: 5 additions & 0 deletions rapidoid-beany/src/main/java/org/rapidoid/beany/BeanProp.java
Expand Up @@ -243,6 +243,11 @@ public void setDefaultValue(Object defaultValue) {
this.defaultValue = defaultValue;
}

@Override
public Class<?> getDeclaringType() {
return declaringType;
}

@Override
public String toString() {
return declaringType.getSimpleName() + "#" + name + ":" + type.getSimpleName();
Expand Down
5 changes: 5 additions & 0 deletions rapidoid-beany/src/main/java/org/rapidoid/beany/MapProp.java
Expand Up @@ -138,4 +138,9 @@ public Class<?> getRawTypeArg(int index) {
throw U.rte("No type args available!");
}

@Override
public Class<?> getDeclaringType() {
return null;
}

}
@@ -1,9 +1,10 @@
package org.rapidoid.util;
package org.rapidoid.beany;

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.util.Map;

import org.rapidoid.util.U;

/*
* #%L
* rapidoid-utils
Expand Down Expand Up @@ -41,25 +42,26 @@ public static <T extends Annotation> T classAnnotation(Class<?> clazz, Class<T>
return (T) classAnnotations(clazz).get(annotationClass);
}

public static Map<Class<?>, Annotation> fieldAnnotations(Class<?> clazz, String fieldName) {
public static Map<Class<?>, Annotation> propAnnotations(Class<?> clazz, String property) {

Field field = Cls.getField(clazz, fieldName);
Map<Class<?>, Annotation> annotations = U.map();
Prop prop = Beany.property(clazz, property, false);

for (Annotation ann : field.getDeclaringClass().getAnnotations()) {
annotations.put(ann.annotationType(), ann);
}

for (Annotation ann : field.getAnnotations()) {
annotations.put(ann.annotationType(), ann);
if (prop != null) {
for (Annotation ann : prop.getDeclaringType().getAnnotations()) {
annotations.put(ann.annotationType(), ann);
}
for (Annotation ann : prop.getAnnotations()) {
annotations.put(ann.annotationType(), ann);
}
}

return annotations;
}

@SuppressWarnings("unchecked")
public static <T extends Annotation> T fieldAnnotation(Class<?> clazz, String fieldName, Class<T> annotationClass) {
return (T) fieldAnnotations(clazz, fieldName).get(annotationClass);
public static <T extends Annotation> T propAnnotation(Class<?> clazz, String property, Class<T> annotationClass) {
return (T) propAnnotations(clazz, property).get(annotationClass);
}

public static boolean isAnnotated(Class<?> target, Class<?> annotation) {
Expand Down
2 changes: 2 additions & 0 deletions rapidoid-beany/src/main/java/org/rapidoid/beany/Prop.java
Expand Up @@ -61,4 +61,6 @@ public interface Prop {

Class<?> getRawTypeArg(int index);

Class<?> getDeclaringType();

}
Expand Up @@ -24,14 +24,14 @@
import java.util.concurrent.ConcurrentMap;

import org.rapidoid.annotation.Relation;
import org.rapidoid.beany.Metadata;
import org.rapidoid.db.DB;
import org.rapidoid.db.DbColumn;
import org.rapidoid.db.DbList;
import org.rapidoid.db.DbRef;
import org.rapidoid.db.DbSet;
import org.rapidoid.db.Entity;
import org.rapidoid.util.Cls;
import org.rapidoid.util.Metadata;
import org.rapidoid.util.U;

public class EntityImpl implements Entity {
Expand Down
Expand Up @@ -28,6 +28,7 @@
import java.util.Set;

import org.rapidoid.beany.Beany;
import org.rapidoid.beany.Metadata;
import org.rapidoid.security.annotation.Admin;
import org.rapidoid.security.annotation.LoggedIn;
import org.rapidoid.security.annotation.Manager;
Expand All @@ -37,7 +38,6 @@
import org.rapidoid.util.CommonRoles;
import org.rapidoid.util.Conf;
import org.rapidoid.util.Constants;
import org.rapidoid.util.Metadata;
import org.rapidoid.util.U;

public class AppSecurity implements Constants {
Expand Down
Expand Up @@ -24,13 +24,13 @@
import java.util.List;
import java.util.Map;

import org.rapidoid.beany.Metadata;
import org.rapidoid.security.annotation.CanChange;
import org.rapidoid.security.annotation.CanDelete;
import org.rapidoid.security.annotation.CanInsert;
import org.rapidoid.security.annotation.CanRead;
import org.rapidoid.util.AppCtx;
import org.rapidoid.util.Constants;
import org.rapidoid.util.Metadata;
import org.rapidoid.util.U;
import org.rapidoid.util.UserInfo;

Expand Down Expand Up @@ -113,10 +113,10 @@ public static DataPermissions getPropertyPermissions(String username, Class<?> c
return DataPermissions.NONE;
}

CanRead canRead = Metadata.fieldAnnotation(clazz, propertyName, CanRead.class);
CanInsert canInsert = Metadata.fieldAnnotation(clazz, propertyName, CanInsert.class);
CanChange canChange = Metadata.fieldAnnotation(clazz, propertyName, CanChange.class);
CanDelete canDelete = Metadata.fieldAnnotation(clazz, propertyName, CanDelete.class);
CanRead canRead = Metadata.propAnnotation(clazz, propertyName, CanRead.class);
CanInsert canInsert = Metadata.propAnnotation(clazz, propertyName, CanInsert.class);
CanChange canChange = Metadata.propAnnotation(clazz, propertyName, CanChange.class);
CanDelete canDelete = Metadata.propAnnotation(clazz, propertyName, CanDelete.class);

if (canRead == null && canInsert == null && canChange == null && canDelete == null) {
return DataPermissions.ALL;
Expand Down

0 comments on commit 1016d3f

Please sign in to comment.