JBI descriptor POJOs based model.
Relax NG Schema for JBI descriptor:
default namespace this = "http://java.sun.com/xml/ns/jbi"
start =
element jbi {
attribute version { xsd:decimal },
( component | shared-library | service-assembly | services)
}
component =
element component {
attribute type { "service-engine" | "binding-component" },
attribute component-class-loader-delegation { "parent-first" | "self-first" }?,
attribute bootstrap-class-loader-delegation { "parent-first" | "self-first" }?,
identification,
element component-class-name { attribute description { text }?, text },
element component-class-path { class-path },
element bootstrap-class-name { text },
element bootstrap-class-path { class-path },
shared-library-list*,
element* -this:* { text }*
}
shared-library =
element shared-library {
attribute class-loader-delegation { "parent-first" | "self-first" }?,
attribute version { text }?,
identification,
element shared-library-class-path { class-path }
}
shared-library-list =
element shared-library {
attribute version { text }?,
text
}
service-assembly =
element service-assembly {
identification,
service-unit*,
connections?,
element* -this:* { text }*
}
service-unit =
element service-unit {
identification,
element target {
element artifacts-zip { text },
element component-name { xsd:NCName }
},
element* -this:* { text }*
}
identification =
element identification {
element name { xsd:NCName },
element description { text },
element* -this:* { text }*
}
class-path =
(element path-element { text })+
services =
element services {
attribute binding-component { xsd:boolean },
provides*,
consumes*,
element* -this:* { text }*
}
connections =
element connections {
element connection {
element consumer {
( attribute interface-name { xsd:QName } |
(attribute service-name { xsd:QName }, attribute endpoint-name { text })
)
},
element provider {
attribute service-name { xsd:QName }, attribute endpoint-name { text }
}
}*,
element* -this:* { text }*
}
provides =
element provides {
attribute interface-name { xsd:QName },
attribute service-name {xsd:QName }, attribute endpoint-name { text },
element* -this:* { text }*
}
consumes =
element consumes {
attribute interface-name { xsd:QName },
( attribute service-name {xsd:QName }, attribute endpoint-name { text },
attribute link-type { "standard" | "hard" | "soft" }? )?,
element* -this:* { text }*
}