'Validate that the two properties may be linked.
@param pA: Endpoint (A) to link.
@type pA: L{Endpoint}
@param pB: Endpoint (B) to link.
@type pB: L{Endpoint}
@return: self
@rtype: L{Link}'

def validate(self, pA, pB):

    if ((pA in pB.links) or (pB in pA.links)):
        raise Exception, 'Already    linked'
    dA = pA.domains()
    dB = pB.domains()
    for d in dA:
        if (d in dB):
            raise Exception, ('Duplicate    domain    "%s"    found' % d)
    for d in dB:
        if (d in dA):
            raise Exception, ('Duplicate    domain    "%s"    found' % d)
    kA = pA.keys()
    kB = pB.keys()
    for k in kA:
        if (k in kB):
            raise Exception, ('Duplicate    key    %s    found' % k)
    for k in kB:
        if (k in kA):
            raise Exception, ('Duplicate    key    %s    found' % k)
    return self
