protected void checkPendingInitialization() { if (!isPendingInitialization) { return; } Resource resource = this.eResource(); if (resource instanceof JvmMemberInitializableResource) { ((JvmMemberInitializableResource) resource).ensureJvmMembersInitialized(); isPendingInitialization = false; } }
@Override protected void validateResourceState(Resource resource) { super.validateResourceState(resource); if (resource instanceof DerivedStateAwareResource && ((DerivedStateAwareResource) resource).isInitializing()) { LOG.error("Discouraged attempt to compute types during model inference. Resource was : "+resource.getURI(), new Exception()); } if (resource instanceof JvmMemberInitializableResource && ((JvmMemberInitializableResource) resource).isInitializingJvmMembers()) { LOG.error("Discouraged attempt to compute types during JvmMember initialization. Resource was : "+resource.getURI(), new Exception()); } }
lateJvmMemberInit = ((JvmMemberInitializableResource) resource).hasJvmMemberInitializers(); ((JvmMemberInitializableResource) resource).addJvmMemberInitializer(initialization); } else { initialization.run(); ((JvmMemberInitializableResource) resource).addJvmMemberInitializer(completingRunnable); } else { completingRunnable.run();
@Override public final IResolvedTypes resolveTypes(final /* @Nullable */ EObject object, CancelIndicator monitor) { if (object == null || object.eIsProxy()) { return IResolvedTypes.NULL; } Resource resource = object.eResource(); validateResourceState(resource); if (resource instanceof JvmMemberInitializableResource) { ((JvmMemberInitializableResource) resource).ensureJvmMembersInitialized(); } return doResolveTypes(object, monitor); }
/** * Checks the internal state of the resource and logs if type resolution was triggered unexpectedly. * If such a condition is detected, an {@link IllegalStateException exception} is thrown. * * @throws IllegalStateException if the resource is in an unexpected state. */ @Override protected void validateResourceState(Resource resource) { if (resource instanceof StorageAwareResource && ((StorageAwareResource) resource).isLoadedFromStorage()) { throw new IllegalStateException("Discouraged attempt to compute types for resource that was loaded from storage. Resource was : "+resource.getURI()); } if (resource instanceof DerivedStateAwareResource && ((DerivedStateAwareResource) resource).isInitializing()) { throw new IllegalStateException("Discouraged attempt to compute types during model inference. Resource was : "+resource.getURI()); } if (resource instanceof JvmMemberInitializableResource && ((JvmMemberInitializableResource) resource).isInitializingJvmMembers()) { throw new IllegalStateException("Discouraged attempt to compute types during JvmMember initialization. Resource was : "+resource.getURI()); } }
protected Adapter getOrInstall(Resource resource) { if (!(resource instanceof XtextResource)) { return new Adapter(); } if (resource instanceof JvmMemberInitializableResource) { ((JvmMemberInitializableResource) resource).ensureJvmMembersInitialized(); } String resourceLanguageName = ((XtextResource) resource).getLanguageName(); if (!languageName.equals(resourceLanguageName)){ return new Adapter(); } Adapter adapter = (Adapter) EcoreUtil.getAdapter(resource.eAdapters(), Adapter.class); if (adapter == null) { adapter = new Adapter(); resource.eAdapters().add(adapter); } return adapter; }