From 56589672690a32a51b4fb1273133ffbe17f38739 Mon Sep 17 00:00:00 2001 From: rfeng Date: Tue, 3 Nov 2009 00:14:53 +0000 Subject: Merge changes from trunk so that OSGi remote services can be run with Equinox and Felix over tribes's multicast. This introduces a dependency on tuscany maven-bundle-plugin 1.0.5-SNAPSHOT and we should release it with M4. git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@832215 13f79535-47bb-0310-9956-ffa450edef68 --- .../osgi/impl/OSGiImplementationFactoryImpl.java | 73 ++++++++++++++++++++++ 1 file changed, 73 insertions(+) (limited to 'branches/sca-java-2.0-M4/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/impl/OSGiImplementationFactoryImpl.java') diff --git a/branches/sca-java-2.0-M4/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/impl/OSGiImplementationFactoryImpl.java b/branches/sca-java-2.0-M4/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/impl/OSGiImplementationFactoryImpl.java index 9fab65272f..2978e8e823 100644 --- a/branches/sca-java-2.0-M4/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/impl/OSGiImplementationFactoryImpl.java +++ b/branches/sca-java-2.0-M4/modules/implementation-osgi/src/main/java/org/apache/tuscany/sca/implementation/osgi/impl/OSGiImplementationFactoryImpl.java @@ -19,10 +19,15 @@ package org.apache.tuscany.sca.implementation.osgi.impl; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.implementation.osgi.OSGiImplementation; import org.apache.tuscany.sca.implementation.osgi.OSGiImplementationFactory; import org.apache.tuscany.sca.implementation.osgi.OSGiProperty; +import org.osgi.framework.ServiceReference; /** * @@ -40,4 +45,72 @@ public class OSGiImplementationFactoryImpl implements OSGiImplementationFactory return new OSGiPropertyImpl(); } + public OSGiProperty createOSGiProperty(String propName, String propValue, String propType) { + OSGiProperty prop = new OSGiPropertyImpl(); + if (propType == null) { + propType = "String"; + } + prop.setName(propName); + prop.setStringValue(propValue); + prop.setType(propType); + + Object value = propValue; + if ("Integer".equals(propType)) { + value = Integer.valueOf(propValue); + } else if ("Long".equals(propType)) { + value = Long.valueOf(propValue); + } else if ("Float".equals(propType)) { + value = Float.valueOf(propValue); + } else if ("Double".equals(propType)) { + value = Double.valueOf(propValue); + } else if ("Short".equals(propType)) { + value = Short.valueOf(propValue); + } else if ("Character".equals(propType)) { + value = propValue.charAt(0); + } else if ("Byte".equals(propType)) { + value = Byte.valueOf(propValue); + } else if ("Boolean".equals(propType)) { + value = Boolean.valueOf(propValue); + } else if ("String+".equals(propType)) { + value = propValue.split(" "); + } else { + // String + value = propValue; + } + prop.setValue(value); + return prop; + } + + public OSGiProperty createOSGiProperty(String propName, Object value) { + OSGiProperty prop = new OSGiPropertyImpl(); + prop.setName(propName); + prop.setValue(value); + + if (value instanceof String[]) { + StringBuffer sb = new StringBuffer(); + for (String s : (String[])value) { + sb.append(s).append(' '); + } + if (sb.length() > 0) { + sb.deleteCharAt(sb.length() - 1); + } + prop.setStringValue(sb.toString()); + prop.setType("String+"); + } else if (value != null) { + prop.setStringValue(String.valueOf(value)); + prop.setType(value.getClass().getSimpleName()); + } + return prop; + } + + public Collection createOSGiProperties(ServiceReference reference) { + List props = new ArrayList(); + for(String key: reference.getPropertyKeys()) { + Object value = reference.getProperty(key); + OSGiProperty prop = createOSGiProperty(key, value); + props.add(prop); + } + return props; + } + } -- cgit v1.2.3