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
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
