package org.camunda.bpm.extension.osgi.application.impl;
import java.beans.FeatureDescriptor;
import java.util.Iterator;
import java.util.Set;
import org.camunda.bpm.engine.impl.javax.el.ELContext;
import org.camunda.bpm.engine.impl.javax.el.ELResolver;
import org.osgi.service.blueprint.container.BlueprintContainer;
public class BlueprintBundleLocalELResolver extends ELResolver {
private BlueprintContainer blueprintContainer;
@Override
public Class<?> getCommonPropertyType(ELContext context, Object base) {
return Object.class;
}
@Override
public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
return null;
}
@Override
public Class<?> getType(ELContext context, Object base, Object property) {
return Object.class;
}
@Override
public Object getValue(ELContext context, Object base, Object property) {
if(base == null){
Set<String> componentIds = getBlueprintContainer().getComponentIds();
if(componentIds.contains(property.toString())){
context.setPropertyResolved(true);
return getBlueprintContainer().getComponentInstance(property.toString());
}
}
return null;
}
@Override
public boolean isReadOnly(ELContext context, Object base, Object property) {
return false;
}
@Override
public void setValue(ELContext context, Object base, Object property, Object value) {
}
public void setBlueprintContainer(BlueprintContainer blueprintContainer) {
this.blueprintContainer = blueprintContainer;
}
public BlueprintContainer getBlueprintContainer(){
return blueprintContainer;
}
}