*Blocking issues due to android platform*

   - Thread.currentThread().getClassLoader() always return null on android.
   To fix this, i had to pass dalvik classLoader from the client side to all
   places in Tuscany's modules where classLoader is recquired.
   - ClassLoader.getResources() doesn't work neither under android. Dalvik's
   pathClassLoader may be a solution. But as we're working on a lightweight
   system, it'll surely be heavy to open stream on about 43 services files
   (needed to run calculator). Instead, i just set up system properties so that
   each service name will represent a system property and it's implementation
   class would be the property's value. This will involve no code refactoring
   on tuscany's modules as for resolving services, system properties are
   firstly checked.
   - org.w3c.Node implementation under android doesn't contain
   getTextContent method. I replaced all calls to it by getNodeValue().

*Current state*
Calculator-android can run till ContributionProcessor resolution. In other
words, definitions.xml loading's step is already performed. What I'm trying
to do now is to implement a an APKContributionProcessor for the new
PackageType.APK somehow like those existing for JAR and Folder
ContributionProcessors.

   - APK structure: An archive uncompressable with any archiver, which
   contain all resources attached to the sources, and a classes.dex file
   resulting from the dexification of all java sources. I guess artifacts i'll
   need to retrieve in the APKContributionProcessor will be the classes inside
   the classes.dex file.

*Long term: perspective*s
Instead of continuing with the current host-android or host-embedded ( i
don't know yet what's exactly inside), i suggest we rewrite it like an
android application that'll setup needed system properties on a world
readable way ( to make it available to any other android application), and
bootstrap at build time resources files into a given directory on the
android system. These resources files will be needed in addition to system
properties as we need to provide a description of all services (classname,
servicename, url).

*The Calculator-android project*
The one existing is targeting an older version of android sdk. I've just
recreated a new project, by importing services sources from the sample
calculator.

*List of needed tuscany's modules for running calculator-android*

*assembly-xml
> assembly-xsd
> binding-sca
> binding-sca-xml
> contribution
> contribution-impl
> contribution-java
> contribution-namespace
> contribution-xml
> core
> core-databinding
> core-spi
> databinding
> databinding-jaxb
> definitions
> definitions-xml
> endpoint
> extensibility
> implementation-java
> implementation-java-runtime
> implementation-java-xml
> implementation-node
> interface
> interface-java
> interface-java-jaxws
> interface-java-xml
> monitor
> node-api
> node-impl
> policy
> policy-xml
> policy-xml-ws
> sca-api
> sca-api-extension
> workspace
> workspace-impl
> workspace-xml
> xsd
> *


*Services and implementations used*
*
*

