當前位置: 首頁>>代碼示例>>Java>>正文


Java EObject.eContainer方法代碼示例

本文整理匯總了Java中org.eclipse.emf.ecore.EObject.eContainer方法的典型用法代碼示例。如果您正苦於以下問題:Java EObject.eContainer方法的具體用法?Java EObject.eContainer怎麽用?Java EObject.eContainer使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在org.eclipse.emf.ecore.EObject的用法示例。


在下文中一共展示了EObject.eContainer方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: isArrayOrObjectLiteralBeingDestructured

import org.eclipse.emf.ecore.EObject; //導入方法依賴的package包/類
/**
 * Returns true iff given object is an array/object literal used <b>as input to</b> a destructuring pattern (i.e. as
 * expression of a VariableBinding, on rhs of an assignment or in a for..in/of loop or it is a nested literal within
 * such an array/object literal).
 * <p>
 * TODO this method does not properly support nesting yet, i.e. in code like
 *
 * <pre>
 * var [string a, Array<?> arr, number b] = ["hello", [1,2,3], 42];
 * </pre>
 *
 * it will return <code>true</code> for the nested array <code>[1,2,3]</code>, which is wrong.
 */
public static boolean isArrayOrObjectLiteralBeingDestructured(EObject obj) {
	if (!(obj instanceof ArrayLiteral || obj instanceof ObjectLiteral))
		return false;
	final EObject root = getRootOfDestructuringPattern(obj);
	final EObject parent = root.eContainer();
	if (parent instanceof VariableBinding)
		return ((VariableBinding) parent).getExpression() == root;
	if (parent instanceof AssignmentExpression && isDestructuringAssignment((AssignmentExpression) parent))
		return ((AssignmentExpression) parent).getRhs() == root;
	if (parent instanceof ForStatement && isDestructuringForStatement((ForStatement) parent)) {
		// reason why we require obj!=root below:
		// in code like "for([a,b] of [ ["hello",42], ["world",43] ]) {}" the top-level array literal after
		// the "of" is *NOT* an array being destructured; instead, it's the array being iterated over.
		return !((ForStatement) parent).isForPlain() && ((ForStatement) parent).getExpression() == root
				&& obj != root;
	}
	return false;
}
 
開發者ID:eclipse,項目名稱:n4js,代碼行數:32,代碼來源:N4JSASTUtils.java

示例2: calculateLogicallyQualifiedDisplayName

import org.eclipse.emf.ecore.EObject; //導入方法依賴的package包/類
/**
 * Calculate the hierarchically qualified name of an EObject.
 *
 * @param eob
 *            the EObject to calculate logical name for
 * @param labelProvider
 *            the label provider that knows how to display EObject instances
 *
 * @return the hierarchically
 */
public static String calculateLogicallyQualifiedDisplayName(EObject eob, LabelProvider labelProvider,
		boolean includeRoot) {
	// Calculate hierarchical logical name, e.g. C.m
	String text = labelProvider.getText(eob);
	EObject currContainer = eob.eContainer();
	while (currContainer != null) {
		if (isShowable(currContainer)) {
			text = labelProvider.getText(currContainer) + "." + text;
		}
		currContainer = currContainer.eContainer();
		if (currContainer != null && !includeRoot && currContainer instanceof Script)
			break;
	}
	return text;
}
 
開發者ID:eclipse,項目名稱:n4js,代碼行數:26,代碼來源:N4JSHierarchicalNameComputerHelper.java

示例3: persistMetamodel

