play.data.binding.BindingAnnotations Maven / Gradle / Ivy
package play.data.binding;
import play.data.binding.As;
import play.data.binding.NoBinding;
import java.lang.annotation.Annotation;
class BindingAnnotations {
public final Annotation[] annotations;
private String[] profiles = null;
private String[] noBindingProfiles = null;
public BindingAnnotations() {
this.annotations = null;
}
public BindingAnnotations(Annotation[] annotations) {
this.annotations = annotations;
}
public BindingAnnotations(Annotation[] annotations, String[] profiles) {
this.annotations = annotations;
this.profiles = profiles;
}
public String[] getProfiles() {
if (profiles != null) {
return profiles;
}
if (annotations != null) {
for (Annotation annotation : annotations) {
if (annotation.annotationType().equals(As.class)) {
As as = ((As) annotation);
profiles = as.value();
}
if (annotation.annotationType().equals(NoBinding.class)) {
NoBinding bind = ((NoBinding) annotation);
profiles = bind.value();
}
}
}
if (profiles==null) {
profiles = new String[0];
}
return profiles;
}
private String[] getNoBindingProfiles() {
if (noBindingProfiles!=null) {
return noBindingProfiles;
}
if (annotations != null) {
for (Annotation annotation : annotations) {
if (annotation.annotationType().equals(NoBinding.class)) {
NoBinding bind = ((NoBinding) annotation);
noBindingProfiles = bind.value();
}
}
}
if (noBindingProfiles==null) {
noBindingProfiles = new String[0];
}
return noBindingProfiles;
}
public boolean checkNoBinding() {
final String[] _profiles = getProfiles();
final String[] _noBindingProfiles = getNoBindingProfiles();
if (_noBindingProfiles.length>0) {
for (String l : _noBindingProfiles) {
if ("*".equals(l)) {
return true;
}
if (_profiles.length>0) {
for (String p : _profiles) {
if (l.equals(p) || "*".equals(p)) {
return true;
}
}
}
}
}
return false;
}
}