Exemplo n.º 1
0
  public void replace(TypeReference replacement, final Declaration declarator, TypeReference<?> in)
      throws LookupException {
    UnsafePredicate<TypeReference, LookupException> predicate =
        new UnsafePredicate<TypeReference, LookupException>() {
          @Override
          public boolean eval(TypeReference object) throws LookupException {
            return object.getDeclarator().sameAs(declarator);
          }
        };
    List<TypeReference> crefs = in.descendants(TypeReference.class, predicate);
    if (predicate.eval(in)) {
      crefs.add(in);
    }

    for (TypeReference cref : crefs) {
      TypeReference clonedReplacement = replacement.clone();
      TypeReference substitute =
          createNonLocalTypeReference(clonedReplacement, replacement.parent());

      //			TypeReference substitute;
      //			if(replacement.isDerived()) {
      //				Element oldParent = replacement.parent();
      //				replacement.setUniParent(null);
      //				substitute = createNonLocalTypeReference(replacement,oldParent);
      //			} else {
      //				substitute = createNonLocalTypeReference(replacement);
      //			}

      SingleAssociation crefParentLink = cref.parentLink();
      crefParentLink.getOtherRelation().replace(crefParentLink, substitute.parentLink());
    }
  }
Exemplo n.º 2
0
 public void setTypeReference(TypeReference reference) {
   if (reference != null) {
     _typeReference.connectTo(reference.parentLink());
   } else {
     _typeReference.connectTo(null);
   }
 }
 public void apply() {
   for (CrossReference cref : _targets) {
     SingleAssociation parentLink = cref.parentLink();
     Association childLink = parentLink.getOtherRelation();
     TypeReference namedTargetExpression = parameter().argument().substitutionReference().clone();
     childLink.replace(parentLink, namedTargetExpression.parentLink());
   }
 }