Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [buckminster-dev] component binding

Thomas,

On 1/18/06, Thomas Hallgren <thomas@xxxxxxx> wrote:

> You're not wrong :-) We have still to establish a "correct" glossary at
> some point. I'll try to differentiate between the terms component and
> artifact in the future. A separation that I find attractive (but didn't
> use above) is to say that a component consists of artifacts.

"a component consists of artifacts" is the terminology I am used to
from our own development environment.

> Yes, that's correct. I might add that this location is a default
> location that the user may override using the last page of the resolver
> wizard if the reader permits it to be overridden.

OK, I hadn't noticed that.

> No, that part is wrong. The DefaultBinderService is the one. A missing
> .project file can only be created when the binder discovers that the
> project for a ProjectBinding does not exist. The binder will always
> attempt to do a IWorkspace.loadProjectDescription() to obtain the
> description, i.e. parse the .project file into a ProjectDescription
> object. If it fails to do that, it will instead use
> IWorkspace.newProjectDescription() and then subsequently create the
> project (the code that I included in a previous mail). This is the one
> and only case when Buckminster, as it stands today, will create a
> .project file.
>

I was hoping it would be the way you describe it here. Although I have
reason to believe otherwise. Let's take a look at an example. I have
set up an rmap file with the following search path:

<rm:searchPath name="foo">
	<rm:provider readerType="cvs" componentType="unknown" mutable="true"
source="true">
		<pv:uri format=":pserver:USER@HOST:/path/to/cvsroot,MODULE/{0}">
			<bc:replace pattern="^foo\.(.*)$" replacement="$1" quotePattern="false">
				<bc:property key="buckminster.component"/>
			</bc:replace>
		</pv:uri>
	</rm:provider>
</rm:searchPath>

I can now successfully materialize and bind my components from the CVS
repository in my Eclipse workspace.

I found that the DefaultBinderService will bind my components as an
ExternalBinding as the "unknown" component type returns false on
hasProjectDescription(). Yet Buckminster creates a .project file for
my component. Setting a breakpoint just before the bind phase
(MaterializeAndBindJob line 96) I found that the .project file had
already been created. Just as if I'd done a "Checkout as Project"
using the "CVS Repository Exploring" perspective. Is this unexpected
behavior?

Cheers,

--knut


Back to the top