package com.example.bookmanager;
public class Book {
private String title;
private String author;
private String publicationDate;
// ...
}
package com.example.bookmanager;
import java.util.List;
public interface BookManager {
void addBook(Book book);
void removeBook(String title);
List<Book> getBookList();
}
package com.example.bookmanager.provider;
import com.example.bookmanager.BookManager;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import java.util.ArrayList;
import java.util.List;
@Component(service = BookManager.class)
public class BookManagerImpl implements BookManager {
private List<Book> bookList;
@Reference
public void setBookList(List<Book> bookList) {
this.bookList = bookList;
}
@Override
public void addBook(Book book) {
bookList.add(book);
}
@Override
public void removeBook(String title) {
bookList.removeIf(book -> book.getTitle().equals(title));
}
@Override
public List<Book> getBookList() {
return new ArrayList<>(bookList);
}
}
-runfw: org.apache.felix.framework
-runproperties:\
osgi.console=\
Bundle-Version: 1.0.0
Private-Package: \
com.example.bookmanager\
com.example.bookmanager.provider
Require-Capability:\
osgi.ee; filter:='(&(osgi.ee=JavaSE)(version=11))'
<?xml version="1.0" encoding="UTF-8"?>
<component xmlns="http://www.osgi.org/xmlns/scr/v1.4.0" name="com.example.bookmanager.provider.BookManagerImpl">
<implementation class="com.example.bookmanager.provider.BookManagerImpl"/>
<service>
<provide interface="com.example.bookmanager.BookManager"/>
</service>
</component>