org.apache.tuscany.sca.node.SCANodeFactory,    ---->
org.apache.tuscany.sca.node.impl.NodeFactoryImpl,
org.apache.tuscany.sca.core.UtilityExtensionPoint,    ---->
org.apache.tuscany.sca.core.DefaultUtilityExtensionPoint,
org.apache.tuscany.sca.work.WorkScheduler,    ---->
org.apache.tuscany.sca.core.work.DefaultWorkScheduler,
org.apache.tuscany.sca.interfacedef.InterfaceContractMapper,    ---->
org.apache.tuscany.sca.interfacedef.impl.InterfaceContractMapperImpl,
org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint,    ---->
org.apache.tuscany.sca.contribution.DefaultModelFactoryExtensionPoint,
org.apache.tuscany.sca.invocation.MessageFactory,    ---->
org.apache.tuscany.sca.core.invocation.MessageFactoryImpl,
org.apache.tuscany.sca.core.invocation.ProxyFactoryExtensionPoint,    ---->
org.apache.tuscany.sca.core.invocation.DefaultProxyFactoryExtensionPoint,
org.apache.tuscany.sca.core.ModuleActivator,    ---->
org.apache.tuscany.sca.core.databinding.module.DataBindingModuleActivator,
org.apache.tuscany.sca.databinding.DataBindingExtensionPoint,    ---->
org.apache.tuscany.sca.databinding.DefaultDataBindingExtensionPoint,
org.apache.tuscany.sca.databinding.TransformerExtensionPoint,    ---->
org.apache.tuscany.sca.databinding.DefaultTransformerExtensionPoint,
org.apache.tuscany.sca.databinding.jaxb.XMLAdapterExtensionPoint,    ---->
org.apache.tuscany.sca.databinding.jaxb.DefaultXMLAdapterExtensionPoint,
org.apache.tuscany.sca.databinding.Mediator,    ---->
org.apache.tuscany.sca.databinding.impl.MediatorImpl,
org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory,    ---->
org.apache.tuscany.sca.interfacedef.java.DefaultJavaInterfaceFactory,
org.apache.tuscany.sca.runtime.RuntimeWireProcessorExtensionPoint,    ---->
org.apache.tuscany.sca.runtime.DefaultWireProcessorExtensionPoint,
org.apache.tuscany.sca.implementation.java.JavaImplementationFactory,
---->
org.apache.tuscany.sca.implementation.java.DefaultJavaImplementationFactory,
org.apache.tuscany.sca.context.PropertyValueFactory,    ---->
org.apache.tuscany.sca.implementation.java.injection.JavaPropertyValueObjectFactory,
org.apache.tuscany.sca.context.ContextFactoryExtensionPoint,    ---->
org.apache.tuscany.sca.context.DefaultContextFactoryExtensionPoint,
org.apache.tuscany.sca.provider.ProviderFactoryExtensionPoint,    ---->
org.apache.tuscany.sca.provider.DefaultProviderFactoryExtensionPoint,
org.apache.tuscany.sca.assembly.SCABindingFactory,    ---->
org.apache.tuscany.sca.binding.sca.impl.SCABindingFactoryImpl,
org.apache.tuscany.sca.contribution.ContributionFactory,    ---->
org.apache.tuscany.sca.contribution.DefaultContributionFactory,
org.apache.tuscany.sca.monitor.MonitorFactory,    ---->
org.apache.tuscany.sca.monitor.impl.DefaultMonitorFactoryImpl,
org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessorExtensionPoint,
---->
org.apache.tuscany.sca.contribution.processor.DefaultStAXArtifactProcessorExtensionPoint,
org.apache.tuscany.sca.contribution.processor.StAXAttributeProcessorExtensionPoint,
---->
org.apache.tuscany.sca.contribution.processor.DefaultStAXAttributeProcessorExtensionPoint,
org.apache.tuscany.sca.contribution.processor.URLArtifactProcessorExtensionPoint,
---->
org.apache.tuscany.sca.contribution.processor.DefaultURLArtifactProcessorExtensionPoint,
org.apache.tuscany.sca.contribution.processor.URLArtifactProcessor,    ---->
org.apache.tuscany.sca.assembly.xml.ComponentTypeDocumentProcessor,
org.apache.tuscany.sca.contribution.resolver.ModelResolverExtensionPoint,
---->
org.apache.tuscany.sca.contribution.resolver.DefaultModelResolverExtensionPoint,
org.apache.tuscany.sca.contribution.processor.PackageProcessorExtensionPoint,
---->
org.apache.tuscany.sca.contribution.processor.DefaultPackageProcessorExtensionPoint,
org.apache.tuscany.sca.contribution.service.ContributionListenerExtensionPoint,
---->
org.apache.tuscany.sca.contribution.service.DefaultContributionListenerExtensionPoint,
org.apache.tuscany.sca.endpointresolver.EndpointResolverFactoryExtensionPoint,
---->
org.apache.tuscany.sca.endpointresolver.DefaultEndpointResolverFactoryExtensionPoint,
org.apache.tuscany.sca.core.conversation.ConversationManager,    ---->
org.apache.tuscany.sca.core.conversation.ConversationManagerImpl,
org.apache.tuscany.sca.provider.SCADefinitionsProviderExtensionPoint,
---->
org.apache.tuscany.sca.provider.DefaultSCADefinitionsProviderExtensionPoint,
org.apache.tuscany.sca.provider.SCADefinitionsProvider,    ---->
org.apache.tuscany.sca.binding.sca.SCABindingDefinitionsProvider,
org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor,
----> org.apache.tuscany.sca.assembly.xml.ComponentTypeProcessor,
org.apache.tuscany.sca.implementation.node.NodeImplementationFactory,
---->
org.apache.tuscany.sca.implementation.node.impl.NodeImplementationFactoryImpl,
org.apache.tuscany.sca.contribution.processor.PackageProcessor,    ---->
org.apache.tuscany.sca.contribution.processor.impl.APKContributionProcessor,
org.apache.tuscany.sca.contribution.resolver.ModelResolver,    ---->
org.apache.tuscany.sca.assembly.xml.CompositeModelResolver,
org.apache.tuscany.sca.contribution.processor.ValidationSchema,
tuscany-sca.xsd,
org.apache.tuscany.sca.assembly.ExtensionFactory,    ---->
org.apache.tuscany.sca.assembly.DefaultExtensionFactory,
org.apache.tuscany.sca.contribution.service.ContributionListener,    ---->
org.apache.tuscany.sca.contribution.java.impl.JavaImportExportListener,
org.apache.tuscany.sca.contribution.java.ContributionClassloaderProviderExtensionPoint,
---->
org.apache.tuscany.sca.contribution.java.DefaultContributionClassloaderProviderExtensionPoint,
org.apache.tuscany.sca.contribution.java.ContributionClassLoaderProvider,
---->
org.apache.tuscany.sca.contribution.java.DefaultContributionClassLoaderProvider,
org.apache.tuscany.sca.assembly.EndpointFactory,    ---->
org.apache.tuscany.sca.assembly.DefaultEndpointFactory,
org.apache.tuscany.sca.provider.BindingProviderFactory,    ---->
org.apache.tuscany.sca.binding.sca.impl.RuntimeSCABindingProviderFactory,


*Coming soon*

   - Zip of the new calculator-android
   - Patch of all modifications on tuscany's modules

-- 
Best Regards

Lookman SANNI
http://blog.lookouster.org
MSBI Intern at Umanis Tours Services;

Reply via email to