All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.joynr.generator.interfaces.InterfaceGenerator Maven / Gradle / Ivy

package io.joynr.generator.interfaces;

import com.google.inject.Inject;
import com.google.inject.name.Named;
import io.joynr.generator.templates.util.NamingUtil;
import io.joynr.generator.util.JavaTemplateFactory;
import io.joynr.generator.util.JoynrJavaGeneratorExtensions;
import java.io.File;
import org.eclipse.xtext.generator.IFileSystemAccess;
import org.eclipse.xtext.xbase.lib.Extension;
import org.franca.core.franca.FInterface;

@SuppressWarnings("all")
public class InterfaceGenerator {
  @Inject
  @Extension
  private JoynrJavaGeneratorExtensions _joynrJavaGeneratorExtensions;

  @Inject
  @Extension
  private NamingUtil _namingUtil;

  @Inject
  private JavaTemplateFactory templateFactory;

  @Inject
  @Named("generateProxyCode")
  public boolean generateProxyCode;

  public void doGenerate(final FInterface serviceInterface, final IFileSystemAccess fsa, final boolean generateVersion) {
    String _packagePathWithJoynrPrefix = this._joynrJavaGeneratorExtensions.getPackagePathWithJoynrPrefix(serviceInterface, File.separator, generateVersion);
    final String path = (_packagePathWithJoynrPrefix + File.separator);
    String serviceName = this._namingUtil.joynrName(serviceInterface);
    InterfacesTemplate interfacesTemplate = this.templateFactory.createInterfacesTemplate(serviceInterface);
    this._joynrJavaGeneratorExtensions.generateFile(fsa, 
      ((path + serviceName) + ".java"), interfacesTemplate, generateVersion);
    if (this.generateProxyCode) {
      InterfaceSyncTemplate interfaceSyncTemplate = this.templateFactory.createInterfaceSyncTemplate(serviceInterface);
      this._joynrJavaGeneratorExtensions.generateFile(fsa, 
        ((path + serviceName) + "Sync.java"), interfaceSyncTemplate, generateVersion);
      InterfaceAsyncTemplate interfaceAsyncTemplate = this.templateFactory.createInterfaceAsyncTemplate(serviceInterface);
      this._joynrJavaGeneratorExtensions.generateFile(fsa, 
        ((path + serviceName) + "Async.java"), interfaceAsyncTemplate, generateVersion);
      InterfaceFireAndForgetTemplate interfaceFireAndForgetTemplate = this.templateFactory.createInterfaceFireAndForgetTemplate(serviceInterface);
      this._joynrJavaGeneratorExtensions.generateFile(fsa, 
        ((path + serviceName) + "FireAndForget.java"), interfaceFireAndForgetTemplate, generateVersion);
      InterfaceStatelessAsyncTemplate interfaceStatelessAsyncTemplate = this.templateFactory.createInterfaceStatelessAsyncTemplate(serviceInterface);
      this._joynrJavaGeneratorExtensions.generateFile(fsa, 
        ((path + serviceName) + "StatelessAsync.java"), interfaceStatelessAsyncTemplate, generateVersion);
      InterfaceStatelessAsyncCallbackTemplate interfaceStatelessAsyncCallbackTemplate = this.templateFactory.createInterfaceStatelessAsyncCallbackTemplate(serviceInterface);
      this._joynrJavaGeneratorExtensions.generateFile(fsa, 
        ((path + serviceName) + "StatelessAsyncCallback.java"), interfaceStatelessAsyncCallbackTemplate, generateVersion);
      int _size = serviceInterface.getAttributes().size();
      boolean _greaterThan = (_size > 0);
      if (_greaterThan) {
        InterfaceSubscriptionTemplate interfaceSubscriptionTemplate = this.templateFactory.createInterfaceSubscriptionTemplate(serviceInterface);
        this._joynrJavaGeneratorExtensions.generateFile(fsa, 
          ((path + serviceName) + "SubscriptionInterface.java"), interfaceSubscriptionTemplate, generateVersion);
      }
    }
    int _size_1 = serviceInterface.getBroadcasts().size();
    boolean _greaterThan_1 = (_size_1 > 0);
    if (_greaterThan_1) {
      InterfaceBroadcastTemplate interfaceBroadcastTemplate = this.templateFactory.createInterfaceBroadcastTemplate(serviceInterface);
      this._joynrJavaGeneratorExtensions.generateFile(fsa, 
        ((path + serviceName) + "BroadcastInterface.java"), interfaceBroadcastTemplate, generateVersion);
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy