public DefaultReferenceSubstituteInfoActionsFactory( SNode sourceNode, SNode linkDeclaration, DefaultReferenceSubstituteInfo substituteInfo) { mySourceNode = sourceNode; myLinkDeclaration = linkDeclaration; SNode genuineLinkDeclaration = BehaviorReflection.invokeNonVirtual( (Class<SNode>) ((Class) Object.class), myLinkDeclaration, "jetbrains.mps.lang.structure.structure.LinkDeclaration", "call_getGenuineLink_1213877254523", new Object[] {}); if (genuineLinkDeclaration == null) { return; } if (SPropertyOperations.hasValue( genuineLinkDeclaration, "metaClass", "aggregation", "reference")) { DefaultReferenceSubstituteInfoActionsFactory.LOG.error( "only reference links are allowed here", myLinkDeclaration); } if (!(BehaviorReflection.invokeNonVirtual( Boolean.TYPE, genuineLinkDeclaration, "jetbrains.mps.lang.structure.structure.LinkDeclaration", "call_isSingular_1213877254557", new Object[] {}))) { DefaultReferenceSubstituteInfoActionsFactory.LOG.error( "cardinalities 1 or 0..1 are allowed here", myLinkDeclaration); } myCurrentReferent = SLinkOperations.getTargetNode(SNodeOperations.getReference(sourceNode, myLinkDeclaration)); mySubstituteInfo = substituteInfo; }
public void test_setReference() throws Exception { this.addNodeById("8150353254540236423"); this.addNodeById("8150353254540236549"); this.addNodeById("4195712261513743410"); SNode sNode = SNodeOperations.cast( this.getNodeById("4195712261513781536"), "jetbrains.mps.baseLanguage.structure.LocalVariableReference"); StatCountNodeReadAccessInEditorListener listener = new StatCountNodeReadAccessInEditorListener(sNode); NodeReadAccessCasterInEditor.setCellBuildNodeReadAccessListener(listener); sNode.setReference( "localVariableDeclaration", SNodeOperations.getReference( SNodeOperations.cast( this.getNodeById("4195712261513781536"), "jetbrains.mps.baseLanguage.structure.LocalVariableReference"), SLinkOperations.findLinkDeclaration( "jetbrains.mps.baseLanguage.structure.LocalVariableReference", "localVariableDeclaration"))); this.assertMethod( "public void jetbrains.mps.smodel.SNode.setReference(java.lang.String,org.jetbrains.mps.openapi.model.SReference)", listener.getResults().o1); }
public DefaultReferenceSubstituteInfoActionsFactory( SNode sourceNode, SNode linkDeclaration, DefaultReferenceSubstituteInfo substituteInfo) { mySourceNode = sourceNode; myLinkDeclaration = linkDeclaration; SNode genuineLinkDeclaration = ((SNode) BehaviorManager.getInstance() .invoke( Object.class, SNodeOperations.cast( myLinkDeclaration, "jetbrains.mps.lang.structure.structure.LinkDeclaration"), "call_getGenuineLink_1213877254523", new Class[] {SNode.class})); if (genuineLinkDeclaration == null) { return; } if (SPropertyOperations.hasValue( genuineLinkDeclaration, "metaClass", "aggregation", "reference")) { DefaultReferenceSubstituteInfoActionsFactory.LOG.error( "only reference links are allowed here", myLinkDeclaration); } if (!(((Boolean) BehaviorManager.getInstance() .invoke( Boolean.class, SNodeOperations.cast( genuineLinkDeclaration, "jetbrains.mps.lang.structure.structure.LinkDeclaration"), "call_isSingular_1213877254557", new Class[] {SNode.class})))) { DefaultReferenceSubstituteInfoActionsFactory.LOG.error( "cardinalities 1 or 0..1 are allowed here", myLinkDeclaration); } myCurrentReferent = SLinkOperations.getTargetNode(SNodeOperations.getReference(sourceNode, myLinkDeclaration)); mySubstituteInfo = substituteInfo; }