Java 类org.eclipse.xtext.linking.lazy.LazyURIEncoder 实例源码

项目:xtext-extras    文件:ErrorTreeAppendable.java   
protected LazyURIEncoder getOrCreateURIEncoder() {
    Resource resource = getState().getResource();
    if (resource instanceof LazyLinkingResource) {
        return ((LazyLinkingResource) resource).getEncoder();
    }
    return new LazyURIEncoder();
}
项目:xtext-core    文件:DefaultReferenceDescriptionTest.java   
protected IResourceDescription createResourceDescription(Resource testResource) {
    DefaultResourceDescriptionStrategy strategy = new DefaultResourceDescriptionStrategy();
    strategy.setQualifiedNameProvider(new IQualifiedNameProvider.AbstractImpl() {
        @Override
        public QualifiedName getFullyQualifiedName(EObject obj) {
            String name = SimpleAttributeResolver.NAME_RESOLVER.apply(obj);
            return (name != null) ? QualifiedName.create(name) : null;
        }
    });
    strategy.setLazyURIEncoder(new LazyURIEncoder());
    IResourceDescription resourceDescription = new DefaultResourceDescription(testResource, strategy);
    return resourceDescription;
}
项目:dsl-devkit    文件:BuilderIntegrationFragment.java   
@Override
public Set<Binding> getGuiceBindingsRt(final Grammar grammar) {
  final Set<Binding> bindings = super.getGuiceBindingsRt(grammar);
  final BindFactory factory = new BindFactory();
  factory.addTypeToType(IContainer.Manager.class.getName(), "com.avaloq.tools.ddk.xtext.builder.CachingStateBasedContainerManager");
  factory.addTypeToType(LazyLinkingResource.class.getName(), LazyLinkingResource2.class.getName());
  factory.addTypeToType(LazyURIEncoder.class.getName(), FastLazyURIEncoder.class.getName());
  final Set<Binding> result = factory.getBindings();
  result.addAll(bindings);
  return result;
}
项目:dsl-devkit    文件:DirectLinkingResourceStorageWritable.java   
/**
 * Returns a string representation of the given object's URI. For objects contained by the given resource the object's {@link Resource#getURIFragment(EObject)
 * URI fragment} will be returned. For objects in other resources the {@link EcoreUtil#getURI(EObject) full URI} will be returned with an exclamation mark as
 * prefix.
 *
 * @param obj
 *          object to get URI string for
 * @param context
 *          resource being serialized, must not be {@code null}
 * @return URI string or {@code null} if the object is {@code null}, a lazy-linking proxy, or not a proxy but contained in a resource
 */
protected static String getURIString(final EObject obj, final Resource context) {
  if (obj == null) {
    return null;
  }
  Resource resource = obj.eResource();
  if (resource == null) {
    if (obj.eIsProxy()) {
      URI proxyURI = ((InternalEObject) obj).eProxyURI();
      return proxyURI.fragment().startsWith(LazyURIEncoder.XTEXT_LINK) ? null : '!' + proxyURI.toString();
    }
    return null;
  }
  return resource == context ? getURIFragmentPath(obj, context) : '!' + resource.getURI().toString() + '#' + resource.getURIFragment(obj); // NOPMD
}
项目:xtext-core    文件:DefaultResourceDescriptionStrategy.java   
/** @since 2.0 */
public void setLazyURIEncoder(LazyURIEncoder uriEncoder) {
    this.uriEncoder = uriEncoder;
}
项目:xtext-core    文件:DefaultResourceDescriptionStrategy.java   
/** @since 2.0 */
public LazyURIEncoder getLazyURIEncoder() {
    return uriEncoder;
}
项目:xtext-core    文件:DefaultRuntimeModule.java   
/**
 * @since 2.7
 */
