Skip to content

Commit

Permalink
Devtool (#1)
Browse files Browse the repository at this point in the history
Signed-off-by: shiv12095 <shiv12095@iiitd.ac.in>

* Created information model web editor

* Adding references to Information Model and modifying its EObject at backend while adding new Function Blocks. Updating code on the editor with code generated at backend

* Added generation of variable names on Function Block addition

* Created new module repo-http-models. Moved ModelId, ModelResource and ModelType from repo-core to repo-http-models. Fixed the dependecies in repo-core and repo-ui due to this change

* Refactored code to create a generic resource linker

* 1 Removed unrequired dependecies from vorto-http-models. 2 Changed version of angular-route from 1.3.14 to CQ approved 1.3.13

* Created application configuration file for devtool. Added vorto.repository.base.path as a configutaion
  • Loading branch information
shiv12095 committed Jul 25, 2016
1 parent 54a15d2 commit cd7dc2b
Show file tree
Hide file tree
Showing 61 changed files with 1,800 additions and 147 deletions.
26 changes: 26 additions & 0 deletions bundles/org.eclipse.vorto.editor.infomodel.web/pom.xml
Expand Up @@ -67,11 +67,22 @@
</build>

<dependencies>
<!-- http://mvnrepository.com/artifact/org.springframework/spring-web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.eclipse.vorto</groupId>
<artifactId>org.eclipse.vorto.core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.vorto</groupId>
<artifactId>org.eclipse.vorto.editor.datatype</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.vorto</groupId>
<artifactId>org.eclipse.vorto.editor.functionblock</artifactId>
Expand Down Expand Up @@ -117,6 +128,21 @@
<artifactId>ace</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>angularjs</artifactId>
<version>1.3.13</version>
</dependency>
<dependency>
<groupId>org.webjars.bower</groupId>
<artifactId>angular-route</artifactId>
<version>1.3.13</version>
</dependency>
<dependency>
<groupId>org.webjars.npm</groupId>
<artifactId>angular-smart-table</artifactId>
<version>2.1.6</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-annotations</artifactId>
Expand Down
Expand Up @@ -18,11 +18,17 @@
*/
package org.eclipse.vorto.editor.infomodel.web

import org.eclipse.vorto.editor.infomodel.web.resource.InformationModelResourceSetProvider
import org.eclipse.xtend.lib.annotations.FinalFieldsConstructor
import org.eclipse.xtext.web.server.model.IWebResourceSetProvider

/**
* Use this class to register additional components to be used within the web application.
*/
@FinalFieldsConstructor
class InformationModelWebModule extends AbstractInformationModelWebModule {

def Class<? extends IWebResourceSetProvider> bindIWebResourceSetProvider() {
return InformationModelResourceSetProvider
}
}
@@ -0,0 +1,40 @@
package org.eclipse.vorto.editor.infomodel.web.resource

import java.util.HashSet
import java.util.Set
import org.eclipse.emf.ecore.resource.ResourceSet
import org.eclipse.xtext.web.server.IServiceContext
import org.eclipse.xtext.web.server.model.IWebResourceSetProvider
import com.google.inject.Inject
import com.google.inject.Provider
import com.google.inject.Singleton

@Singleton
class InformationModelResourceSetProvider implements IWebResourceSetProvider {

@Inject package Provider<ResourceSet> provider

override ResourceSet get(String resourceId, IServiceContext serviceContext) {
return getResourceSetFromSession(serviceContext)
}

def ResourceSet getResourceSetFromSession(IServiceContext serviceContext) {
if (serviceContext.getSession().get("set") === null) {
var ResourceSet resourceSet = provider.get()
serviceContext.getSession().put("set", resourceSet)
return resourceSet
} else {
return serviceContext.getSession().get("set")
}
}

def Set<String> getReferencedResourcesFromSession(IServiceContext serviceContext) {
if (serviceContext.getSession().get("referenceSet") === null) {
var HashSet<String> referencedResourceSet = new HashSet()
serviceContext.getSession().put("referenceSet", referencedResourceSet)
return referencedResourceSet
} else {
return serviceContext.getSession().get("referenceSet")
}
}
}
87 changes: 44 additions & 43 deletions server/devtool/pom.xml
Expand Up @@ -14,7 +14,7 @@
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.0.RELEASE</version>
</parent>

<properties>
<xtext.version>2.9.2</xtext.version>
</properties>
Expand All @@ -24,6 +24,12 @@
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>
-Xdebug
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005
</jvmArguments>
</configuration>
</plugin>
</plugins>
<pluginManagement>
Expand Down Expand Up @@ -54,11 +60,31 @@
</exclusions>
</dependency>

<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.5.6</version>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>

<dependency>
<groupId>org.eclipse.vorto</groupId>
<artifactId>org.eclipse.vorto.core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.vorto</groupId>
<artifactId>repo-http-models</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.eclipse.vorto</groupId>
<artifactId>org.eclipse.vorto.editor.infomodel</artifactId>
Expand All @@ -80,50 +106,25 @@
</exclusion>
</exclusions>
</dependency>
<!-- <dependency>
<groupId>org.eclipse.xtext</groupId>
<artifactId>org.eclipse.xtext.web.servlet</artifactId>
<version>${xtext.version}</version>
</dependency>
<!-- http://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.eclipse.xtend</groupId>
<artifactId>org.eclipse.xtend.lib</artifactId>
<version>${xtext.version}</version>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.1</version>
</dependency>

<dependency>
<groupId>org.eclipse.xtext</groupId>
<artifactId>org.eclipse.xtext</artifactId>
<version>${xtext.version}</version>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- <dependency> <groupId>org.eclipse.xtext</groupId> <artifactId>org.eclipse.xtext.web.servlet</artifactId>
<version>${xtext.version}</version> </dependency> <dependency> <groupId>org.eclipse.xtend</groupId>
<artifactId>org.eclipse.xtend.lib</artifactId> <version>${xtext.version}</version>
<exclusions> <exclusion> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId>
</exclusion> </exclusions> </dependency> <dependency> <groupId>org.eclipse.xtext</groupId>
<artifactId>org.eclipse.xtext</artifactId> <version>${xtext.version}</version>
<exclusions> <exclusion> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId>
</exclusion> </exclusions> </dependency> <dependency> <groupId>org.eclipse.xtext</groupId>
<artifactId>org.eclipse.xtext.xbase</artifactId> <version>${xtext.version}</version>
<exclusions> <exclusion> <groupId>org.ow2.asm</groupId> <artifactId>asm</artifactId>
</exclusion> <exclusion> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId>
</exclusion> </exclusions> </dependency> -->

<dependency>
<groupId>org.eclipse.xtext</groupId>
<artifactId>org.eclipse.xtext.xbase</artifactId>
<version>${xtext.version}</version>
<exclusions>
<exclusion>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency> -->

</dependencies>
</project>
Expand Up @@ -18,8 +18,10 @@
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication
@ComponentScan(basePackages = {"org.eclipse.vorto.server.devtool"})
public class DevToolServer extends SpringBootServletInitializer {

public static void main(String... args) {
Expand Down
Expand Up @@ -26,6 +26,7 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
Expand All @@ -38,9 +39,19 @@ public OrderedHttpPutFormContentFilter httpPutFormContentFilter() {
@Override
protected void doFilterInternal(final HttpServletRequest request, HttpServletResponse response,
FilterChain filterChain) throws ServletException, IOException {
System.out.println("Called filter for request : " + request.getPathInfo() + " " + request.getMethod());
filterChain.doFilter(request, response);
}

};
}

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/**").permitAll()
.anyRequest().authenticated()
.and()
.csrf().disable();
}
}
Expand Up @@ -14,14 +14,53 @@
*******************************************************************************/
package org.eclipse.vorto.server.devtool.config;

import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import org.eclipse.vorto.core.api.model.informationmodel.impl.InformationModelPackageImpl;
import org.eclipse.vorto.editor.functionblock.FunctionblockStandaloneSetup;
import org.eclipse.vorto.editor.infomodel.InformationModelRuntimeModule;
import org.eclipse.vorto.editor.infomodel.web.InformationModelServlet;
import org.eclipse.vorto.editor.infomodel.web.InformationModelWebModule;
import org.eclipse.xtext.xbase.lib.CollectionLiterals;
import org.eclipse.xtext.xbase.lib.ObjectExtensions;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
import org.springframework.boot.context.embedded.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Provider;
import com.google.inject.util.Modules;

@Configuration
public class XtextConfiguration {

private final List<ExecutorService> executorServices = CollectionLiterals.<ExecutorService> newArrayList();

@Bean
public Injector getOnjectorBean(){
final Provider<ExecutorService> _function = new Provider<ExecutorService>() {
@Override
public ExecutorService get() {
ExecutorService _newCachedThreadPool = Executors.newCachedThreadPool();
final Procedure1<ExecutorService> _function = new Procedure1<ExecutorService>() {
@Override
public void apply(final ExecutorService it) {
XtextConfiguration.this.executorServices.add(it);
}
};
return ObjectExtensions.<ExecutorService> operator_doubleArrow(_newCachedThreadPool, _function);
}
};
final Provider<ExecutorService> executorServiceProvider = _function;
InformationModelPackageImpl.init();
FunctionblockStandaloneSetup.doSetup();
return Guice.createInjector(Modules.override(new InformationModelRuntimeModule()).with(new InformationModelWebModule(executorServiceProvider)));
}

@Bean
public ServletRegistrationBean xtextServlet() {
return new ServletRegistrationBean(new InformationModelServlet(), "/xtext-service/*");
Expand Down

0 comments on commit cd7dc2b

Please sign in to comment.