package xapi.util.impl;
import java.security.AccessController;
import java.security.PrivilegedAction;
import xapi.annotation.compile.MagicMethod;
import xapi.annotation.inject.SingletonDefault;
import xapi.util.X_Namespace;
import xapi.util.service.PropertyService;
@SingletonDefault(implFor=PropertyService.class)
public class PropertyServiceDefault implements PropertyService{
@Override
@MagicMethod(doNotVisit=true)
public String getProperty(final String key) {
return System.getProperty(key, null);
}
@Override
@MagicMethod(doNotVisit=true)
public String getProperty(final String key, final String dflt) {
return System.getProperty(key, dflt);
}
@Override
public void setProperty(final String key, final String value) {
if (System.getSecurityManager()==null) {
System.setProperty(key, value);
} else {
AccessController.doPrivileged(new PrivilegedAction<Void>() {
@Override
public Void run() {
System.setProperty(key, value);
return null;
}
});
}
}
@Override
public boolean isRuntimeInjection() {
return !"false".equals(getProperty(X_Namespace.PROPERTY_USE_X_INJECT));
}
}