Hi Dimuthu et al, In the attributes you have given for all service types in current AF, I have following questions;
What is "Description" ? Is this the service description/document/interface definition (WSDL/WADL) ? or some human readable description ? @Saniva et al; IF there is NO such particular thing specific for HTTP or SOAP, we can maintain one service without having particular sub types and represent all with following attributes; (One disadvantage is anything required in future for a service type in wso2 and that is NOT common, those will have to be managed with the property bag). Advantage is, reduce the # meta models and APIs and having all services in one place. *vnd.wso2.service* Subtype Suffix Parameters Description Content Model Associations * xml/json version (default is “1”) Top level type for all services -String name -String namespace -String owner -String description -String createdDate -List Transport Protocols (http/s,jms,tcp,xmpp) - List Message Format (soap 1.1/1.2,xml) - List Grammar (XSDs; common to WSDL/WADL both) -List Message Encryption(ssl/ws-security,other) - List Documentation(URLs/inline strings) 1..n service versions 1..n contacts *vnd.wso2.version/service* Subtype Suffix Parameters Description Content Model Associations service List<String> Endpoints Object Security (Authentication UT,OAuth etc) ? 1..n endpoints *vnd.wso2.endpoint* Subtype Suffix Parameters Description Content Model Associations * Top level type for all endpoints String URL1..n service versions *vnd.wso2.contact* Subtype Suffix Parameters Description Content Model Associations * Top level type for all contacts - First Name - Last Name - Organization - Address - Country - Email. - Telephone - Mobile - IM - The user's personal e-mail address. - URL - The users site address. 1..n services Contacts will be get generated from the current carbon user store. Shall we finalise service ? Can AF/AM/G-Reg agree on above service ? Is there anything that is lacking/some required attribute ? On Tue, Sep 9, 2014 at 1:03 PM, Dimuthu Leelarathne <[email protected]> wrote: > Hi Subash, > > Thanks. We will not be taking this up yet. > > thanks, > dimuthu > > > On Thu, Sep 4, 2014 at 6:10 PM, Subash Chaturanga <[email protected]> wrote: > >> Hi, >> Finished the searching with Solr index. I have tested a sample complete >> client code inside Turing G-Reg 4.6.0 governance component. >> @Dimuthu, >> Now this API should be able to used to re build what you have already >> with gov api. I will work on completing my external TODOs left, like adding >> unit tests etc. >> >> >> On Mon, Sep 1, 2014 at 9:14 AM, Subash Chaturanga <[email protected]> >> wrote: >> >>> Hi, >>> Moving to @architecture. >>> >>> >>> On Fri, Aug 29, 2014 at 3:47 AM, Subash Chaturanga <[email protected]> >>> wrote: >>> >>>> Hi all, >>>> This is to give you a progress update. Now the code is moved to wso2 >>>> -dev repo [1]. And I have completed the implementation except the >>>> search/findAll which have to implement through indexing. Following is the >>>> client code I used. >>>> >>>> >>>> // You have to set this path ONLY if you are using this api outside a >>>> carbon server runtime. >>>> >>>> Util.setProviderMapFilePath("<path-to-registry.xml>"); >>>> >>>> HTTPServiceVersionV1 bv = new >>>> HTTPServiceVersionV1(registry, "1.0.0"); >>>> >>>> bv.setProperty("foo", "bar"); >>>> >>>> HTTPServiceV1 http1 = new HTTPServiceV1(registry, >>>> "myservice",bv); >>>> >>>> http1.setOwner("serviceOwner"); >>>> >>>> http1.setProperty("createdDate", "12-12-2012"); >>>> >>>> HTTPServiceV1.add(registry, http1); >>>> >>>> HTTPServiceV1 httpServiceV1 = HTTPServiceV1.get(registry, >>>> http1.getUUID()); >>>> >>>> HTTPServiceVersionV1 v2 = httpServiceV1.newVersion("1.2.0"); >>>> >>>> v2.setProperty("foo", "bar"); >>>> >>>> HTTPServiceVersionV1.add(registry, v2); >>>> >>>> for(HTTPServiceVersionV1 v:httpServiceV1.getVersions()){ >>>> >>>> System.out.println(v.getName()); >>>> >>>> } >>>> >>>> http1.attachLifecycle("SampleLifeCycle"); >>>> >>>> StateMachineLifecycle lc = http1.getLifecycle(); >>>> >>>> StateMachineLifecycle.State s = lc.getCurrentState(); >>>> >>>> lc.transfer("Promote"); >>>> >>>> StateMachineLifecycle.State s1 = lc.getCurrentState(); >>>> >>>> >>>> I have attached the screen shot of the G-Reg 4.6.0 mgt console after >>>> running this client. You can find the associations are created and >>>> lifecycle has attached and promoted to Test status. >>>> >>>> The API always deals with UUIDs from creating associations to CRUD >>>> instances. And the code is in wso2-dev git repo and no need to backport on >>>> turing, hence AF can build it and put it in to dropins. >>>> >>>> Once finish the searching/getAll we can try replacing a AF code with >>>> this API. Meanwhile we need to finalize the rest of the meta data >>>> @Sanjiva's meta data spec 1.0.0 ;-). Also will arrange a code/API review >>>> once search is implemented. >>>> >>>> Basic Implementation TODOs; >>>> >>>> - Search >>>> - Add more class/method comments to improve readability. >>>> - Create an ant sample. >>>> - Performance tune >>>> >>>> >>>> [1] - >>>> https://github.com/wso2-dev/carbon-registry/tree/master/components/registry/org.wso2.carbon.registry.metadata >>>> >>>> >>>> >>>> On Fri, Aug 22, 2014 at 7:35 PM, Senaka Fernando <[email protected]> >>>> wrote: >>>> >>>>> Hi all, >>>>> >>>>> Sanjiva, I added a comment on 2a in FAQ #2, too see whether we can >>>>> find a solution to what Dimuthu mentioned. This is the reason why I >>>>> actually proposed 2a - but that's obviously not the ideal solution too. >>>>> So, >>>>> trying to understand the best compromise here. >>>>> >>>>> Subash, I don't think the get/set property business is a good idea at >>>>> all. If this is an end-to-end API, shouldn't we for example do: >>>>> >>>>> >>>>> HTTPServiceVersionV1 httpV1 = http1.newVersion("1.0.0"); >>>>> EndpointV1 endpoint = new EndpointV1("http://test.rest/stockquote"); >>>>> endpoint.setSecured(true); >>>>> httpV1.addEndpoint(endpoint); >>>>> HTTPServiceVersionV1.add(httpV1); >>>>> >>>>> My view is that the API needs to be very expressive so that everybody >>>>> who uses that will generally find it to be comprehensive and the property >>>>> option is only if they don't find a way to do what they want. >>>>> >>>>> Also, a very radical question on services and endpoints. I think >>>>> everybody (G-Reg, AppFac and API-M teams) is clear that the ServiceVersion >>>>> is what has the lifecycle state. But, I wanted to ask a separate question. >>>>> Are we ruling out the possibility of a single service version being in >>>>> multiple environments? If yes, then simply forget this question. If no, >>>>> should we be having a state for the endpoint (i.e. A single service >>>>> version >>>>> with Dev endpoint a QA endpoint and vice versa). If we think we need the >>>>> above, should we have a concept of primary endpoint, which is what in >>>>> return deduces what state the service is in (ex:- the primary endpoint for >>>>> a service v1 is dev, which means the service is in dev state)? >>>>> >>>>> Thanks, >>>>> Senaka. >>>>> >>>>> >>>>> On Fri, Aug 22, 2014 at 2:15 PM, Sanjiva Weerawarana <[email protected] >>>>> > wrote: >>>>> >>>>>> Dimuthu see FAQ #2 in the document. Please suggest alternatives or >>>>>> accept it :-). >>>>>> >>>>>> >>>>>> On Fri, Aug 22, 2014 at 3:36 PM, Dimuthu Leelarathne < >>>>>> [email protected]> wrote: >>>>>> >>>>>>> Hi Subash and all, >>>>>>> >>>>>>> The API look extremely cluttered with V1 appended to all classes. :( >>>>>>> >>>>>>> thanks, >>>>>>> dimuthu >>>>>>> >>>>>>> >>>>>>> On Fri, Aug 22, 2014 at 9:30 AM, Dimuthu Leelarathne < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> Hi Subash, >>>>>>>> >>>>>>>> I believe this API allows us to create a foo service without a >>>>>>>> version. But that should not be the case. As discussed the instance >>>>>>>> also >>>>>>>> must have a version. So the Create API should change. >>>>>>>> >>>>>>>> thanks, >>>>>>>> dimuthu >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Fri, Aug 22, 2014 at 1:05 AM, Subash Chaturanga <[email protected] >>>>>>>> > wrote: >>>>>>>> >>>>>>>>> Hi Sanjiva et al, >>>>>>>>> Here is the [1] latest metadata API. In the process of finishing >>>>>>>>> the first cut implementation. Will update soon once I finished it. >>>>>>>>> Please >>>>>>>>> provide your feedback if anything needs to be changed from the API >>>>>>>>> consumer >>>>>>>>> PoV. >>>>>>>>> >>>>>>>>> >>>>>>>>> So this is the latest client code; >>>>>>>>> >>>>>>>>> HTTPServiceV1 http1 = new HTTPServiceV1("foo"); >>>>>>>>> http1.setOwner("serviceOwner"); >>>>>>>>> http1.setProperty("createdDate","12-12-2012"); >>>>>>>>> HTTPServiceV1.add(http1); >>>>>>>>> >>>>>>>>> HTTPServiceV1[] services = HTTPServiceV1.getAll(); >>>>>>>>> for(HTTPServiceV1 ht:services){ >>>>>>>>> ht.setProperty("newProp","newValue"); >>>>>>>>> HTTPServiceV1.update(ht); >>>>>>>>> } >>>>>>>>> >>>>>>>>> HTTPServiceVersionV1 httpV1 = http1.newVersion("1.0.0"); >>>>>>>>> httpV1.setEndpointUrl("http://test.rest/stockquote"); >>>>>>>>> httpV1.setProperty("isSecured","true"); >>>>>>>>> HTTPServiceVersionV1.add(httpV1); >>>>>>>>> >>>>>>>>> HTTPServiceVersionV1 v1 = >>>>>>>>> HTTPServiceVersionV1.get(httpV1.getUUID()); >>>>>>>>> HTTPServiceV1.delete(v1.getUUID()); >>>>>>>>> >>>>>>>>> >>>>>>>>> [1] - >>>>>>>>> https://github.com/subash89/carbon-registry/tree/master/components/registry/org.wso2.carbon.registry.metadata >>>>>>>>> >>>>>>>>> >>>>>>>>> On Mon, Aug 18, 2014 at 9:15 AM, Dimuthu Leelarathne < >>>>>>>>> [email protected]> wrote: >>>>>>>>> >>>>>>>>>> Hi all, >>>>>>>>>> >>>>>>>>>> Please see my comments in line. >>>>>>>>>> >>>>>>>>>> On Sun, Aug 17, 2014 at 3:32 PM, Sanjiva Weerawarana < >>>>>>>>>> [email protected]> wrote: >>>>>>>>>> >>>>>>>>>>> [At least Sagara/Dimuthu/Senaka/Frank/Paul please read >>>>>>>>>>> carefully. Lot of subtlety to get right ..] >>>>>>>>>>> >>>>>>>>>>> With media types, we have only 3 simple/direct ways of >>>>>>>>>>> categorizing stuff: >>>>>>>>>>> {type}/{subtype}+{format}. >>>>>>>>>>> There are of course parameters as add-ons but this is the >>>>>>>>>>> primary set. >>>>>>>>>>> >>>>>>>>>>> For services {type} = vnd.wso2.service. >>>>>>>>>>> >>>>>>>>>>> Question is what is subtype? I think we're agreeing WAR is not >>>>>>>>>>> appropriate as that's an implementation format. From a service >>>>>>>>>>> metadata >>>>>>>>>>> perspective, whether its PHP or .Net or Jaggery or whatever is not >>>>>>>>>>> important either. JAX-RS and JAX-WS are also really just internal >>>>>>>>>>> things - >>>>>>>>>>> what JAX-RS produces is an HTTP service. What JAX-WS produces is a >>>>>>>>>>> SOAP-speaking service which could potentially be exposed in >>>>>>>>>>> multiple access >>>>>>>>>>> channels. >>>>>>>>>>> >>>>>>>>>>> So, it seems to me, what really matters about a service is what >>>>>>>>>>> the access protocol is and what format the messages are to be sent. >>>>>>>>>>> In >>>>>>>>>>> other words: >>>>>>>>>>> >>>>>>>>>>> {subtype} = access protocol: http | smtp | thrift | ... >>>>>>>>>>> {format} = message format: soap | xml | json | txt | binary | ... >>>>>>>>>>> >>>>>>>>>>> So how do you represent a SOAP service which is available over >>>>>>>>>>> multiple protocols then? Direct interpretation would say it should >>>>>>>>>>> be >>>>>>>>>>> vnd.wso2.service/*+soap. However that's not a valid media type; >>>>>>>>>>> that's a >>>>>>>>>>> pattern to match against many media types. >>>>>>>>>>> >>>>>>>>>>> We can solve this by considering "soap" as an access protocol >>>>>>>>>>> and model a SOAP service with vnd.wso2.service/soap. The same >>>>>>>>>>> service's >>>>>>>>>>> HTTP specific rendition would be vnd.wso2.service/soap+http. This >>>>>>>>>>> model >>>>>>>>>>> does well for WSDL too - sort of .. WSDL separates the service >>>>>>>>>>> interface >>>>>>>>>>> (portType) from its access information (binding - both transport and >>>>>>>>>>> formatting). >>>>>>>>>>> >>>>>>>>>>> So what if we reverse the model and use format as the subtype >>>>>>>>>>> and protocol as the format: >>>>>>>>>>> >>>>>>>>>>> {subtype} = message format: soap | xml | json | txt | binary | >>>>>>>>>>> ... >>>>>>>>>>> {format} = access protocol: http | smtp | thrift >>>>>>>>>>> >>>>>>>>>>> BUT that has its set of problems too .. many services can speak >>>>>>>>>>> both XML and JSON for example. Furthermore, SOAP does not imply a >>>>>>>>>>> particular format .. SOAP can be sent over XML or a binary >>>>>>>>>>> serialization of >>>>>>>>>>> XML. Luckily no one uses the latter so lets ignore it. (The use of >>>>>>>>>>> XML vs. >>>>>>>>>>> a binary serialization seems more in the league of content transfer >>>>>>>>>>> encoding [1] anyway.) >>>>>>>>>>> >>>>>>>>>>> There's also the aspect of versions of a service to be >>>>>>>>>>> considered. It seems to me its really a version of a service that >>>>>>>>>>> has a >>>>>>>>>>> particular interface, not the service itself (as the interface may >>>>>>>>>>> change >>>>>>>>>>> over time). >>>>>>>>>>> >>>>>>>>>>> *So, in summary, my suggestion is we go with*: >>>>>>>>>>> >>>>>>>>>>> {type} = vnd.wso2.service >>>>>>>>>>> {subtype} = access protocol: soap | http | thift | ... >>>>>>>>>>> {format} = xml | json | text | binary ... >>>>>>>>>>> >>>>>>>>>>> Then, we make sure each service will have at least one version: >>>>>>>>>>> >>>>>>>>>>> vnd.wso2.version/service >>>>>>>>>>> >>>>>>>>>>> That could have some standard associations depending on what >>>>>>>>>>> type of service it is a version of. For example, for SOAP services >>>>>>>>>>> it makes >>>>>>>>>>> sense to have a required associated WSDL interface definition >>>>>>>>>>> (portType). >>>>>>>>>>> For HTTP services maybe we can associate with Swagger or WADL for >>>>>>>>>>> interface >>>>>>>>>>> definition. >>>>>>>>>>> >>>>>>>>>>> [NOTE: In App Factory currently bunch of the information is at >>>>>>>>>>> the wrong level w.r.t. to an app and its versions. AF only knows >>>>>>>>>>> about >>>>>>>>>>> versions in terms of Git and for governance. It doesn't keep other >>>>>>>>>>> stuff >>>>>>>>>>> like resources against versions when it really needs to have those >>>>>>>>>>> can >>>>>>>>>>> differ by version easily.] >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Going into this model means we'll be in-sync with ES and >>>>>>>>>> AppManager and in addition and resources will be version specific. >>>>>>>>>> However >>>>>>>>>> then AF story changes drastically - this includes UIs. We'll also >>>>>>>>>> need a >>>>>>>>>> solid story for agile development if we are going for this model. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> If we want the metadata model to capture the >>>>>>>>>>> deployment/implementation model, I suggest we create another top >>>>>>>>>>> level type >>>>>>>>>>> called vnd.wso2.artifact and have subtypes: >>>>>>>>>>> >>>>>>>>>>> vnd.wso2.artifact/war >>>>>>>>>>> vnd.wso2.artifact/war+jaxrs >>>>>>>>>>> vnd.wso2.artifact/war+jaxws >>>>>>>>>>> vnd.wso2.artifact/car >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> +1. This will be useful for AF to make deployment decision and it >>>>>>>>>> can be coupled with the concept of Runtimes, for example Tomcat, >>>>>>>>>> AppServer >>>>>>>>>> and etc ... but that can come later with the multiple runtime >>>>>>>>>> environment >>>>>>>>>> feature. >>>>>>>>>> >>>>>>>>>> thanks, >>>>>>>>>> dimuthu >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> etc.. Then there can be an association or a property to >>>>>>>>>>> capture the artifact type of a particular service. The value of that >>>>>>>>>>> association could be the name of the war file for example. >>>>>>>>>>> >>>>>>>>>>> The last part is the endpoint part .. a particular version of a >>>>>>>>>>> service is going to be available at one ore more endpoints. >>>>>>>>>>> Endpoints come >>>>>>>>>>> off servers .. which is part of the model that Senaka and G-Reg >>>>>>>>>>> team have >>>>>>>>>>> planned. >>>>>>>>>>> >>>>>>>>>>> Endpoints are also of course connected to APIs. >>>>>>>>>>> >>>>>>>>>>> Subash is going to schedule a discussion to finalize that part. >>>>>>>>>>> >>>>>>>>>>> Sanjiva. >>>>>>>>>>> [1] http://en.wikipedia.org/wiki/MIME#Content-Transfer-Encoding >>>>>>>>>>> >>>>>>>>>>> On Fri, Aug 15, 2014 at 5:29 PM, Dimuthu Leelarathne < >>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi all, >>>>>>>>>>>> >>>>>>>>>>>> We should be using the name WebApplication for all of these, >>>>>>>>>>>> - PHP >>>>>>>>>>>> - .NET ASP >>>>>>>>>>>> - Jaggery >>>>>>>>>>>> - Java WebApp >>>>>>>>>>>> >>>>>>>>>>>> In our meta model, it should be as follows. >>>>>>>>>>>> >>>>>>>>>>>> Parent - Application >>>>>>>>>>>> Child - WebApp >>>>>>>>>>>> >>>>>>>>>>>> However, JAX-RS and JAX-WS are services. >>>>>>>>>>>> >>>>>>>>>>>> In that sense, >>>>>>>>>>>> >>>>>>>>>>>> Parent - Service >>>>>>>>>>>> Child - SoapService >>>>>>>>>>>> Child - RESTService >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> For App Factory to proceed the above classes will be enough - >>>>>>>>>>>> WebApp, SOAPService, RESTService. Only 3 meta models are required. >>>>>>>>>>>> >>>>>>>>>>>> thanks, >>>>>>>>>>>> dimuthu >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Fri, Aug 15, 2014 at 1:05 PM, Senaka Fernando < >>>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi all, >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Fri, Aug 15, 2014 at 6:27 AM, Sagara Gunathunga < >>>>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Thu, Aug 14, 2014 at 4:34 AM, Dimuthu Leelarathne < >>>>>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi Subash and all, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> We want the store the following for the App Factory >>>>>>>>>>>>>>> artefacts. I am not sure whether to fill the parameters section >>>>>>>>>>>>>>> or the >>>>>>>>>>>>>>> Content section of the tables so I decided write inline to the >>>>>>>>>>>>>>> mail. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> For WAR - Name, Key, Owner, Description, Type, Repository >>>>>>>>>>>>>>> Type, EndPoint URL >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> I guess you mean application with web pages as WAR, if so >>>>>>>>>>>>>> IMHO it's better to use different name than WAR to avoid >>>>>>>>>>>>>> confusions. WAR >>>>>>>>>>>>>> is not a application type instead it's a deployment unit where >>>>>>>>>>>>>> JAX-WS and >>>>>>>>>>>>>> JAX-RS services also deploy as WAR archives. >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> +1 to Sagara. we can all this "WebApplication"? >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> Senaka. >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Thanks ! >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> For JAXWS, JAXRS, Data Services, Jaggery and Jaggery >>>>>>>>>>>>>>> parameters would be the following. >>>>>>>>>>>>>>> Name, Key, Owner, Description, Type, Repository Type, >>>>>>>>>>>>>>> Endpoint ( we will need a new feature for this so sending a >>>>>>>>>>>>>>> separate mail >>>>>>>>>>>>>>> on this to architecture) >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> thanks, >>>>>>>>>>>>>>> dimuthu >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Wed, Aug 13, 2014 at 7:01 PM, Ruchira Wageesha < >>>>>>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hi Subash, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> In the attached google doc, I saw that you guys are going >>>>>>>>>>>>>>>> to use versions in class name? If that is the case, how can we >>>>>>>>>>>>>>>> create >>>>>>>>>>>>>>>> Server1.0.0 or Service1.2.0 like classes from Java or do we >>>>>>>>>>>>>>>> assume versions >>>>>>>>>>>>>>>> to be always like v1...vn? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> According to my picture, it should be a different jar >>>>>>>>>>>>>>>> version like in maven/OSGI. i.e. We have the exact classname >>>>>>>>>>>>>>>> for every >>>>>>>>>>>>>>>> version of the same service, but different implementations in >>>>>>>>>>>>>>>> different >>>>>>>>>>>>>>>> jars. It is the model that we follow in Java and why cannot we >>>>>>>>>>>>>>>> continue >>>>>>>>>>>>>>>> that for this as well? >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Wed, Aug 13, 2014 at 4:33 AM, Senaka Fernando < >>>>>>>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Hi Subash, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Please find comments in-line. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Tue, Aug 12, 2014 at 7:16 PM, Janaka Ranabahu < >>>>>>>>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Hi Subash, >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On Tue, Aug 12, 2014 at 11:12 PM, Subash Chaturanga < >>>>>>>>>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Hi all, >>>>>>>>>>>>>>>>>>> We had a meeting on $subject as a continuation on >>>>>>>>>>>>>>>>>>> "Applications in the unified governance model" and decide >>>>>>>>>>>>>>>>>>> what is the >>>>>>>>>>>>>>>>>>> unified governance meta models should be in high level. And >>>>>>>>>>>>>>>>>>> Sanjiva updated >>>>>>>>>>>>>>>>>>> the same doc with todays conclusions in [1]. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Came up with set of high level meta models to start with >>>>>>>>>>>>>>>>>>> compared to what we have already in G-Reg(refer doc [1]). >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> a. Came up with a meta model java interface to address >>>>>>>>>>>>>>>>>>> the current requirement. There, we will be creating first >>>>>>>>>>>>>>>>>>> class APIs for >>>>>>>>>>>>>>>>>>> identified well known unified governance metadata models. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> b. Decided some modifications for the media types. >>>>>>>>>>>>>>>>>>> - skip the "application/" for media types and now >>>>>>>>>>>>>>>>>>> it will be something as vnd.wso2.service for services. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Why? "application" here has nothing to do with services >>>>>>>>>>>>>>>>> and applications that we are talking about. This is the >>>>>>>>>>>>>>>>> standard way of >>>>>>>>>>>>>>>>> writing a vendor specific MIME type (i.e. >>>>>>>>>>>>>>>>> application/vnd.<vendor_name><vendor_specific_portion>). Why >>>>>>>>>>>>>>>>> do we have to >>>>>>>>>>>>>>>>> change this notation? I know that given #2 below, there is no >>>>>>>>>>>>>>>>> reason we >>>>>>>>>>>>>>>>> can't play around with the names of the mediatypes, but if >>>>>>>>>>>>>>>>> this has no >>>>>>>>>>>>>>>>> special intent, I see no point in removing the "application/" >>>>>>>>>>>>>>>>> part though. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> - having version support for media types.(version >>>>>>>>>>>>>>>>>>> will be part of the media type), have not finalized on how >>>>>>>>>>>>>>>>>>> to add a version >>>>>>>>>>>>>>>>>>> string to media type. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> This is fine as we agreed. The MIME processor can accept a >>>>>>>>>>>>>>>>> string after the standard mediatype notation (i.e. >>>>>>>>>>>>>>>>> ";version=x") for these >>>>>>>>>>>>>>>>> specific assets. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> c. Metadata java interfaces will always deal with UUIDs, >>>>>>>>>>>>>>>>>>> but never with paths. >>>>>>>>>>>>>>>>>>> - meta data structure/attribute can get changed >>>>>>>>>>>>>>>>>>> from time to time. Should need a mechanism to support >>>>>>>>>>>>>>>>>>> metadata in old >>>>>>>>>>>>>>>>>>> format as well as in new format (aka different versions of >>>>>>>>>>>>>>>>>>> a media type) in >>>>>>>>>>>>>>>>>>> the same carbon runtime. Hence interface name itself will >>>>>>>>>>>>>>>>>>> have version >>>>>>>>>>>>>>>>>>> information. >>>>>>>>>>>>>>>>>>> i.e media type versions are restricted to have only >>>>>>>>>>>>>>>>>>> majors. i.e for services org.wso2.metadata.ServiceV1 (we >>>>>>>>>>>>>>>>>>> knew this is ugly, >>>>>>>>>>>>>>>>>>> but can't help, but you're mostly welcome for a better >>>>>>>>>>>>>>>>>>> suggestion). >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> This was the way I thought of solving it (during the call >>>>>>>>>>>>>>>>> I was in), "org.wso2.metadata.service.v1.Service". But, if it >>>>>>>>>>>>>>>>> is just a >>>>>>>>>>>>>>>>> single class inside the "org.wso2.metadata.service.v1.*" >>>>>>>>>>>>>>>>> package, there is >>>>>>>>>>>>>>>>> no point in doing that. But, if we plan to have a few classes >>>>>>>>>>>>>>>>> in the >>>>>>>>>>>>>>>>> package, then we probably can do that. Then, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> 1. the code is a bit more readable >>>>>>>>>>>>>>>>> 2. there is no possibility of somebody using two >>>>>>>>>>>>>>>>> different versions of the Service class in the code that >>>>>>>>>>>>>>>>> is based on this >>>>>>>>>>>>>>>>> API >>>>>>>>>>>>>>>>> 3. Using OSGi, we can stop exporting the older API >>>>>>>>>>>>>>>>> versions on a later date >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Also, note my comments below on how this works in specific >>>>>>>>>>>>>>>>> situations. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> d. First class version support. >>>>>>>>>>>>>>>>>>> - Create an artifact without a version. >>>>>>>>>>>>>>>>>>> - Then create versions from the artifact >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> e. Apart from these, all CRUD + search; typical >>>>>>>>>>>>>>>>>>> interfaces will be given for each metadata type. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> We did not touch this subject during the discussion but >>>>>>>>>>>>>>>>>> apart from these, I believe we need to introduce methods to >>>>>>>>>>>>>>>>>> perform >>>>>>>>>>>>>>>>>> governance operations in these artifacts. The interface >>>>>>>>>>>>>>>>>> should supports to >>>>>>>>>>>>>>>>>> attach, detach, perform governance operation(promote,demote >>>>>>>>>>>>>>>>>> or any >>>>>>>>>>>>>>>>>> lifecycle event) and get lifecycle state of an artifacts. >>>>>>>>>>>>>>>>>> Right now we have >>>>>>>>>>>>>>>>>> registry API's to do these but IMO, the artifacts should >>>>>>>>>>>>>>>>>> have 1st class >>>>>>>>>>>>>>>>>> support for governance operations. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> I have mixed views on this. Does all metadata need to be >>>>>>>>>>>>>>>>> governed? Isn't the metadata API separate from the governance >>>>>>>>>>>>>>>>> around it? >>>>>>>>>>>>>>>>> Wouldn't some governance functionality be limited to certain >>>>>>>>>>>>>>>>> products? If >>>>>>>>>>>>>>>>> so, doesn't it make sense to have the governance of these >>>>>>>>>>>>>>>>> metadata as a >>>>>>>>>>>>>>>>> separate API? i.e. org.wso2.metadata.governance? >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>>> Janaka >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Super parent media type will be "vnd.wso2.metadata". >>>>>>>>>>>>>>>>>>> Following is the design for high level service. Refer doc >>>>>>>>>>>>>>>>>>> [1] for more >>>>>>>>>>>>>>>>>>> detailed info. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> vnd.wso2.service __ 1 ____ n vnd.wso2.contact >>>>>>>>>>>>>>>>>>> 1 ____ n vnd.wso2.version >>>>>>>>>>>>>>>>>>> 1 ____ n vnd.wso2.endpoint >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> vnd.wso2.version? or vnd.wso2.version.service? Does any >>>>>>>>>>>>>>>>> version artifact look the same? Note that I specifically did >>>>>>>>>>>>>>>>> not use >>>>>>>>>>>>>>>>> vnd.wso2.service.version for it will break our media-type >>>>>>>>>>>>>>>>> based inheritance >>>>>>>>>>>>>>>>> model. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Also, contacts are loosely coupled. It can be @ service >>>>>>>>>>>>>>>>> level or @ service version level. And, why contact? why not >>>>>>>>>>>>>>>>> vnd.wso2.user? >>>>>>>>>>>>>>>>> vnd.wso2.userprofile? IMHO, a contact is what a service has, >>>>>>>>>>>>>>>>> but when that >>>>>>>>>>>>>>>>> information gets stored in the registry its a user-profile, >>>>>>>>>>>>>>>>> and this should >>>>>>>>>>>>>>>>> directly comply with the WSO2 IS user-profile structure (as >>>>>>>>>>>>>>>>> you have >>>>>>>>>>>>>>>>> mentioned below). In other words, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> public interface Service { >>>>>>>>>>>>>>>>> UserProfile[] getContacts() >>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> (vnd.wso2.contact will get populated from carbon user >>>>>>>>>>>>>>>>>>> profile and will provide useful information on impact >>>>>>>>>>>>>>>>>>> analysis) >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Targeting Oct WSO2Con, we will be starting with jax-rs >>>>>>>>>>>>>>>>>>> service which is vnd.wso2.metadata > vnd.wso2.service > >>>>>>>>>>>>>>>>>>> vnd.wso2.service.jax-rs. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Great, and what's the Java package name for this? If you >>>>>>>>>>>>>>>>> take my approach, it will be >>>>>>>>>>>>>>>>> "org.wso2.metadata.service.v1.RESTfulService". >>>>>>>>>>>>>>>>> Its a little ugly, but, I expanded the abbreviated name >>>>>>>>>>>>>>>>> JAX-RS - and the >>>>>>>>>>>>>>>>> "RS" stands for RESTful Service and not RESTService. JAX part >>>>>>>>>>>>>>>>> is redundant >>>>>>>>>>>>>>>>> since this is a Java API. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Immediate action items; >>>>>>>>>>>>>>>>>>> - Need to update the doc [1] and fill the tables for >>>>>>>>>>>>>>>>>>> the defined meta data models and finalize what we keep/drop >>>>>>>>>>>>>>>>>>> - Finalize the format for Service. >>>>>>>>>>>>>>>>>>> - Finalize the format for JAX-RS. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Please feel free to add your thoughts on adding anything >>>>>>>>>>>>>>>>>>> that seems useful for a service/JAX-RS/Application in >>>>>>>>>>>>>>>>>>> general >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Please add if I had missed anything. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Adding more to Ajith's comments, yet again, if you follow >>>>>>>>>>>>>>>>> the package name model I propose, you can, have >>>>>>>>>>>>>>>>> org.wso2.metadata.common.v1.Endpoint (if endpoint is a more >>>>>>>>>>>>>>>>> generic concept >>>>>>>>>>>>>>>>> than a service for instance) or >>>>>>>>>>>>>>>>> org.wso2.metadata.service.v1.Endpoint (if >>>>>>>>>>>>>>>>> endpoints are only associated with services). Similarly, you >>>>>>>>>>>>>>>>> can have >>>>>>>>>>>>>>>>> org.wso2.metadata.common.v1.Contact or >>>>>>>>>>>>>>>>> org.wso2.metadata.common.v1.User or >>>>>>>>>>>>>>>>> org.wso2.metadata.common.v1.UserProfile. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>>>> Senaka. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> [1] - >>>>>>>>>>>>>>>>>>> https://docs.google.com/a/wso2.com/document/d/1lqoHru84oCtBXHILNhKyyUdWA0yN05Um4xyfKFIX1_4/edit >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>> Thanks >>>>>>>>>>>>>>>>>>> /subash >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> *Subash Chaturanga* >>>>>>>>>>>>>>>>>>> Senior Software Engineer & Lead WSO2 Governance Registry >>>>>>>>>>>>>>>>>>> Platform TG; WSO2 Inc. http://wso2.com >>>>>>>>>>>>>>>>>>> Contact: >>>>>>>>>>>>>>>>>>> email: [email protected] >>>>>>>>>>>>>>>>>>> blog: http://subashsdm.blogspot.com/ >>>>>>>>>>>>>>>>>>> twitter: @subash89 >>>>>>>>>>>>>>>>>>> phone: +9477 2225922 >>>>>>>>>>>>>>>>>>> Lean . Enterprise . Middleware >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>> *Janaka Ranabahu* >>>>>>>>>>>>>>>>>> Senior Software Engineer; WSO2 Inc.; http://wso2.com >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> * E-mail: [email protected] <http://wso2.com>**M: **+94 >>>>>>>>>>>>>>>>>> 718370861 <%2B94%20718370861>* >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Lean . Enterprise . Middleware >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> *[image: http://wso2.com] <http://wso2.com> Senaka >>>>>>>>>>>>>>>>> Fernando* >>>>>>>>>>>>>>>>> Software Architect; WSO2 Inc.; http://wso2.com >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> * Member; Apache Software Foundation; http://apache.org >>>>>>>>>>>>>>>>> <http://apache.org>E-mail: senaka AT wso2.com >>>>>>>>>>>>>>>>> <http://wso2.com>**P: >>>>>>>>>>>>>>>>> +1 408 754 7388 <%2B1%20408%20754%207388>; ext: 51736*; >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> *M: +44 782 741 1966 <%2B44%20782%20741%201966> Linked-In: >>>>>>>>>>>>>>>>> http://linkedin.com/in/senakafernando >>>>>>>>>>>>>>>>> <http://linkedin.com/in/senakafernando>* >>>>>>>>>>>>>>>>> Lean . Enterprise . Middleware >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> *Ruchira Wageesha**Associate Technical Lead* >>>>>>>>>>>>>>>> *WSO2 Inc. - lean . enterprise . middleware | wso2.com >>>>>>>>>>>>>>>> <http://wso2.com>* >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> *email: [email protected] <[email protected]>, blog: >>>>>>>>>>>>>>>> ruchirawageesha.blogspot.com >>>>>>>>>>>>>>>> <http://ruchirawageesha.blogspot.com>, >>>>>>>>>>>>>>>> mobile: +94 77 5493444 <%2B94%2077%205493444>* >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>> Dimuthu Leelarathne >>>>>>>>>>>>>>> Architect & Product Lead of App Factory >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> WSO2, Inc. (http://wso2.com) >>>>>>>>>>>>>>> email: [email protected] >>>>>>>>>>>>>>> Mobile : 0773661935 >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Lean . Enterprise . Middleware >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> -- >>>>>>>>>>>>>> Sagara Gunathunga >>>>>>>>>>>>>> >>>>>>>>>>>>>> Senior Technical Lead; WSO2, Inc.; http://wso2.com >>>>>>>>>>>>>> V.P Apache Web Services; http://ws.apache.org/ >>>>>>>>>>>>>> Linkedin; http://www.linkedin.com/in/ssagara >>>>>>>>>>>>>> Blog ; http://ssagara.blogspot.com >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> *[image: http://wso2.com] <http://wso2.com> Senaka Fernando* >>>>>>>>>>>>> Software Architect; WSO2 Inc.; http://wso2.com >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> * Member; Apache Software Foundation; http://apache.org >>>>>>>>>>>>> <http://apache.org>E-mail: senaka AT wso2.com >>>>>>>>>>>>> <http://wso2.com>**P: >>>>>>>>>>>>> +1 408 754 7388 <%2B1%20408%20754%207388>; ext: 51736*; >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> *M: +44 782 741 1966 <%2B44%20782%20741%201966> Linked-In: >>>>>>>>>>>>> http://linkedin.com/in/senakafernando >>>>>>>>>>>>> <http://linkedin.com/in/senakafernando>*Lean . Enterprise . >>>>>>>>>>>>> Middleware >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Dimuthu Leelarathne >>>>>>>>>>>> Architect & Product Lead of App Factory >>>>>>>>>>>> >>>>>>>>>>>> WSO2, Inc. (http://wso2.com) >>>>>>>>>>>> email: [email protected] >>>>>>>>>>>> Mobile : 0773661935 >>>>>>>>>>>> >>>>>>>>>>>> Lean . Enterprise . Middleware >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> Sanjiva Weerawarana, Ph.D. >>>>>>>>>>> Founder, Chairman & CEO; WSO2, Inc.; http://wso2.com/ >>>>>>>>>>> email: [email protected]; office: (+1 650 745 4499 | +94 11 214 >>>>>>>>>>> 5345) x5700; cell: +94 77 787 6880 | +1 408 466 5099; voip: +1 >>>>>>>>>>> 650 265 8311 >>>>>>>>>>> blog: http://sanjiva.weerawarana.org/; twitter: @sanjiva >>>>>>>>>>> Lean . Enterprise . Middleware >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Dimuthu Leelarathne >>>>>>>>>> Architect & Product Lead of App Factory >>>>>>>>>> >>>>>>>>>> WSO2, Inc. (http://wso2.com) >>>>>>>>>> email: [email protected] >>>>>>>>>> Mobile : 0773661935 >>>>>>>>>> >>>>>>>>>> Lean . Enterprise . Middleware >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Thanks >>>>>>>>> /subash >>>>>>>>> >>>>>>>>> *Subash Chaturanga* >>>>>>>>> Senior Software Engineer & Lead WSO2 Governance Registry >>>>>>>>> Platform TG; WSO2 Inc. http://wso2.com >>>>>>>>> Contact: >>>>>>>>> email: [email protected] >>>>>>>>> blog: http://subashsdm.blogspot.com/ >>>>>>>>> twitter: @subash89 >>>>>>>>> phone: +9477 2225922 >>>>>>>>> Lean . Enterprise . Middleware >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Dimuthu Leelarathne >>>>>>>> Architect & Product Lead of App Factory >>>>>>>> >>>>>>>> WSO2, Inc. (http://wso2.com) >>>>>>>> email: [email protected] >>>>>>>> Mobile : 0773661935 >>>>>>>> >>>>>>>> Lean . Enterprise . Middleware >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Dimuthu Leelarathne >>>>>>> Architect & Product Lead of App Factory >>>>>>> >>>>>>> WSO2, Inc. (http://wso2.com) >>>>>>> email: [email protected] >>>>>>> Mobile : 0773661935 >>>>>>> >>>>>>> Lean . Enterprise . Middleware >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Sanjiva Weerawarana, Ph.D. >>>>>> Founder, Chairman & CEO; WSO2, Inc.; http://wso2.com/ >>>>>> email: [email protected]; office: (+1 650 745 4499 | +94 11 214 >>>>>> 5345) x5700; cell: +94 77 787 6880 | +1 408 466 5099; voip: +1 650 >>>>>> 265 8311 >>>>>> blog: http://sanjiva.weerawarana.org/; twitter: @sanjiva >>>>>> Lean . Enterprise . Middleware >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> >>>>> >>>>> *[image: http://wso2.com] <http://wso2.com> Senaka Fernando* >>>>> Software Architect; WSO2 Inc.; http://wso2.com >>>>> >>>>> >>>>> >>>>> * Member; Apache Software Foundation; http://apache.org >>>>> <http://apache.org>E-mail: senaka AT wso2.com <http://wso2.com>**P: >>>>> +1 408 754 7388 <%2B1%20408%20754%207388>; ext: 51736*; >>>>> >>>>> >>>>> *M: +44 782 741 1966 <%2B44%20782%20741%201966> Linked-In: >>>>> http://linkedin.com/in/senakafernando >>>>> <http://linkedin.com/in/senakafernando>*Lean . Enterprise . Middleware >>>>> >>>> >>>> >>>> >>>> -- >>>> Thanks >>>> /subash >>>> >>>> *Subash Chaturanga* >>>> Senior Software Engineer & Lead WSO2 Governance Registry >>>> Platform TG; WSO2 Inc. http://wso2.com >>>> Contact: >>>> email: [email protected] >>>> blog: http://subashsdm.blogspot.com/ >>>> twitter: @subash89 >>>> phone: +9477 2225922 >>>> Lean . Enterprise . Middleware >>>> >>> >>> >>> >>> -- >>> Thanks >>> /subash >>> >>> *Subash Chaturanga* >>> Senior Software Engineer & Lead WSO2 Governance Registry >>> Platform TG; WSO2 Inc. http://wso2.com >>> Contact: >>> email: [email protected] >>> blog: http://subashsdm.blogspot.com/ >>> twitter: @subash89 >>> phone: +9477 2225922 >>> Lean . Enterprise . Middleware >>> >> >> >> >> -- >> Thanks >> /subash >> >> *Subash Chaturanga* >> Senior Software Engineer & Lead WSO2 Governance Registry >> Platform TG; WSO2 Inc. http://wso2.com >> Contact: >> email: [email protected] >> blog: http://subashsdm.blogspot.com/ >> twitter: @subash89 >> phone: +9477 2225922 >> Lean . Enterprise . Middleware >> > > > > -- > Dimuthu Leelarathne > Architect & Product Lead of App Factory > > WSO2, Inc. (http://wso2.com) > email: [email protected] > Mobile : 0773661935 > > Lean . Enterprise . Middleware > -- Thanks /subash *Subash Chaturanga* Senior Software Engineer & Lead WSO2 Governance Registry Platform TG; WSO2 Inc. http://wso2.com Contact: email: [email protected] blog: http://subashsdm.blogspot.com/ twitter: @subash89 phone: +9477 2225922 Lean . Enterprise . Middleware
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
