Jump to: navigation, search

Difference between revisions of "Hello XML World Example (Buckminster)"

(The CQUERY)
Line 29: Line 29:
 
resourceMap="http://www.eclipse.org/buckminster/samples/rmaps/demo.rmap">
 
resourceMap="http://www.eclipse.org/buckminster/samples/rmaps/demo.rmap">
 
     <cq:rootRequest name="org.demo.hello.xml.world" category="plugin" versionType="OSGi"/>
 
     <cq:rootRequest name="org.demo.hello.xml.world" category="plugin" versionType="OSGi"/>
    <cq:advisorNode namePattern="org\.demo\..*" whenNotEmpty="OVERWRITE" useInstalled="false" useMaterialization="false"/>
 
    <cq:advisorNode namePattern="se\.tada\..*" whenNotEmpty="REUSE" useInstalled="false"/>
 
 
</cq:componentQuery>
 
</cq:componentQuery>
 
</pre>
 
</pre>
Line 38: Line 36:
 
* Next line declares where the resourcemap to use when resolving components is found (we will look at the resource map next).
 
* Next line declares where the resourcemap to use when resolving components is found (we will look at the resource map next).
 
* Next line states that the wanted (root) component is called <tt>org.demo.hello.xml.world</tt>, that is is a plugin and that it follows the OSGi versioning scheme.
 
* Next line states that the wanted (root) component is called <tt>org.demo.hello.xml.world</tt>, that is is a plugin and that it follows the OSGi versioning scheme.
* Then there are two advisor node lines. The first declares that the demo component should be re-materialized even if it already has been materialized (i.e. give me a fresh copy). The second declares that components with "tada" in their name should reuse already materialized results.
 
  
 
For more details see [[Buckminster Component Query|CQUERY]]
 
For more details see [[Buckminster Component Query|CQUERY]]
 +
 
==The RMAP==
 
==The RMAP==
 
This is what the RMAP looks like:
 
This is what the RMAP looks like:

Revision as of 11:29, 9 October 2006

< To: Buckminster Project
This examples shows several Buckminster features in action. Here is an overview of what is going on:

HelloDemo.gif

  • The A component is called org.demo.hello.xml.world
    • It lives in a CVS repository
    • It is an Eclipse plugin - it has some meta data
    • A has a dependency on B
  • The B component is called org.demo.xml.provider
    • It lives in a CVS repository
    • It is an Eclipse plugin - it has some meta data
    • It requires two jars; the jar in component D, and a jar that is built by component C.
  • Component C is called org.demo.worlds
    • It lives in a CVS repository
    • Although it is an Eclipse project, it is not an Eclipse plugin.
  • Component D is a sax parser called se.tada.util.sax
    • It lives in binary form in the maven repository at Ibiblio

To run the example, use the File > Open dialog in Eclipse, and enter this URL:

That will start the Buckminster materialization of the project.

The CQUERY

The CQuery looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<cq:componentQuery xmlns:cq="http://www.eclipse.org/buckminster/CQuery-1.0"
resourceMap="http://www.eclipse.org/buckminster/samples/rmaps/demo.rmap">
    <cq:rootRequest name="org.demo.hello.xml.world" category="plugin" versionType="OSGi"/>
</cq:componentQuery>

This is what the XML in the CQUERY means:

  • The first three lines are the usual XML incantations - this is XML, and this is the syntax of the XML - i.e. CQuery-1.0 and the namespace is called "cq".
  • Next line declares where the resourcemap to use when resolving components is found (we will look at the resource map next).
  • Next line states that the wanted (root) component is called org.demo.hello.xml.world, that is is a plugin and that it follows the OSGi versioning scheme.

For more details see CQUERY

The RMAP

This is what the RMAP looks like:

<?xml version="1.0" encoding="UTF-8"?>
<rm:rmap
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:rm="http://www.eclipse.org/buckminster/RMap-1.0"
    xmlns:pv="http://www.eclipse.org/buckminster/Provider-1.0"
    xmlns:mp="http://www.eclipse.org/buckminster/MavenProvider-1.0"
    xmlns:bc="http://www.eclipse.org/buckminster/Common-1.0">

    <rm:searchPath name="default">
    	<rm:provider readerType="cvs" componentType="eclipse-project" mutable="true" source="true">
    	    <pv:uri format=":pserver:anonymous@dev.eclipse.org:/cvsroot/technology,org.eclipse.buckminster/org.eclipse.buckminster/demo/{0}">
	        <bc:propertyRef key="buckminster.component" />
	    </pv:uri>
	</rm:provider>
    </rm:searchPath>

    <rm:searchPath name="maven">
    	<rm:provider xsi:type="mp:MavenProvider" readerType="maven" componentType="maven" mutable="false" source="false">
    		<pv:uri format="http://www.ibiblio.org/maven"/>
		<mp:mappings>
			<mp:entry name="se.tada.util.sax" groupId="se.tada" artifactId="tada-sax"/>
		</mp:mappings>
	</rm:provider>
    </rm:searchPath>

    <rm:locator searchPathRef="maven" pattern="^se\.tada\..*" />
    <rm:locator searchPathRef="default" pattern="^org\.demo\..*" />

</rm:rmap>

This is what the RMAP XML means:

  • The 7 first lines declares the name spaces and syntax of the rmap and the repository providers needed.
  • Below that you see two major elements declaring search paths, the first is called default, and the second is called maven.
  • Continue down and you see two locator declarations...
    • the first states that if a component name starts with se.tada. then the maven search path should be used.
    • and the second locator states that if the name starts with org.demo. then the default path should be used.
  • Back to the paths:
    • The default path:
      • The default path declares that the repository is in CVS and that what we find is an eclipse project
      • We do not need to commit changes back (mutable=false), and we do not want source (source=false).
      • The URI to the CVS repository is stated next
      • what is the parameter substitution involving buckminster.component?
    • The maven path:
      • The maven path declares that it uses a maven provider and a reader type of maven and that the component type is also a maven component. Further the mutable=false says that we are not interested in comitting any changes back to the repository, and source=false says that we are not interested in source.
      • A URI to the maven repository at Ibiblio is declared
      • A mapping that translates the component name into what the actual file on Ibiblio is called is then declared (i.e. mapping se.tada.util.sax to tada-sax).

Describe what the demo does