/** * Recursively traverse the types in this resource to mark them as lazy initialized types. */ private void markPendingInitialization(JvmDeclaredTypeImplCustom type) { type.setPendingInitialization(true); for (JvmMember member : type.basicGetMembers()) { if (member instanceof JvmDeclaredTypeImplCustom) { markPendingInitialization((JvmDeclaredTypeImplCustom) member); } } }
@Override public Iterable<JvmFeature> getAllFeatures() { if (allFeatures == null) { allFeatures = doSynchronized(new Provider<Set<JvmFeature>>() { public Set<JvmFeature> get() { if (allFeatures != null) return allFeatures; Set<JvmFeature> result = Sets.newLinkedHashSet(); Map<String, Set<JvmFeature>> allFeaturesMap = getAllFeaturesMap(); for (String name : allFeaturesMap.keySet()) { Iterables.addAll(result, findAllFeaturesByName(name)); } Runnable runnable = new Runnable() { public void run() { doSynchronized(new Provider<Object>() { public Object get() { allFeatures = null; return null; }}); } }; requestNotificationOnChange(runnable); return result; }}); } return allFeatures; }
/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) { if (baseClass == JvmTypeParameterDeclarator.class) { switch (derivedFeatureID) { case TypesPackage.JVM_GENERIC_TYPE__TYPE_PARAMETERS: return TypesPackage.JVM_TYPE_PARAMETER_DECLARATOR__TYPE_PARAMETERS; default: return -1; } } return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass); }
public JvmArrayType get() { JvmArrayType result = TypesFactory.eINSTANCE.createJvmArrayType(); boolean wasDeliver = eDeliver(); eSetDeliver(false); try { setArrayType(result); } finally { eSetDeliver(wasDeliver); } return result; } });
@Override public JvmArrayType getArrayType() { checkPendingInitialization(); JvmArrayType result = super.getArrayType(); if (result == null) { result = doSynchronized(new Provider<JvmArrayType>() { @Override public JvmArrayType get() { JvmArrayType result = TypesFactory.eINSTANCE.createJvmArrayType(); boolean wasDeliver = eDeliver(); eSetDeliver(false); try { setArrayType(result); } finally { eSetDeliver(wasDeliver); } return result; } }); } return result; }
protected void checkPendingInitialization() { if (!isPendingInitialization) { return; } Resource resource = this.eResource(); if (resource instanceof JvmMemberInitializableResource) { ((JvmMemberInitializableResource) resource).ensureJvmMembersInitialized(); isPendingInitialization = false; } }
if (allNestedTypesByName == null) { final Set<JvmDeclaredType> processedSuperTypes = processedTypes == null ? Sets.<JvmDeclaredType>newHashSet() : processedTypes; allNestedTypesByName = doSynchronized(new Provider<Map<String, Set<JvmDeclaredType>>>() { @Override public Map<String, Set<JvmDeclaredType>> get() { if (eResource() instanceof XtextResource) { XtextResource xtextResource = (XtextResource) eResource(); CompilerPhases compilerPhases = xtextResource.getResourceServiceProvider().get(CompilerPhases.class); if (compilerPhases.isIndexing(xtextResource.getResourceSet())) {
private void doGetAllDescriptions(JvmDeclaredType type, List<IEObjectDescription> descriptions) { descriptions.add(EObjectDescription.create(getQualifiedNameConverter().toQualifiedName(type.getIdentifier()), type)); EList<JvmMember> members = null; if (type instanceof JvmDeclaredTypeImplCustom) { members = ((JvmDeclaredTypeImplCustom)type).basicGetMembers(); } else { members = type.getMembers(); } for(JvmMember member: members) { if (member instanceof JvmDeclaredType) { // add nested types also with the dot delimiter descriptions.add(EObjectDescription.create(getQualifiedNameConverter().toQualifiedName(member.getQualifiedName('.')), member)); doGetAllDescriptions((JvmDeclaredType) member, descriptions); } } }
/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { case TypesPackage.JVM_ENUMERATION_TYPE__LITERALS: return getLiterals(); } return super.eGet(featureID, resolve, coreType); }
/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { case TypesPackage.JVM_ENUMERATION_TYPE__LITERALS: return literals != null && !literals.isEmpty(); } return super.eIsSet(featureID); }
/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @SuppressWarnings("unchecked") @Override public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { case TypesPackage.JVM_GENERIC_TYPE__TYPE_PARAMETERS: return ((InternalEList<InternalEObject>)(InternalEList<?>)getTypeParameters()).basicAdd(otherEnd, msgs); } return super.eInverseAdd(otherEnd, featureID, msgs); }
/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { case TypesPackage.JVM_GENERIC_TYPE__TYPE_PARAMETERS: return ((InternalEList<?>)getTypeParameters()).basicRemove(otherEnd, msgs); } return super.eInverseRemove(otherEnd, featureID, msgs); }
/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) { if (baseClass == JvmTypeParameterDeclarator.class) { switch (baseFeatureID) { case TypesPackage.JVM_TYPE_PARAMETER_DECLARATOR__TYPE_PARAMETERS: return TypesPackage.JVM_GENERIC_TYPE__TYPE_PARAMETERS; default: return -1; } } return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass); }
@Override public JvmArrayType get() { JvmArrayType result = TypesFactory.eINSTANCE.createJvmArrayType(); boolean wasDeliver = eDeliver(); eSetDeliver(false); try { setArrayType(result); } finally { eSetDeliver(wasDeliver); } return result; } });
protected <T> T doSynchronized(final Provider<? extends T> provider) { Resource eResource = eResource(); if (eResource instanceof ISynchronizable<?>) { try { T result = ((ISynchronizable<?>) eResource).execute(new IUnitOfWork<T, Object>() { public T exec(Object state) throws Exception { T result = provider.get(); return result; } }); return result; } catch (RuntimeException e) { throw e; } catch (Exception e) { throw new WrappedException(e); } } else { // not in a resource, don't lock return provider.get(); } }
private void doGetAllDescriptions(JvmDeclaredType type, List<IEObjectDescription> descriptions) { descriptions.add(EObjectDescription.create(getQualifiedNameConverter().toQualifiedName(type.getIdentifier()), type)); final EList<JvmMember> members; if (type instanceof JvmDeclaredTypeImplCustom) { members = ((JvmDeclaredTypeImplCustom) type).basicGetMembers(); } else { members = type.getMembers(); } for (final JvmMember member: members) { if (member instanceof JvmDeclaredType) { // add nested types also with the dot delimiter descriptions.add(EObjectDescription.create(getQualifiedNameConverter().toQualifiedName( member.getQualifiedName('.')), member)); doGetAllDescriptions((JvmDeclaredType) member, descriptions); } } }
/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { case TypesPackage.JVM_ENUMERATION_TYPE__LITERALS: return getLiterals(); } return super.eGet(featureID, resolve, coreType); }
/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { case TypesPackage.JVM_ENUMERATION_TYPE__LITERALS: return literals != null && !literals.isEmpty(); } return super.eIsSet(featureID); }
/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @SuppressWarnings("unchecked") @Override public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { case TypesPackage.JVM_GENERIC_TYPE__TYPE_PARAMETERS: return ((InternalEList<InternalEObject>)(InternalEList<?>)getTypeParameters()).basicAdd(otherEnd, msgs); } return super.eInverseAdd(otherEnd, featureID, msgs); }
/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ @Override public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { switch (featureID) { case TypesPackage.JVM_GENERIC_TYPE__TYPE_PARAMETERS: return ((InternalEList<?>)getTypeParameters()).basicRemove(otherEnd, msgs); } return super.eInverseRemove(otherEnd, featureID, msgs); }