[forge-dev] JBoss Stacks: Requirements

Pete Muir pmuir at redhat.com
Wed Aug 1 09:51:39 EDT 2012


I'm not following that. Say we had:

labels:
   animals:
      dog:
         breed: collie
         name: lassie
     dog:
        breed: labrador
        name: spot

then you could do:

Map<String, Map<String, String>> animals = runtime.getLabel("animals");

That is what I was thinking of.


On 1 Aug 2012, at 14:21, Rafael Benevides wrote:

> Well, the problem in this case is not with the cast itself but the method signature would be useful only in map[key:value] structures where the value is always a string.
> 
> I'm supposing that we can have structures like this: ['string', [listvalue1, listvalue2], [ {key1:value1} , {key2: value2} ] ] where strings and lists does not have names and some "things" can be on any level.
> 
> maybe we can have two methods:
> 
> public String getLabel(String label); <- Recursive search for map values based on its key
> 
> public boolean hasLabel(String label); <- Recursive search for strings (alone or as a list item)
> 
> Rafael Benevides | Senior Software Engineer
> Red Hat Brazil
> +55-61-9269-6576
> 
> Better technology. Faster innovation. Powered by community collaboration.
> See how it works at redhat.com
> 
> 
> Em 31-07-2012 18:25, Pete Muir escreveu:
>> You can add a method like:
>> 
>> public<T>  List<T>  getLabel(String name, T expectedType);
>> 
>> which means the user can avoid a cast.
>> 
>> On 31 Jul 2012, at 19:58, Rafael Benevides wrote:
>> 
>>> I made some tests with a structure similar to what you suggested
>>> 
>>>   labels:
>>>    - test1
>>>    - test2: value2
>>>    -
>>>     - test31
>>>     - test32 : value32
>>>     -
>>>      - test: 331
>>> 
>>> This structure is possible making the labels property a List<Object>. So the person who uses the Parser will be responsible for cast labels[x] to String, List or Map.
>>> 
>>> Is that ok for you ? If so, I'll change the labels from List<Properties>  to List<Object>  I don't think this cause a Branch update to Beta4.
>>> 
>>> Em 31-07-2012 11:33, Pete Muir escreveu:
>>>> Rafael, is there a way, in the parser, to make the contents of a label to be unconstrained? e.g. a label could contain a list of things, recursively, as deep as we like. If we just parse that into a recusive list<String>   or list<properties>   then it should work I think.
>>>> 
>>>> On 31 Jul 2012, at 15:34, Rafael Benevides wrote:
>>>> 
>>>>> Hi all,
>>>>> 
>>>>> The latest is Beta3 - https://github.com/jboss-jdf/jdf-stack/blob/Beta3/stacks.yaml
>>>>> 
>>>>> There is a minor format change in labels properties from Beta2 (labels=List<String>) to Beta3 (labels=List<Properties>)
>>>>> 
>>>>> Rafael Benevides | Senior Software Engineer
>>>>> Red Hat Brazil
>>>>> +55-61-9269-6576
>>>>> 
>>>>> Better technology. Faster innovation. Powered by community collaboration.
>>>>> See how it works at redhat.com
>>>>> 
>>>>> 
>>>>> Em 31-07-2012 11:24, Pete Muir escreveu:
>>>>>> Max, your best source is https://github.com/jboss-jdf/jdf-stack/blob/Beta2/stacks.yaml
>>>>>>  which I think is most up to date.
>>>>>> 
>>>>>> There are three roots: BOMs, archetypes and runtimes. Runtimes is what ties it all together though.
>>>>>> 
>>>>>> On 31 Jul 2012, at 14:01, Max Rydahl Andersen wrote:
>>>>>> 
>>>>>> 
>>>>>>> Sorry for getting in late (3 weeks PTO) - so if this is answered somewhere else please let me know :)
>>>>>>> 
>>>>>>> Looking at the diagram i'm reading it as the runtime defines/contains the BOM/Archetypes since the runtime is the root or
>>>>>>> am I misreading this ?
>>>>>>> 
>>>>>>> i.e. IMO an archetype has to be able to work with multiple versions, otherwise we need to release every archetype at every minor update of the runtime.
>>>>>>> 
>>>>>>> Thus I assume i'm wrong in reading that, but just wanted to be sure "root of YAML file" is not the runtime.
>>>>>>> 
>>>>>>> /max
>>>>>>> 
>>>>>>> 
>>>>>>> On 11 Jul 2012, at 14:00, Rafael Benevides
>>>>>>> <benevides at redhat.com>
>>>>>>>  wrote:
>>>>>>> 
>>>>>>> 
>>>>>>>> Yesterday I started to work on this new yaml format and I tried to capture all requirements that was discussed in this Thread. The result was the following attached uml diagram.
>>>>>>>> 
>>>>>>>> I think that's the better way to try comprehending what is needed and what will be covered. Today (or maybe tomorrow) I'll convert this idea to an example yaml file that is the representation of the diagram.
>>>>>>>> 
>>>>>>>> The closest of the idea is something like similar to:
>>>>>>>> 
>>>>>>>> bom:&jboss-with-x
>>>>>>>> name: JBoss With X
>>>>>>>> description: lorem ipsum
>>>>>>>> otherProperties: otherValues
>>>>>>>> availableVersions:
>>>>>>>> - 1.0.0.Final
>>>>>>>> - 1.0.1.CR1
>>>>>>>> 
>>>>>>>> bom:&jboss-with-y
>>>>>>>> name: JBoss With Y
>>>>>>>> description: lorem ipsum
>>>>>>>> otherProperties: otherValues
>>>>>>>> availableVersions:
>>>>>>>> - 1.0.0.Final
>>>>>>>> - 1.0.1.CR1
>>>>>>>> 
>>>>>>>> runtime:&jbosseap6
>>>>>>>> version: 6.0
>>>>>>>> type: EAP
>>>>>>>> boms:
>>>>>>>> - *jboss-with-x
>>>>>>>> - *jboss-with-y
>>>>>>>> recommendedBOM: *jboss-with-x
>>>>>>>> 
>>>>>>>> Em 03-07-2012 13:01, Rafael Benevides escreveu:
>>>>>>>> 
>>>>>>>>> Em 03-07-2012 12:53, James Perkins escreveu:
>>>>>>>>> 
>>>>>>>>>>> We could do that as well.
>>>>>>>>>>> 
>>>>>>>>>>>   7.0.1.Final:
>>>>>>>>>>>     properties:
>>>>>>>>>>>       arguments: -logmodule
>>>>>>>>>>>       cli: not-available
>>>>>>>>>>> 
>>>>>>>>>> I like this approach.
>>>>>>>>>> 
>>>>>>>>> I like this approach either!
>>>>>>>>> 
>>>>>>>> <Class Diagram.png>
>>>>>>>> 




More information about the forge-dev mailing list