hunk ./src/java/dml/runtime/RoleOneFenix.java 24 - setFk(o1, (o2 == null) ? null : o2.getIdInternal()); hunk ./src/java/dml/runtime/RoleOneFenix.java 31 - setFk(o1, null); hunk ./src/java/dml/runtime/RoleOneFenix.java 35 - public abstract void setFk(C1 o1, Integer newFk); hunk ./src/java/dml/CodeGenerator.java 859 - print(out, "return this."); - print(out, slotName); + print(out, "return "); + print(out, getSlotExpression(slotName)); hunk ./src/java/dml/DomainModel.java 95 + + public Collection getDomainRelations() { + return relations.values(); + } hunk ./src/java/dml/CodeGenerator.java 272 - generateStaticRoleSlots((Role) roleSlotsIter.next(), out); + Role role = (Role) roleSlotsIter.next(); + if (role.getName() != null) { + generateStaticRoleSlots(role, out); + } hunk ./src/java/dml/CodeGenerator.java 280 - generateStaticRelationSlots((Role) roleSlotsIter.next(), out); + Role role = (Role) roleSlotsIter.next(); + if (role.getName() != null) { + generateStaticRelationSlots(role, out); + } hunk ./src/java/dml/CodeGenerator.java 299 - if (role.getName() != null) { - generateRoleClassGetter(role, otherRole, out); - } + generateRoleClassGetter(role, otherRole, out); hunk ./src/java/dml/CodeGenerator.java 308 - print(out, getRoleHandlerName(otherRole, true)); + if (otherRole.getName() == null) { + print(out, "new "); + print(out, getRoleType(otherRole)); + print(out, "(this)"); + } else { + print(out, getRoleHandlerName(otherRole, true)); + } hunk ./src/java/dml/CodeGenerator.java 348 - if (role.getName() == null) { - buf.append(role.getRelation().getName()); - buf.append("$$empty"); - } else { - buf.append(role.getName()); - } + buf.append(role.getName()); + hunk ./src/java/dml/CodeGenerator.java 375 + boolean isDirectRelation = (role.isFirstRole() || (otherRole.getName() == null)); + hunk ./src/java/dml/CodeGenerator.java 378 - print(out, role.isFirstRole() ? directRelationType : "dml.runtime.Relation"); + print(out, isDirectRelation ? directRelationType : "dml.runtime.Relation"); hunk ./src/java/dml/CodeGenerator.java 382 - if (role.isFirstRole()) { + if (isDirectRelation) { hunk ./src/java/dml/CodeGenerator.java 390 - print(out, "static"); - newBlock(out); - print(out, getTypeFullName(role.getType())); - print(out, "."); - print(out, getRelationSlotNameFor(otherRole)); - print(out, " = "); - print(out, relationSlotName); - print(out, ".getInverseRelation();"); - closeBlock(out); + if (otherRole.getName() != null) { + print(out, "static"); + newBlock(out); + print(out, getTypeFullName(role.getType())); + print(out, "."); + print(out, getRelationSlotNameFor(otherRole)); + print(out, " = "); + print(out, relationSlotName); + print(out, ".getInverseRelation();"); + closeBlock(out); + } hunk ./src/java/dml/CodeGenerator.java 654 - generateRoleSlotMethods((Role) roleSlotsIter.next(), out); + Role role = (Role) roleSlotsIter.next(); + if (role.getName() != null) { + generateRoleSlotMethods(role, out); + } hunk ./src/java/dml/CodeGenerator.java 662 - if (role.getName() != null) { - if (role.getMultiplicityUpper() == 1) { - generateRoleSlotMethodsMultOne(role, out); - } else { - generateRoleSlotMethodsMultStar(role, out); - } + if (role.getMultiplicityUpper() == 1) { + generateRoleSlotMethodsMultOne(role, out); + } else { + generateRoleSlotMethodsMultStar(role, out); + } hunk ./src/java/dml/CodeGenerator.java 668 - if (role.needsMultiplicityChecks()) { - generateMultiplicityConsistencyPredicate(role, out); - } + if (role.needsMultiplicityChecks()) { + generateMultiplicityConsistencyPredicate(role, out); hunk ./src/java/dml/runtime/RoleEmpty.java 8 -public abstract class RoleEmpty implements Role { +public class RoleEmpty implements Role { + private Role inverseRole; + + public RoleEmpty(Role inverseRole) { + this.inverseRole = inverseRole; + } + hunk ./src/java/dml/runtime/RoleEmpty.java 22 + + public Role getInverseRole() { + return inverseRole; + }