A property file with a single property? Why have a property file in the first place?
On Wed, Oct 29, 2014 at 1:16 AM, Nipuni Perera <[email protected]> wrote: > Hi, > > @Azeez > I have updated the getOSGiService(Class clazz) method to > getOSGiService(Class clazz, Hashtable<String, String> props) so that we can > pass properties when access to osgi services registered under a specific > interface and matching a given filter. I have updated the name of the file > to carboncontext-osgi-services.properties. > I have used following syntax for the > carboncontext-osgi-services.properties file, > > allowed.osgi.services=\ > org.wso2.carbon.user.core.service.RealmService.class,\ > org.wso2.carbon.utils.ConfigurationContextService,\ > ... > > Thus I have used > allowedOSGiServices = > Arrays.asList(properties.get(CarbonConstants.OSGI_SERVICE_LIST).toString().split(",")); > > I will keep the 2 methods in PCC and add above methods to CC. We wanted to > improve above methods to use filters to access osgi services. I will update > the fix with your suggestions. > > Thanks, > Nipuni > > On Wed, Oct 29, 2014 at 1:20 PM, Afkham Azeez <[email protected]> wrote: > >> >> On Wed, Oct 29, 2014 at 12:41 AM, Afkham Azeez <[email protected]> wrote: >> >>> Here you go. This is the implementation we require. I have not tested >>> this but the logic flow should be correct. >>> >>> >>> /** >>> * Obtain the first OSGi service found for interface or class >>> <code>clazz</code> >>> * @param clazz The type of the OSGi service >>> * @return The OSGi service >>> */ >>> public Object getOSGiService(Class clazz) { >>> if(!allowedOSGiServices.contains(clazz.getName())) { >>> throw new SecurityException("OSGi service " + clazz + " >>> cannot be accessed via CarbonContext"); >>> } >>> BundleContext bundleContext = dataHolder.getBundleContext(); >>> ServiceTracker serviceTracker = new >>> ServiceTracker(bundleContext, clazz, null); >>> try { >>> serviceTracker.open(); >>> return serviceTracker.getServices()[0]; >>> } finally { >>> serviceTracker.close(); >>> } >>> } >>> >>> private static List<String> allowedOSGiServices = new >>> ArrayList<String>(); >>> >>> static { >>> FileInputStream fileInputStream = null; >>> String osgiServicesFilename = >>> CarbonUtils.getEtcCarbonConfigDirPath() + File.separator + >>> "carboncontext-osgi-services.properties"; >>> try { >>> Properties osgiServices = new Properties(); >>> if(new File(osgiServicesFilename).exists()) { // this file >>> is an optional file >>> fileInputStream = new >>> FileInputStream(osgiServicesFilename); >>> osgiServices.load(fileInputStream); >>> Set<String> propNames = >>> osgiServices.stringPropertyNames(); >>> for (String propName : propNames) { >>> allowedOSGiServices.add(propName); >>> >> >> Oops... bug here... here is the correct code: >> >> allowedOSGiServices.add(osgiServices.getProperty(propName)); >> >> >>> } >>> } >>> } catch (IOException e) { >>> log.fatal("Cannot load " + osgiServicesFilename, e); >>> } finally { >>> if(fileInputStream != null){ >>> try { >>> fileInputStream.close(); >>> } catch (IOException e) { >>> log.warn("Could not close FileInputStream of file " >>> + osgiServicesFilename, e); >>> } >>> } >>> } >>> } >>> >>> /** >>> * Obtain the OSGi services found for interface or class >>> <code>clazz</code> >>> * @param clazz The type of the OSGi service >>> * @return The List of OSGi services >>> */ >>> public List<Object> getOSGiServices(Class clazz) { >>> if(!allowedOSGiServices.contains(clazz.getName())) { >>> throw new SecurityException("OSGi service " + clazz + " >>> cannot be accessed via CarbonContext"); >>> } >>> BundleContext bundleContext = dataHolder.getBundleContext(); >>> ServiceTracker serviceTracker = new >>> ServiceTracker(bundleContext, clazz, null); >>> List<Object> services = new ArrayList<Object>(); >>> try { >>> serviceTracker.open(); >>> Collections.addAll(services, serviceTracker.getServices()); >>> } finally { >>> serviceTracker.close(); >>> } >>> return services; >>> } >>> >>> >> >> >> -- >> *Afkham Azeez* >> Director of Architecture; WSO2, Inc.; http://wso2.com >> Member; Apache Software Foundation; http://www.apache.org/ >> * <http://www.apache.org/>* >> *email: **[email protected]* <[email protected]> >> * cell: +94 77 3320919 <%2B94%2077%203320919>blog: * >> *http://blog.afkham.org* <http://blog.afkham.org> >> *twitter: **http://twitter.com/afkham_azeez* >> <http://twitter.com/afkham_azeez> >> *linked-in: **http://lk.linkedin.com/in/afkhamazeez >> <http://lk.linkedin.com/in/afkhamazeez>* >> >> *Lean . Enterprise . Middleware* >> > > > > -- > Nipuni Perera > Software Engineer; WSO2 Inc.; http://wso2.com > Email: [email protected] > Git hub profile: https://github.com/nipuni > Mobile: +94 (71) 5626680 > <http://wso2.com> > > -- *Afkham Azeez* Director of Architecture; WSO2, Inc.; http://wso2.com Member; Apache Software Foundation; http://www.apache.org/ * <http://www.apache.org/>* *email: **[email protected]* <[email protected]> * cell: +94 77 3320919blog: **http://blog.afkham.org* <http://blog.afkham.org> *twitter: **http://twitter.com/afkham_azeez* <http://twitter.com/afkham_azeez> *linked-in: **http://lk.linkedin.com/in/afkhamazeez <http://lk.linkedin.com/in/afkhamazeez>* *Lean . Enterprise . Middleware*
_______________________________________________ Dev mailing list [email protected] http://wso2.org/cgi-bin/mailman/listinfo/dev