import org.eclipse.emf.ecore.EObject; //導入方法依賴的package包/類
public static void persistMetamodel(ResourceSet resourceSet, EPackage generated, String path) throws IOException {
	if (new File(path).exists()) {
		EPackage existing = (EPackage) OcciHelper.getRootElement(resourceSet, "file:/" + path);
		for (Iterator<EObject> iterator = existing.eAllContents(); iterator.hasNext();) {
			EObject eo = iterator.next();
			if (eo instanceof EAnnotation && isOCLRelated((EAnnotation) eo)) {
				EModelElement existingContainer = (EModelElement) eo.eContainer();
				EModelElement generatedContainer = (EModelElement) getGeneratedElement(generated,
						existingContainer);
				if (generatedContainer == null) {
					throw new RuntimeException("Unable to find " + existingContainer + " to reattach " + eo + " "
							+ ((EAnnotation) eo).getEAnnotations());
				} else {
					generatedContainer.getEAnnotations().add((EAnnotation) EcoreUtil.copy(eo));
				}
			}
		}
	}
	ConverterUtils.save(resourceSet, generated, "file:/" + path);
}
 
開發者ID:occiware,項目名稱:OCCI-Studio,代碼行數:21,代碼來源:ConverterUtils.java

示例4: isInherited

import org.eclipse.emf.ecore.EObject; //導入方法依賴的package包/類
public boolean isInherited() {
	final EObject implParent = parent != null ? parent.getElementAPI() : null;
	final EObject impl = getElementAPI();
	if (implParent instanceof ContainerType<?> && impl instanceof TMember) {
		return impl.eContainer() != implParent;
	}
	return false;
}
 
開發者ID:eclipse,項目名稱:n4js,代碼行數:9,代碼來源:ProjectComparisonEntry.java

示例5: findContainer

import org.eclipse.emf.ecore.EObject; //導入方法依賴的package包/類
public static <T> T findContainer ( EObject current, final Class<T> clazz )
{
    while ( current != null && !clazz.isAssignableFrom ( current.getClass () ) )
    {
        current = current.eContainer ();
    }
    if ( current == null )
    {
        return null;
    }
    return clazz.cast ( current );
}
 
開發者ID:eclipse,項目名稱:neoscada,代碼行數:13,代碼來源:Containers.java

示例6: evadeStaticPolyfillResource

import org.eclipse.emf.ecore.EObject; //導入方法依賴的package包/類
/**
 * Static polyfill modules are integrated into their corresponding polyfill aware modules. Whenever a static
 * polyfill module is found, this method retrieves the corresponding aware module and returns its resource.
 */
private Resource evadeStaticPolyfillResource(IdentifiableElement idElement) {
	TModule module = idElement.getContainingModule();
	if (module == null) // happens when executing tests
		return null;

	Resource res = module.eResource();
	if (!module.isStaticPolyfillModule())
		return res;

	EObject container = idElement;
	while (container != null && !(container instanceof TClass))
		container = container.eContainer();
	if (container == null)
		return res;
	TClass tClass = (TClass) container;
	assert (tClass.isPolyfill());

	TClass superClass = tClass.getSuperClass();
	if (superClass == null) // happens when executing tests
		return res;

	TModule superClassModule = superClass.getContainingModule();
	assert (superClassModule.isStaticPolyfillAware());

	return superClassModule.eResource();
}
 
開發者ID:eclipse,項目名稱:n4js,代碼行數:31,代碼來源:RepoRelativePathHolder.java

示例7: addInstanceModel

import org.eclipse.emf.ecore.EObject; //導入方法依賴的package包/類
@Override
public void addInstanceModel(InstanceModel instanceModel) throws PortException {
    int timer = Timer.start("IM to Ecore");
    this.m_eObjects.clear();

    visitInstanceModel(instanceModel);

    List<EObject> rootObjects = new ArrayList<>();
    for (EObject object : this.m_eObjects) {
        if (object.eContainer() != null) {
            continue;
        }
        rootObjects.add(object);
    }

    if (rootObjects.size() == 0) {
        // This effectively means there is a containment cycle
        throw new PortException("Unable to find any root object");
    }

    Timer.stop(timer);
    timer = Timer.cont("Ecore save");

    Resource typeResource =
        this.m_ecoreResource.getInstanceResource(instanceModel.getQualName());
    EList<EObject> contents = typeResource.getContents();

    //contents.add(rootObject);
    contents.addAll(rootObjects);

    Timer.stop(timer);
}
 
開發者ID:meteoorkip,項目名稱:JavaGraph,代碼行數:33,代碼來源:InstanceToEcore.java