public void configureUseIndexFragmentsForLazyLinking(com.google.inject.Binder binder) {
    binder.bind(Boolean.TYPE).annotatedWith(Names.named(LazyURIEncoder.USE_INDEXED_FRAGMENTS_BINDING)).toInstance(Boolean.TRUE);
}
项目:xtext-core    文件:Bug419429RuntimeModule.java   
@Override
public void configureUseIndexFragmentsForLazyLinking(Binder binder) {
    binder.bind(Boolean.TYPE).annotatedWith(Names.named(LazyURIEncoder.USE_INDEXED_FRAGMENTS_BINDING)).toInstance(Boolean.FALSE);
}
项目:xtext-core    文件:DefaultReferenceDescriptionTest.java   
/** @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=330812 */
@Test public void testLazyLinkingProxyReferences() {
    URI resourceUri = URI.createPlatformResourceURI("test.ecore", true);
    LazyURIEncoder lazyURIEncoder = new LazyURIEncoder();

    ResourceSet resourceSet = new ResourceSetImpl();
    Resource testResource = resourceSet.createResource(resourceUri);

    EPackage ePackage = EcoreFactory.eINSTANCE.createEPackage();
    ePackage.setName("test");
    ePackage.setNsPrefix("test");
    ePackage.setNsURI("test");
    testResource.getContents().add(ePackage);

    EClass eClass = EcoreFactory.eINSTANCE.createEClass();
    eClass.setName("Test");
    ePackage.getEClassifiers().add(eClass);

    EClass multiRefType = EcoreFactory.eINSTANCE.createEClass();
    ((InternalEObject) multiRefType).eSetProxyURI(EcoreUtil.getURI(EcorePackage.Literals.EPACKAGE));
    eClass.getESuperTypes().add(multiRefType);

    EClass multiRefType2 = EcoreFactory.eINSTANCE.createEClass();
    URI dummyProxyUri = resourceUri.appendFragment(lazyURIEncoder.encode(eClass, EcorePackage.Literals.ECLASS__ESUPER_TYPES, null));
    ((InternalEObject) multiRefType2).eSetProxyURI(dummyProxyUri);
    eClass.getESuperTypes().add(multiRefType2);

    EAttribute nameAttribute = EcoreFactory.eINSTANCE.createEAttribute();
    nameAttribute.setName("name");
    eClass.getEStructuralFeatures().add(nameAttribute);
    EDataType singleRefType = EcoreFactory.eINSTANCE.createEDataType();
    ((InternalEObject) singleRefType).eSetProxyURI(EcoreUtil.getURI(EcorePackage.Literals.ESTRING));
    nameAttribute.setEType(singleRefType);

    assertTrue(multiRefType.eIsProxy());
    assertTrue(multiRefType2.eIsProxy());
    assertTrue(lazyURIEncoder.isCrossLinkFragment(testResource, EcoreUtil.getURI(multiRefType2).fragment()));
    assertTrue(singleRefType.eIsProxy());

    IResourceDescription resourceDescription = createResourceDescription(testResource);
    Iterable<IReferenceDescription> referenceDescriptions = resourceDescription.getReferenceDescriptions();
    assertEquals("Unexpected additional resources were loaded", 1, resourceSet.getResources().size());
    assertEquals("Unexpected reference was exported", 3, Iterables.size(referenceDescriptions));

    IReferenceDescription referenceDescription = Iterables.get(referenceDescriptions, 0);
    assertEquals(0, referenceDescription.getIndexInList());
    assertEquals(EcoreUtil.getURI(eClass), referenceDescription.getSourceEObjectUri());
    assertEquals(EcorePackage.Literals.ECLASS__ESUPER_TYPES, referenceDescription.getEReference());
    assertEquals(EcoreUtil.getURI(EcorePackage.Literals.EPACKAGE), referenceDescription.getTargetEObjectUri());

    referenceDescription = Iterables.get(referenceDescriptions, 1);
    assertEquals(-1, referenceDescription.getIndexInList());
    assertEquals(EcoreUtil.getURI(nameAttribute.getEGenericType()), referenceDescription.getSourceEObjectUri());
    assertEquals(EcorePackage.Literals.EGENERIC_TYPE__ECLASSIFIER, referenceDescription.getEReference());
    assertEquals(EcoreUtil.getURI(EcorePackage.Literals.ESTRING), referenceDescription.getTargetEObjectUri());

    referenceDescription = Iterables.get(referenceDescriptions, 2);
    assertEquals(-1, referenceDescription.getIndexInList());
    assertEquals(EcoreUtil.getURI(eClass.getEGenericSuperTypes().get(0)), referenceDescription.getSourceEObjectUri());
    assertEquals(EcorePackage.Literals.EGENERIC_TYPE__ECLASSIFIER, referenceDescription.getEReference());
    assertEquals(EcoreUtil.getURI(EcorePackage.Literals.EPACKAGE), referenceDescription.getTargetEObjectUri());
}
项目:dsl-devkit    文件:DefaultCrossReferenceHelper.java   
/**
 * Returns the {@link LazyURIEncoder} used for the context language.
 *
 * @return {@link LazyURIEncoder} instance, never {@code null}
 */
protected LazyURIEncoder getLazyURIEncoder() {
  return uriEncoder;
}