use of org.openecard.addon.bind.AppExtensionActionProxy in project open-ecard by ecsec.
the class AddonManager method getAppExtensionAction.
/**
* Get a specific AppExtensionAction.
*
* @param addonSpec {@link AddonSpecification} which contains the description of the {@link AppExtensionAction}.
* @param actionId The {@link AppExtensionSpecification#id} to identify the requested AppExtensionAction.
* @return The AppExtensionAction which corresponds the given {@code actionId} or NULL if no AppExtensionAction with
* the given {@code actionId} exists.
*/
public AppExtensionAction getAppExtensionAction(@Nonnull AddonSpecification addonSpec, @Nonnull String actionId) {
// get extension from cache
AppExtensionAction appExtAction = cache.getAppExtensionAction(addonSpec, actionId);
if (appExtAction != null) {
// AppExtensionAction cached so return it
return appExtAction;
}
AppExtensionSpecification protoSpec = addonSpec.searchByActionId(actionId);
if (protoSpec == null) {
LOG.error("Requested Extension {} does not exist in Add-on {}.", actionId, addonSpec.getId());
} else {
String className = protoSpec.getClassName();
try {
ClassLoader cl = registry.downloadAddon(addonSpec);
AppExtensionActionProxy protoFactory = new AppExtensionActionProxy(className, cl);
Context aCtx = createContext(addonSpec);
protoFactory.init(aCtx);
cache.addAppExtensionAction(addonSpec, actionId, protoFactory);
return protoFactory;
} catch (ActionInitializationException e) {
LOG.error("Initialization of AppExtensionAction failed", e);
} catch (AddonException ex) {
LOG.error("Failed to download Add-on.", ex);
}
}
return null;
}
use of org.openecard.addon.bind.AppExtensionActionProxy in project open-ecard by ecsec.
the class CacheTest method addWithFilledCache.
@Test
public void addWithFilledCache() {
SALProtocolProxy proxy4 = new SALProtocolProxy(null, null);
AddonSpecification spec4 = new AddonSpecification();
String id4 = "test4";
spec4.setId(id4);
spec4.setVersion("1.0.0");
cache.addSALProtocol(spec4, id4, proxy4);
IFDProtocolProxy proxy3 = new IFDProtocolProxy(null, null);
AddonSpecification spec2 = new AddonSpecification();
String id1 = "test1";
spec2.setId(id1);
spec2.setVersion("1.0.0");
cache.addIFDProtocol(spec2, id1, proxy3);
AppPluginActionProxy proxy = new AppPluginActionProxy(null, null);
AddonSpecification spec1 = new AddonSpecification();
String id0 = "test2";
spec1.setId(id0);
spec1.setVersion("1.0.0");
cache.addAppPluginAction(spec1, id0, proxy);
AppExtensionActionProxy proxy2 = new AppExtensionActionProxy(null, null);
int initialHash = proxy2.hashCode();
AddonSpecification spec = new AddonSpecification();
String id = "test";
spec.setId(id);
spec.setVersion("1.0.0");
cache.addAppExtensionAction(spec, id, proxy2);
// now get it back from the cache
AppExtensionAction proto = cache.getAppExtensionAction(spec, id);
Assert.assertEquals(proto.hashCode(), initialHash);
}
use of org.openecard.addon.bind.AppExtensionActionProxy in project open-ecard by ecsec.
the class CacheTest method addAppExtAction.
@Test
public void addAppExtAction() {
AppExtensionActionProxy proxy = new AppExtensionActionProxy(null, null);
int initialHash = proxy.hashCode();
AddonSpecification spec = new AddonSpecification();
String id = "test";
spec.setId(id);
spec.setVersion("1.0.0");
cache.addAppExtensionAction(spec, id, proxy);
// now get it back from the cache
AppExtensionAction proto = cache.getAppExtensionAction(spec, id);
Assert.assertEquals(proto.hashCode(), initialHash);
}
use of org.openecard.addon.bind.AppExtensionActionProxy in project open-ecard by ecsec.
the class CacheTest method removeMulti.
@Test
public void removeMulti() {
SALProtocolProxy proxy4 = new SALProtocolProxy(null, null);
AddonSpecification spec4 = new AddonSpecification();
String id4 = "test4";
spec4.setId(id4);
spec4.setVersion("1.0.0");
cache.addSALProtocol(spec4, id4, proxy4);
IFDProtocolProxy proxy3 = new IFDProtocolProxy(null, null);
AddonSpecification spec2 = new AddonSpecification();
String id1 = "test1";
spec2.setId(id1);
spec2.setVersion("1.0.0");
cache.addIFDProtocol(spec2, id1, proxy3);
AppPluginActionProxy proxy = new AppPluginActionProxy(null, null);
AddonSpecification spec1 = new AddonSpecification();
String id0 = "test2";
spec1.setId(id0);
spec1.setVersion("1.0.0");
cache.addAppPluginAction(spec1, id0, proxy);
AppExtensionActionProxy proxy2 = new AppExtensionActionProxy(null, null);
AddonSpecification spec = new AddonSpecification();
String id = "test";
spec.setId(id);
spec.setVersion("1.0.0");
cache.addAppExtensionAction(spec, id, proxy2);
cache.removeCacheEntry(spec, id);
cache.removeCacheEntry(spec1, id0);
// now get it back from the cache
AppExtensionAction proto = cache.getAppExtensionAction(spec, id);
AppPluginAction action = cache.getAppPluginAction(spec1, id0);
Assert.assertNull(proto);
Assert.assertNull(action);
}
Aggregations