示例8: getBestDisplayedStep

import org.eclipse.emf.ecore.EObject; //導入方法依賴的package包/類
/**
 * @param function
 * @param displayedFunctions
 * @return the function or one of its container contained in the map keys
 */
public Set<DDiagramElement> getBestDisplayedStep(Step function, Map<Step, Set<DDiagramElement>> displayedFunctions) {
 if (displayedFunctions.containsKey(function)) {
	 return displayedFunctions.get(function);
 }
 EObject ancestor = function.eContainer();
 while ((ancestor != null) && (ancestor instanceof Step)) {
	 if (displayedFunctions.containsKey(ancestor)) {
		 return displayedFunctions.get(ancestor);
	 }
	 ancestor = ancestor.eContainer();
 }
 return null;
}
 
開發者ID:polarsys,項目名稱:time4sys,代碼行數:19,代碼來源:BehaviorScenarioServices.java

示例9: isParentPartOfSameDestructuringPattern

import org.eclipse.emf.ecore.EObject; //導入方法依賴的package包/類
private static boolean isParentPartOfSameDestructuringPattern(EObject obj) {
	final EObject parent = obj != null ? obj.eContainer() : null;
	return parent instanceof ArrayLiteral || parent instanceof ArrayElement
			|| parent instanceof ObjectLiteral || parent instanceof PropertyAssignment
			|| (parent instanceof AssignmentExpression
					&& obj == ((AssignmentExpression) parent).getLhs()
					&& (parent.eContainer() instanceof ArrayElement
							|| parent.eContainer() instanceof PropertyAssignment))
			|| parent instanceof BindingPattern || parent instanceof BindingElement
			|| parent instanceof BindingProperty;
}
 
開發者ID:eclipse,項目名稱:n4js,代碼行數:12,代碼來源:N4JSASTUtils.java

示例10: currentInstructionChanged

import org.eclipse.emf.ecore.EObject; //導入方法依賴的package包/類
/**
 * {@inheritDoc}
 * 
 * @see org.eclipse.gemoc.dsl.debug.ide.adapter.IDSLCurrentInstructionListener#currentInstructionChanged(String,
 *      org.eclipse.gemoc.dsl.debug.StackFrame))
 */
public void currentInstructionChanged(String debugModelID, StackFrame frame) {
	EObject currentInstruction = frame.getCurrentInstruction();
	final Set<URI> instructionURIs = new HashSet<URI>();

	if (currentInstruction instanceof ParallelStep) {
		addMseOccurenceAndCallerToInstructionsURIs(instructionURIs,
				((ParallelStep<?, ?>)currentInstruction).getMseoccurrence());
		for (Step step : ((ParallelStep<?, ?>)currentInstruction).getSubSteps()) {
			addMseOccurenceAndCallerToInstructionsURIs(instructionURIs, step.getMseoccurrence());
		}
	} else if (currentInstruction instanceof Step) {
		if (!(currentInstruction.eContainer() instanceof ParallelStep)) {
			// do not show internal step of parallel step, because they are already shown as a
			// parallel
			addMseOccurenceAndCallerToInstructionsURIs(instructionURIs, ((Step)currentInstruction)
					.getMseoccurrence());
		}
	} else {
		instructionURIs.add(EcoreUtil.getURI(currentInstruction));
	}
	final Set<URI> lastInstructions = CURRENT_INSTRUCTIONS_PER_FRAME.remove(frame);
	if (lastInstructions != null) {
		notifySirius(lastInstructions, debugModelID);
	}
	CURRENT_INSTRUCTIONS_PER_FRAME.put(frame, instructionURIs);
	notifySirius(instructionURIs, debugModelID);
}
 
開發者ID:eclipse,項目名稱:gemoc-studio-modeldebugging,代碼行數:34,代碼來源:AbstractDSLDebuggerServices.java

示例11: getDocumentation

