// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.container.bundle; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; import org.osgi.framework.Version; import org.osgi.framework.wiring.BundleCapability; import org.osgi.framework.wiring.BundleRequirement; import org.osgi.framework.wiring.BundleRevision; import org.osgi.framework.wiring.BundleWire; import org.osgi.framework.wiring.BundleWiring; import org.osgi.resource.Capability; import org.osgi.resource.Requirement; import org.osgi.resource.Wire; import java.io.File; import java.io.InputStream; import java.net.URL; import java.security.cert.X509Certificate; import java.util.Collection; import java.util.Collections; import java.util.Dictionary; import java.util.Enumeration; import java.util.Hashtable; import java.util.List; import java.util.Map; /** * @author gjoranv * @author ollivir */ public class MockBundle implements Bundle, BundleWiring { public static final String SymbolicName = "mock-bundle"; public static final Version BundleVersion = new Version(1, 0, 0); private static final Class bundleWiringClass = BundleWiring.class; @Override public int getState() { return Bundle.ACTIVE; } @Override public void start(int options) { } @Override public void start() { } @Override public void stop(int options) { } @Override public void stop() { } @Override public void update(InputStream input) { } @Override public void update() { } @Override public void uninstall() { } @Override public Dictionary getHeaders(String locale) { return getHeaders(); } @Override public String getSymbolicName() { return SymbolicName; } @Override public Version getVersion() { return BundleVersion; } @Override public String getLocation() { return getSymbolicName(); } @Override public long getBundleId() { return 0L; } @Override public Dictionary getHeaders() { return new Hashtable<>(); } @Override public ServiceReference[] getRegisteredServices() { return new ServiceReference[0]; } @Override public ServiceReference[] getServicesInUse() { return getRegisteredServices(); } @Override public boolean hasPermission(Object permission) { return true; } @Override public URL getResource(String name) { throw new UnsupportedOperationException(); } @Override public Class loadClass(String name) { throw new UnsupportedOperationException(); } @Override public Enumeration getResources(String name) { throw new UnsupportedOperationException(); } @Override public Enumeration getEntryPaths(String path) { throw new UnsupportedOperationException(); } @Override public URL getEntry(String path) { throw new UnsupportedOperationException(); } @Override public Enumeration findEntries(String path, String filePattern, boolean recurse) { return Collections.emptyEnumeration(); } @Override public long getLastModified() { return 1L; } @Override public BundleContext getBundleContext() { throw new UnsupportedOperationException(); } @Override public Map> getSignerCertificates(int signersType) { return Map.of(); } @SuppressWarnings("unchecked") @Override public T adapt(Class type) { if (type.equals(bundleWiringClass)) { return (T) this; } else { throw new UnsupportedOperationException(); } } @Override public File getDataFile(String filename) { return null; } @Override public int compareTo(Bundle o) { return Long.compare(getBundleId(), o.getBundleId()); } //TODO: replace with mockito @Override public List findEntries(String p1, String p2, int p3) { throw new UnsupportedOperationException(); } @Override public List getRequiredResourceWires(String p1) { throw new UnsupportedOperationException(); } @Override public List getResourceCapabilities(String p1) { throw new UnsupportedOperationException(); } @Override public boolean isCurrent() { throw new UnsupportedOperationException(); } @Override public List getRequiredWires(String p1) { throw new UnsupportedOperationException(); } @Override public List getCapabilities(String p1) { throw new UnsupportedOperationException(); } @Override public List getProvidedResourceWires(String p1) { throw new UnsupportedOperationException(); } @Override public List getProvidedWires(String p1) { throw new UnsupportedOperationException(); } @Override public BundleRevision getRevision() { throw new UnsupportedOperationException(); } @Override public List getResourceRequirements(String p1) { throw new UnsupportedOperationException(); } @Override public boolean isInUse() { throw new UnsupportedOperationException(); } @Override public Collection listResources(String p1, String p2, int p3) { return Collections.emptyList(); } @Override public ClassLoader getClassLoader() { return MockBundle.class.getClassLoader(); } @Override public List getRequirements(String p1) { throw new UnsupportedOperationException(); } @Override public BundleRevision getResource() { throw new UnsupportedOperationException(); } @Override public Bundle getBundle() { throw new UnsupportedOperationException(); } }