Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Use bnd-maven-plugin instead of maven-bundle-plugin and helper class, and
add support for publishing static resources such as themes and widgetsets.
  • Loading branch information
mmerruko committed Mar 30, 2017
1 parent 3d018d4 commit b5665fa
Show file tree
Hide file tree
Showing 30 changed files with 709 additions and 577 deletions.

This file was deleted.

6 changes: 6 additions & 0 deletions client-compiled/bnd.bnd
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Bundle-SymbolicName: ${project.groupId}.client.compiled
Bundle-Name: Default Widgetset
Bundle-Version: ${osgi.bundle.version}
Import-Package: com.vaadin*;version='[${osgi.bundle.version},${osgi.bundle.version}]',\
*
Export-Package: com.vaadin.osgi.widgetset;-noimport:=true
76 changes: 20 additions & 56 deletions client-compiled/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,13 @@
<scope>provided</scope>
</dependency>

<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>vaadin-shared</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>vaadin-client</artifactId>
Expand All @@ -49,40 +56,19 @@
<version>${project.version}</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.osgi</groupId>
<artifactId>osgi.core</artifactId>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>osgi.cmpn</artifactId>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>generate-export-package</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<classpathScope>compile</classpathScope>
<executable>${java.home}/bin/java</executable>
<arguments>
<argument>-Dvaadin.version=${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}</argument>
<argument>-DincludeNumberPackages=1</argument>

<argument>-classpath</argument>
<classpath />

<argument>com.vaadin.buildhelpers.GeneratePackageExports</argument>

<argument>${project.build.directory}/${project.build.finalName}.${project.packaging}</argument>
<argument>VAADIN/widgetsets</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>

<plugin>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-maven-plugin</artifactId>
Expand All @@ -103,32 +89,10 @@
</execution>
</executions>
</plugin>


<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-Version>${osgi.bundle.version}</Bundle-Version>
<Bundle-RequiredExecutionEnvironment>${osgi.execution.environment}</Bundle-RequiredExecutionEnvironment>
<!-- Export package is handled in exec plugin -->
<Export-Package></Export-Package>
<Import-Package></Import-Package>
</instructions>
</configuration>
<executions>
<execution>
<id>bundle-manifest</id>
<phase>prepare-package</phase>
<goals>
<goal>manifest</goal>
</goals>
</execution>
</executions>
</plugin>

<plugin>
<groupId>biz.aQute.bnd</groupId>
<artifactId>bnd-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.vaadin.osgi.widgetset;

import org.osgi.service.component.ComponentContext;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.http.HttpService;

import com.vaadin.osgi.resources.OSGiVaadinResources;
import com.vaadin.osgi.resources.VaadinResourceService;

@Component(immediate = true)
public class DefaultWidgetsetContribution {
private HttpService httpService;

private static final String WIDGETSET_NAME = "com.vaadin.DefaultWidgetSet";

@Activate
void startup(ComponentContext context) throws Exception {
VaadinResourceService service = OSGiVaadinResources.getService();
service.publishWidgetset(WIDGETSET_NAME, httpService);
}

@Reference
void setHttpService(HttpService httpService) {
this.httpService = httpService;
}

void unsetHttpService(HttpService httpService) {
this.httpService = null;
}
}
6 changes: 6 additions & 0 deletions compatibility-client-compiled/bnd.bnd
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Bundle-SymbolicName: ${project.groupId}.compatibility.client.compiled
Bundle-Name: Compatibility Widgetset
Bundle-Version: ${osgi.bundle.version}
Import-Package: com.vaadin*;version='[${osgi.bundle.version},${osgi.bundle.version}]',\
*
Export-Package: com.vaadin.osgi.compatibility.widgetset;-noimport:=true
Loading

2 comments on commit b5665fa

@QNENet
Copy link

@QNENet QNENet commented on b5665fa Apr 5, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HI,
Not sure if this the right place to report but,
I have downloaded and installed vaadin-all-8.0.0.dev-1531 to check out the direction you are taking with OSGi in Vaadin as I have been working with vaadin in an OSGi environment for some time.
vaadin server fails to resolve because it has an import requirement com.googlecode.gentyref that is not optional.
I am trying the bundles out in Eclipse Neon in an OSGi enRoute project. I could provide a video of the situation if you are interested.

@mmerruko
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @QNENet! Thank you for your comment. We are aware of the issue and https://github.com/vaadin/gentyref is what needs to be in the dependencies instead of gentyref in order for the import statement to be generated in the MANIFEST.MF.

You can install it in your local repository and edit the dependency to gentyref if you wish to try it out. I'm writing some small examples and documentation on how to set things up and use this contributions. Any feedback is more than welcome.

Please sign in to comment.