import org.eclipse.emf.ecore.EObject; //導入方法依賴的package包/類
private String getDocumentation(/* @NonNull */EObject object) {
	if (object.eContainer() == null) {
		// if a comment is at the beginning of the file it will be returned for
		// the root element (e.g. Script in N4JS) as well -> avoid this!
		return null;
	}

	ICompositeNode node = NodeModelUtils.getNode(object);
	if (node != null) {
		// get the last multi line comment before a non hidden leaf node
		for (ILeafNode leafNode : node.getLeafNodes()) {
			if (!leafNode.isHidden())
				break;

			EObject grammarElem = leafNode.getGrammarElement();
			if (grammarElem instanceof TerminalRule
					&& "ML_COMMENT".equalsIgnoreCase(((TerminalRule) grammarElem).getName())) {

				String comment = leafNode.getText();
				if (commentStartTagRegex.matcher(comment).matches()) {
					return leafNode.getText();
				}
			}
		}
	}
	return null;
}
 
開發者ID:eclipse,項目名稱:n4js,代碼行數:28,代碼來源:ASTGraphProvider.java

示例12: getContainingFunction

import org.eclipse.emf.ecore.EObject; //導入方法依賴的package包/類
/**
 * The function or method in which the expression is (indirectly) contained, may be null In most cases it is
 * recommended to call {@link #getContainingFunctionOrAccessor(EObject)} instead.
 */
public static FunctionDefinition getContainingFunction(EObject eobj) {
	if (eobj == null || eobj.eContainer() == null) {
		return null;
	}
	return EcoreUtil2.getContainerOfType(eobj.eContainer(), FunctionDefinition.class);
}
 
開發者ID:eclipse,項目名稱:n4js,代碼行數:11,代碼來源:N4JSASTUtils.java

示例13: getKeywordLabel

import org.eclipse.emf.ecore.EObject; //導入方法依賴的package包/類
/**
 * Returns a prefix that should be used in the label, e.g. 'class' of the context is a class declaration.
 */
protected String getKeywordLabel(EObject source) {
	while (source instanceof TypeRef) {
		source = source.eContainer();
	}
	if (source != null) {
		return keywordProvider.keyword(source);
	}
	return null;
}
 
開發者ID:eclipse,項目名稱:n4js,代碼行數:13,代碼來源:ReferenceFinderLabelProvider.java

示例14: getConfiguration

import org.eclipse.emf.ecore.EObject; //導入方法依賴的package包/類
/**
 * Get the configuration containing a given entity.
 * 
 * @param entity
 *            the given entity.
 * @return the entity configuration.
 * @throws java.lang.IllegalArgumentException
 *             If the given entity is not a resource or a link.
 */
public static Configuration getConfiguration(final Entity entity) {
	if (entity instanceof Resource) {
		return (Configuration) entity.eContainer();
	} else if (entity instanceof Link) {
		EObject econtainer = entity.eContainer();
		return (econtainer == null) ? null : (Configuration) econtainer.eContainer();
	} else {
		throw new IllegalArgumentException(entity.toString() + " is not a resource or link!");
	}
}
 
開發者ID:occiware,項目名稱:OCCI-Studio,代碼行數:20,代碼來源:OcciHelper.java

示例15: isValueTransient

import org.eclipse.emf.ecore.EObject; //導入方法依賴的package包/類
@Override
public ValueTransient isValueTransient(EObject semanticObject, EStructuralFeature feature) {

	if (feature == OCCIPackage.Literals.ATTRIBUTE__MUTABLE) {
		if (semanticObject.eContainer() instanceof Type || semanticObject.eContainer() instanceof RecordType) {
			if ((boolean)semanticObject.eGet(feature)) {
				return ValueTransient.NO;
			}
		}
	}
	if (feature == OCCIPackage.Literals.RESOURCE__RLINKS) {
		return ValueTransient.YES;
	}
	return super.isValueTransient(semanticObject, feature);
}
 
開發者ID:occiware,項目名稱:OCCI-Studio,代碼行數:16,代碼來源:OCCICustomLegacyTransientValueService.java


注:本文中的org.eclipse.emf.ecore.EObject.eContainer方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。