/** * Get the component property provider. */ public INFPropertyProvider getComponentPropertyProvider() { if(compprovider==null) { this.compprovider = new NFPropertyProvider(getComponent().getComponentIdentifier().getParent(), getComponent()); } return compprovider; }
/** * Get external feature facade. */ public <T> T getExternalFacade(Object context) { T ret = null; if(context instanceof IService) { // IServiceIdentifier sid = (IServiceIdentifier)context; ret = (T)getProvidedServicePropertyProvider(((IService)context).getServiceIdentifier()); } else { ret = (T)getComponentPropertyProvider(); } return ret; }
Class<?> superclazz = ser.getServiceIdentifier().getServiceType().getType(getComponent().getClassLoader()); while(superclazz != null && !Object.class.equals(superclazz)) addNFProperties(sclazz.getAnnotation(NFProperties.class), ser).addResultListener(lis); cnt++; addNFMethodProperties(meths.get(key).getAnnotation(NFProperties.class), ser, key).addResultListener(lis); cnt++;
/** * Add nf properties from a type. */ public IFuture<Void> addNFProperties(NFProperties nfprops, IService ser) { Future<Void> ret = new Future<Void>(); INFMixedPropertyProvider prov = getProvidedServicePropertyProvider(ser.getServiceIdentifier()); CounterResultListener<Void> lis = new CounterResultListener<Void>(nfprops.value().length, new DelegationResultListener<Void>(ret)); for(NFProperty nfprop : nfprops.value()) { Class<?> clazz = nfprop.value(); INFProperty<?, ?> prop = AbstractNFProperty.createProperty(clazz, getComponent(), ser, null, SNameValue.createUnparsedExpressionsList(nfprop.parameters())); prov.addNFProperty(prop).addResultListener(lis); } return ret; }
List<NFPropertyInfo> nfprops = getComponent().getModel().getNFProperties(); if(nfprops!=null) Class<?> clazz = nfprop.getClazz().getType(getComponent().getClassLoader(), getComponent().getModel().getAllImports()); INFProperty<?, ?> nfp = AbstractNFProperty.createProperty(clazz, getComponent(), null, null, nfprop.getParameters()); cnt++; getComponentPropertyProvider().addNFProperty(nfp).addResultListener(lis); getComponent().getLogger().warning("Property creation problem: "+e);
/** * Init the non-functional properties (todo: move to other location?) */ protected IFuture<Void> initNFProperties() { if(getInternalAccess().getComponentFeature0(INFPropertyComponentFeature.class)!=null) { INFPropertyComponentFeature nfcf = getInternalAccess().getComponentFeature(INFPropertyComponentFeature.class); IProvidedServicesFeature psf = getInternalAccess().getComponentFeature(IProvidedServicesFeature.class); IInternalService ser = (IInternalService)getInternalAccess().getComponentFeature(IProvidedServicesFeature.class).getProvidedService(type); Class<?> impltype = psf.getProvidedServiceRawImpl(ser.getServiceIdentifier())!=null? psf.getProvidedServiceRawImpl(ser.getServiceIdentifier()).getClass(): null; // todo: make internal interface for initProperties return ((NFPropertyComponentFeature)nfcf).initNFProperties(ser, impltype); } else { return IFuture.DONE; } }
/** * Add nf properties from a type. */ public IFuture<Void> addNFMethodProperties(NFProperties nfprops, IService ser, MethodInfo mi) { Future<Void> ret = new Future<Void>(); INFMixedPropertyProvider prov = getProvidedServicePropertyProvider(ser.getServiceIdentifier()); CounterResultListener<Void> lis = new CounterResultListener<Void>(nfprops.value().length, new DelegationResultListener<Void>(ret)); for(NFProperty nfprop : nfprops.value()) { Class<?> clazz = ((NFProperty)nfprop).value(); INFProperty<?, ?> prop = AbstractNFProperty.createProperty(clazz, getComponent(), ser, mi, SNameValue.createUnparsedExpressionsList(nfprop.parameters())); prov.addMethodNFProperty(mi, prop).addResultListener(lis); } return ret; }
/** * Get the provided service property provider for a service. */ public INFMixedPropertyProvider getProvidedServicePropertyProvider(IServiceIdentifier sid) { INFMixedPropertyProvider ret = null; if(proserprops==null) { proserprops = new HashMap<IServiceIdentifier, INFMixedPropertyProvider>(); } ret = proserprops.get(sid); if(ret==null) { ret = new NFMethodPropertyProvider(getComponent().getComponentIdentifier(), getComponent()); proserprops.put(sid, ret); } return ret; }
if(ret==null) ret = new NFMethodPropertyProvider(null, getComponent()); reqserprops.put(sid, ret);