@Description("This agent is an empty minimal calculator.") @RequiredServices({ @RequiredService(name="addservice", type=IAddService.class, binding=@Binding(scope=Binding.SCOPE_PLATFORM)), @RequiredService(name="subservice", type=ISubService.class, binding=@Binding(scope=Binding.SCOPE_PLATFORM)) }) @Agent public class EmptyCalculatorAgent { }
/** * Create a required service info and add it to the map. */ protected RequiredServiceInfo createRequiredServiceInfo(RequiredService rs, ClassLoader cl) { RequiredServiceBinding binding = createBinding(rs.binding()); List<NFRPropertyInfo> nfprops = createNFRProperties(rs.nfprops()); for(NFRProperty prop: rs.nfprops()) { nfprops.add(new NFRPropertyInfo(prop.name(), new ClassInfo(prop.value().getName()), new MethodInfo(prop.methodname(), prop.methodparametertypes()))); } RequiredServiceInfo rsis = new RequiredServiceInfo(rs.name(), rs.type(), rs.multiple(), Object.class.equals(rs.multiplextype())? null: rs.multiplextype(), binding, nfprops, Arrays.asList(rs.tags())); return rsis; }
/** * Agent that can process generate requests. */ @Description("Agent offering a generate service.") @ProvidedServices(@ProvidedService(type=IGenerateService.class, implementation=@Implementation(GenerateService.class))) @RequiredServices({ @RequiredService(name="displayservice", type=IDisplayService.class, binding=@Binding(create=true, dynamic=true, creationinfo=@CreationInfo(type="Display"))), @RequiredService(name="calculateservices", type=ICalculateService.class, multiple=true, binding=@Binding(scope=RequiredServiceInfo.SCOPE_GLOBAL)), @RequiredService(name="cmsservice", type=IComponentManagementService.class, binding=@Binding(scope=RequiredServiceInfo.SCOPE_PLATFORM)), @RequiredService(name="generateservice", type=IGenerateService.class) }) @Agent public class GenerateAgent { }
for(int j=0; j<reqs.length; j++) RequiredServiceBinding binding = createBinding(reqs[j].binding()); List<NFRPropertyInfo> nfprops = createNFRProperties(reqs[j].nfprops()); rsis[j] = new RequiredServiceInfo(reqs[j].name(), reqs[j].type(), reqs[j].multiple(), Object.class.equals(reqs[j].multiplextype())? null: reqs[j].multiplextype(), binding, nfprops, Arrays.asList(reqs[j].tags())); configinfo.setRequiredServices(rsis);
/** * Chat micro agent provides a basic chat service. */ @Description("This agent provides a basic chat service.") @Agent @ProvidedServices(@ProvidedService(type=IChatService.class, implementation=@Implementation(ChatServiceD2.class))) @RequiredServices({ @RequiredService(name="clockservice", type=IClockService.class, binding=@Binding(scope=Binding.SCOPE_PLATFORM)), @RequiredService(name="chatservices", type=IChatService.class, multiple=true, binding=@Binding(dynamic=true, scope=Binding.SCOPE_PLATFORM)) }) public class ChatD2Agent { }
RequiredServiceBinding binding = createBinding(vals[i].binding()); List<NFRPropertyInfo> nfprops = createNFRProperties(vals[i].nfprops()); for(NFRProperty prop: vals[i].nfprops()) RequiredServiceInfo rsis = new RequiredServiceInfo(vals[i].name(), vals[i].type(), vals[i].multiple(), Object.class.equals(vals[i].multiplextype())? null: vals[i].multiplextype(), binding, nfprops); if(rsers.containsKey(vals[i].name())) RequiredServiceInfo old = (RequiredServiceInfo)rsers.get(vals[i].name()); if(old.isMultiple()!=rsis.isMultiple() || !old.getType().getType(cl).equals(rsis.getType().getType(cl))) throw new RuntimeException("Extension hierarchy contains incompatible required service more than once: "+vals[i].name()); rsers.put(vals[i].name(), rsis); if(!configinfo.hasRequiredService(reqs[j].name())) RequiredServiceBinding binding = createBinding(reqs[j].binding()); List<NFRPropertyInfo> nfprops = createNFRProperties(reqs[j].nfprops()); RequiredServiceInfo rsi = new RequiredServiceInfo(reqs[j].name(), reqs[j].type(), reqs[j].multiple(), Object.class.equals(reqs[j].multiplextype())? null: reqs[j].multiplextype(), binding, nfprops);
/** * Chat micro agent offers profile information. */ @Description("This agent offers profile information.") @Agent @ProvidedServices(@ProvidedService(type=IExtendedChatService.class, implementation=@Implementation(ChatServiceD3.class))) @RequiredServices({ @RequiredService(name="clockservice", type=IClockService.class, binding=@Binding(scope=Binding.SCOPE_PLATFORM)), @RequiredService(name="chatservices", type=IExtendedChatService.class, multiple=true, binding=@Binding(dynamic=true, scope=Binding.SCOPE_PLATFORM)) }) public class ChatD3Agent { }
for(int j=0; j<reqs.length; j++) RequiredServiceBinding binding = createBinding(reqs[j].binding()); List<NFRPropertyInfo> nfprops = createNFRProperties(reqs[j].nfprops()); rsis[j] = new RequiredServiceInfo(reqs[j].name(), reqs[j].type(), reqs[j].multiple(), Object.class.equals(reqs[j].multiplextype())? null: reqs[j].multiplextype(), binding, nfprops); configinfo.setRequiredServices(rsis);
/** * Chat micro agent with a . */ @Description("This agent provides a basic chat service.") @Agent @ProvidedServices(@ProvidedService(type=IChatService.class, implementation=@Implementation(value=ChatServiceD5.class))) @RequiredServices({ @RequiredService(name="clockservice", type=IClockService.class, binding=@Binding(scope=Binding.SCOPE_PLATFORM)), @RequiredService(name="chatservices", type=IChatService.class, multiple=true, binding=@Binding(dynamic=true, scope=Binding.SCOPE_GLOBAL)) }) public class ChatD5Agent { }
if(rsers.containsKey(vals[i].name())) RequiredServiceInfo old = (RequiredServiceInfo)rsers.get(vals[i].name()); if(old.isMultiple()!=rsis.isMultiple() || !old.getType().getType(cl).equals(rsis.getType().getType(cl))) throw new RuntimeException("Extension hierarchy contains incompatible required service more than once: "+vals[i].name()); rsers.put(vals[i].name(), rsis); if(!configinfo.hasRequiredService(reqs[j].name())) RequiredServiceBinding binding = createBinding(reqs[j].binding()); List<NFRPropertyInfo> nfprops = createNFRProperties(reqs[j].nfprops()); RequiredServiceInfo rsi = new RequiredServiceInfo(reqs[j].name(), reqs[j].type(), reqs[j].multiple(), Object.class.equals(reqs[j].multiplextype())? null: reqs[j].multiplextype(), binding, nfprops, Arrays.asList(reqs[j].tags())); RequiredService rs = ser.requiredservice(); if(!rs.type().equals(Object.class))
@RequiredService(name="generateservice", type=IGenerateService.class), @RequiredService(name="progressservice", type=IProgressService.class), @RequiredService(name="cmsservice", type=IComponentManagementService.class, binding=@Binding(scope=RequiredServiceInfo.SCOPE_PLATFORM)), @RequiredService(name="mandelservice", type=IMandelbrotService.class) }) @Agent
@RequiredServices(@RequiredService(name="timeservices", type=ITimeService.class, multiple=true, binding=@Binding(scope=Binding.SCOPE_GLOBAL))) public class TimeUserAgent
/** * Chat micro agent with a spam interceptor. */ @Description("This agent provides a basic chat service.") @Agent @ProvidedServices(@ProvidedService(type=IExtendedChatService.class, implementation=@Implementation(value=ChatServiceD4.class, interceptors=@Value(clazz=SpamInterceptorD4.class)))) @RequiredServices({ @RequiredService(name="clockservice", type=IClockService.class, binding=@Binding(scope=Binding.SCOPE_PLATFORM)), @RequiredService(name="chatservices", type=IExtendedChatService.class, multiple=true, binding=@Binding(dynamic=true, scope=Binding.SCOPE_PLATFORM)) }) public class ChatD4Agent { }
@RequiredServices(@RequiredService(name="env", type=IHunterPreyEnvironmentService.class, binding=@Binding(scope=Binding.SCOPE_PLATFORM))) public class ServicePreyAgent
/** * Service 1 agent. * Calls service 2 on agent 2. */ @Agent(autoprovide=true) @Service @RequiredServices({@RequiredService(name = "ser2", type=IService2.class, binding = @Binding(dynamic = true, scope = Binding.SCOPE_PLATFORM))}) public class Service1Agent implements IService1 { @Agent protected IInternalAccess agent; public IFuture<Void> service() { IService2 ser2 = (IService2)agent.getComponentFeature(IRequiredServicesFeature.class).getRequiredService("ser2").get(); ser2.service().get(); return IFuture.DONE; } }
@Description("This agent is an empty minimal calculator.") @RequiredServices({ @RequiredService(name="addservice", type=IAddService.class, binding=@Binding(scope=Binding.SCOPE_PLATFORM)), @RequiredService(name="subservice", type=ISubService.class, binding=@Binding(scope=Binding.SCOPE_PLATFORM)) })
@Agent @RequiredServices(@RequiredService(name="ls", type=ILotteryService.class, binding=@Binding(scope=RequiredServiceInfo.SCOPE_GLOBAL))) public class HumanPlayerAgent
@RequiredServices(@RequiredService(name="timeservices", type=ITimeService.class, multiple=true, binding=@Binding(scope=Binding.SCOPE_GLOBAL))) public class NonblockingTimeUserAgent
@Agent @RequiredServices(@RequiredService(name="ls", type=ILotteryService.class, binding=@Binding(scope=RequiredServiceInfo.SCOPE_GLOBAL))) public class PlayerAgent
@RequiredService(name="raw", type=IServiceCallService.class, binding=@Binding(proxytype=Binding.PROXYTYPE_RAW, dynamic=true, scope=Binding.SCOPE_GLOBAL)), @RequiredService(name="direct", type=IServiceCallService.class, binding=@Binding(proxytype=Binding.PROXYTYPE_DIRECT, dynamic=true, scope=Binding.SCOPE_GLOBAL)), @RequiredService(name="decoupled", type=IServiceCallService.class, binding=@Binding(proxytype=Binding.PROXYTYPE_DECOUPLED, dynamic=true, scope=Binding.SCOPE_GLOBAL)), @RequiredService(name="cms", type=IComponentManagementService.class, binding=@Binding(scope=Binding.SCOPE_PLATFORM)) }) @Agent