/** * The unique service names, as they appear in order of the provided List of {@link ServiceAndAction}s. * * straight copy from Wicket UI */ private static Set<String> serviceNamesInOrder( final List<ObjectAdapter> serviceAdapters, final List<ServiceAndAction> serviceActions) { final Set<String> serviceNameOrder = Sets.newLinkedHashSet(); // first, order as defined in isis.properties for (ObjectAdapter serviceAdapter : serviceAdapters) { final ObjectSpecification serviceSpec = serviceAdapter.getSpecification(); String serviceName = serviceSpec.getFacet(NamedFacet.class).value(); serviceNameOrder.add(serviceName); } // then, any other services (eg due to misspellings, at the end) for (ServiceAndAction serviceAction : serviceActions) { if(!serviceNameOrder.contains(serviceAction.serviceName)) { serviceNameOrder.add(serviceAction.serviceName); } } return serviceNameOrder; }
public void testParameterLayoutAnnotationNamed() { final ParameterLayoutFacetFactory facetFactory = new ParameterLayoutFacetFactory(); class Customer { @SuppressWarnings("unused") public void someAction(@ParameterLayout(named = NAME) final String foo) { } } final Method method = findMethod(Customer.class, "someAction", new Class[]{String.class}); facetFactory.processParams(new FacetFactory.ProcessParameterContext(Customer.class, method, 0, null, facetedMethodParameter)); final NamedFacet facet = facetedMethodParameter.getFacet(NamedFacet.class); assertThat(facet, is(notNullValue())); assertThat(facet, is(instanceOf(NamedFacetForParameterLayoutAnnotation.class))); assertThat(facet.value(), is(equalTo(NAME))); assertThat(facet.escaped(), is(true)); }
@Test public void testNamedAnnotationPickedUpOnClass() { final NamedFacetOnTypeAnnotationFactory facetFactory = new NamedFacetOnTypeAnnotationFactory(); @Named("some name") class Customer { } expectNoMethodsRemoved(); facetFactory.process(new ProcessClassContext(Customer.class, null, mockMethodRemover, facetedMethod)); final Facet facet = facetedMethod.getFacet(NamedFacet.class); assertThat(facet, is(not(nullValue()))); assertThat(facet instanceof NamedFacetAbstract, is(true)); final NamedFacetAbstract namedFacetAbstract = (NamedFacetAbstract) facet; assertThat(namedFacetAbstract.value(), equalTo("some name")); }
private FacetedMethod facetedMethodForProperty( Method init, Method accessor, Method modify, Method clear, Method hide, Method disable, Method validate) { FacetedMethod facetedMethod = FacetedMethod.createForProperty(accessor.getDeclaringClass(), accessor); FacetUtil.addFacet(new PropertyAccessorFacetViaAccessor(mockOnType, accessor, facetedMethod, mockSpecificationLoader, mockAuthenticationSessionProvider, mockAdapterManager )); FacetUtil.addFacet(new PropertyInitializationFacetViaSetterMethod(init, facetedMethod)); FacetUtil.addFacet(new PropertySetterFacetViaModifyMethod(modify, facetedMethod)); FacetUtil.addFacet(new PropertyClearFacetViaClearMethod(clear, facetedMethod)); FacetUtil.addFacet(new HideForContextFacetViaMethod(hide, facetedMethod)); FacetUtil.addFacet(new DisableForContextFacetViaMethod(disable, null, null, facetedMethod)); FacetUtil.addFacet(new PropertyValidateFacetViaMethod(validate, null, null, facetedMethod)); FacetUtil.addFacet(new NamedFacetInferred(accessor.getName(), facetedMethod)); return facetedMethod; }
public void testParameterLayoutAnnotationNamedEscapedFalse() { final ParameterLayoutFacetFactory facetFactory = new ParameterLayoutFacetFactory(); class Customer { @SuppressWarnings("unused") public void someAction(@ParameterLayout(named = NAME, namedEscaped = false) final String foo) { } } final Method method = findMethod(Customer.class, "someAction", new Class[]{String.class}); facetFactory.processParams(new FacetFactory.ProcessParameterContext(Customer.class, method, 0, null, facetedMethodParameter)); final NamedFacet facet = facetedMethodParameter.getFacet(NamedFacet.class); assertThat(facet, is(notNullValue())); assertThat(facet, is(instanceOf(NamedFacetForParameterLayoutAnnotation.class))); assertThat(facet.value(), is(equalTo(NAME))); assertThat(facet.escaped(), is(false)); }
private void collateServiceActions( final ObjectAdapter serviceAdapter, final ActionType actionType, final List<ServiceAndAction> serviceActions) { final ObjectSpecification serviceSpec = serviceAdapter.getSpecification(); // skip if annotated to not be included in repository menu using @DomainService final DomainServiceFacet domainServiceFacet = serviceSpec.getFacet(DomainServiceFacet.class); if (domainServiceFacet != null) { final NatureOfService natureOfService = domainServiceFacet.getNatureOfService(); if (natureOfService == NatureOfService.VIEW_REST_ONLY || natureOfService == NatureOfService.VIEW_CONTRIBUTIONS_ONLY || natureOfService == NatureOfService.DOMAIN) { return; } } for (final ObjectAction objectAction : serviceSpec.getObjectActions( actionType, Contributed.INCLUDED, Filters.<ObjectAction>any())) { // skip if annotated to not be included in repository menu using legacy mechanism if (objectAction.getFacet(NotInServiceMenuFacet.class) != null) { continue; } final MemberOrderFacet memberOrderFacet = objectAction.getFacet(MemberOrderFacet.class); String serviceName = memberOrderFacet != null? memberOrderFacet.name(): null; if(Strings.isNullOrEmpty(serviceName)){ serviceName = serviceSpec.getFacet(NamedFacet.class).value(); } serviceActions.add(new ServiceAndAction(serviceName, serviceAdapter, objectAction)); } }
private FacetedMethod facetedMethodForProperty( Method init, Method accessor, Method modify, Method clear, Method hide, Method disable, Method validate) { FacetedMethod facetedMethod = FacetedMethod.createForProperty(accessor.getDeclaringClass(), accessor); FacetUtil.addFacet(new PropertyAccessorFacetViaAccessor(mockOnType, accessor, facetedMethod, mockDeploymentCategoryProvider.getDeploymentCategory(), mockConfiguration, mockSpecificationLoader, mockAuthenticationSessionProvider, mockAdapterManager )); FacetUtil.addFacet(new PropertyInitializationFacetViaSetterMethod(init, facetedMethod)); FacetUtil.addFacet(new PropertySetterFacetViaModifyMethod(modify, facetedMethod)); FacetUtil.addFacet(new PropertyClearFacetViaClearMethod(clear, facetedMethod)); FacetUtil.addFacet(new HideForContextFacetViaMethod(hide, facetedMethod)); FacetUtil.addFacet(new DisableForContextFacetViaMethod(disable, null, null, facetedMethod)); FacetUtil.addFacet(new PropertyValidateFacetViaMethod(validate, null, null, facetedMethod)); FacetUtil.addFacet(new NamedFacetInferred(accessor.getName(), facetedMethod)); return facetedMethod; }
public void testNamedAnnotationPickedUpOnAction() { final NamedFacetOnMemberFactory facetFactory = new NamedFacetOnMemberFactory(); class Customer { @SuppressWarnings("unused") @Named("some name") public void someAction() { } } final Method actionMethod = findMethod(Customer.class, "someAction"); expectNoMethodsRemoved(); facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, mockMethodRemover, facetedMethod)); final Facet facet = facetedMethod.getFacet(NamedFacet.class); assertThat(facet, is(not(nullValue()))); assertThat(facet instanceof NamedFacetAbstract, is(true)); final NamedFacetAbstract namedFacetAbstract = (NamedFacetAbstract) facet; assertThat(namedFacetAbstract.value(), equalTo("some name")); }
public void testCollectionLayoutAnnotationNamed() { final CollectionLayoutFacetFactory facetFactory = new CollectionLayoutFacetFactory() { @Override protected IsisConfiguration getConfiguration() { return stubConfiguration; } }; class Customer { @SuppressWarnings("unused") @CollectionLayout(named = "1st names") public SortedSet<String> getFirstNames() { return Sets.newTreeSet(); } } final Method method = findMethod(Customer.class, "getFirstNames"); facetFactory.process(new ProcessMethodContext(Customer.class, null, null, method, methodRemover, facetedMethod)); final NamedFacet facet = facetedMethod.getFacet(NamedFacet.class); assertThat(facet, is(notNullValue())); assertThat(facet, is(instanceOf(NamedFacetForCollectionLayoutAnnotation.class))); assertThat(facet.value(), is(equalTo("1st names"))); assertThat(facet.escaped(), is(true)); }
public void testProvidesDefaultNameForActionButIgnoresAnyNamedAnnotation() { final ActionNamedExplorationFacetFactory facetFactory = new ActionNamedExplorationFacetFactory(); facetFactory.setServicesInjector(mockServicesInjector); // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec); allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec); class Customer { @SuppressWarnings("unused") @Named("Renamed an action with a named annotation") public void anActionWithNamedAnnotation() { } } final Method method = findMethod(Customer.class, "anActionWithNamedAnnotation"); facetFactory.process(new ProcessMethodContext(Customer.class, null, null, method, methodRemover, facetedMethod)); final Facet facet = facetedMethod.getFacet(NamedFacet.class); assertNotNull(facet); assertTrue(facet instanceof NamedFacet); final NamedFacet namedFacet = (NamedFacet) facet; assertEquals("An Action With Named Annotation", namedFacet.value()); }
public void testNamedAnnotationPickedUpOnCollection() { final NamedFacetOnMemberFactory facetFactory = new NamedFacetOnMemberFactory(); class Customer { @SuppressWarnings("unused") @Named("some name") public Collection<?> getOrders() { return null; } } final Method actionMethod = findMethod(Customer.class, "getOrders"); expectNoMethodsRemoved(); facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, mockMethodRemover, facetedMethod)); final Facet facet = facetedMethod.getFacet(NamedFacet.class); assertThat(facet, is(not(nullValue()))); assertThat(facet instanceof NamedFacetAbstract, is(true)); final NamedFacetAbstract namedFacetAbstract = (NamedFacetAbstract) facet; assertThat(namedFacetAbstract.value(), equalTo("some name")); }
public void testCollectionLayoutAnnotationNamedEscapedFalse() { final CollectionLayoutFacetFactory facetFactory = new CollectionLayoutFacetFactory() { @Override protected IsisConfiguration getConfiguration() { return stubConfiguration; } }; class Customer { @SuppressWarnings("unused") @CollectionLayout(named = "1st names", namedEscaped = false) public Set<String> getFirstNames() { return Sets.newTreeSet(); } } final Method method = findMethod(Customer.class, "getFirstNames"); facetFactory.process(new ProcessMethodContext(Customer.class, null, null, method, methodRemover, facetedMethod)); final NamedFacet facet = facetedMethod.getFacet(NamedFacet.class); assertThat(facet, is(notNullValue())); assertThat(facet, is(instanceOf(NamedFacetForCollectionLayoutAnnotation.class))); assertThat(facet.value(), is(equalTo("1st names"))); assertThat(facet.escaped(), is(false)); }
@Test public void getName_whenNamedFacetPresent() throws Exception { objectActionParameter = new ObjectActionParameterAbstractToTest(0, parentAction, actionParamPeer); context.checking(new Expectations() { { one(actionParamPeer).getFacet(NamedFacet.class); will(returnValue(namedFacet)); atLeast(1).of(namedFacet).value(); will(returnValue("Some parameter name")); } }); assertThat(objectActionParameter.getName(), is("Some parameter name")); }
public void testNamedAnnotationPickedUpOnActionParameter() { final NamedFacetOnParameterAnnotationFactory facetFactory = new NamedFacetOnParameterAnnotationFactory(); class Customer { @SuppressWarnings("unused") public void someAction(@Named("some name") final int x) { } } final Method actionMethod = findMethod(Customer.class, "someAction", new Class[] { int.class }); expectNoMethodsRemoved(); facetFactory.processParams(new ProcessParameterContext(Customer.class, actionMethod, 0, null, facetedMethodParameter)); final Facet facet = facetedMethodParameter.getFacet(NamedFacet.class); assertThat(facet, is(not(nullValue()))); assertThat(facet instanceof NamedFacetAbstract, is(true)); final NamedFacetAbstract namedFacetAbstract = (NamedFacetAbstract) facet; assertThat(namedFacetAbstract.value(), equalTo("some name")); }
public void testPropertyLayoutAnnotationNamed() { final PropertyLayoutFacetFactory facetFactory = new PropertyLayoutFacetFactory(); class Customer { @SuppressWarnings("unused") @PropertyLayout(named = "1st name") public String getFirstName() { return null; } } final Method method = findMethod(Customer.class, "getFirstName"); // when final ProcessMethodContext processMethodContext = new ProcessMethodContext(Customer.class, null, null, method, methodRemover, facetedMethod); final FacetHolder holder = facetFactory.facetHolderFrom(processMethodContext); final Properties properties = facetFactory.metadataPropertiesFrom(processMethodContext); final PropertyLayout propertyLayout = facetFactory.propertyLayoutAnnotationFrom(processMethodContext); facetFactory.processNamed(holder, properties, propertyLayout); // then final NamedFacet facet = facetedMethod.getFacet(NamedFacet.class); assertThat(facet, is(notNullValue())); assertThat(facet, is(instanceOf(NamedFacetForPropertyLayoutAnnotation.class))); assertThat(facet.value(), is(equalTo("1st name"))); assertThat(facet.escaped(), is(true)); }
@Test public void getId_whenNamedFacetPresent() throws Exception { objectActionParameter = new ObjectActionParameterAbstractToTest(0, parentAction, actionParamPeer); context.checking(new Expectations() { { one(actionParamPeer).getFacet(NamedFacet.class); will(returnValue(namedFacet)); atLeast(1).of(namedFacet).value(); will(returnValue("Some parameter name")); } }); assertThat(objectActionParameter.getId(), is("someParameterName")); }
@Test public void testNamedAnnotationPickedUpOnProperty() { final NamedFacetOnMemberFactory facetFactory = new NamedFacetOnMemberFactory(); class Customer { @SuppressWarnings("unused") @Named("some name") public int getNumberOfOrders() { return 0; } } final Method actionMethod = findMethod(Customer.class, "getNumberOfOrders"); expectNoMethodsRemoved(); facetFactory.process(new ProcessMethodContext(Customer.class, null, null, actionMethod, mockMethodRemover, facetedMethod)); final Facet facet = facetedMethod.getFacet(NamedFacet.class); assertThat(facet, is(not(nullValue()))); assertThat(facet instanceof NamedFacetAbstract, is(true)); final NamedFacetAbstract namedFacetAbstract = (NamedFacetAbstract) facet; assertThat(namedFacetAbstract.value(), equalTo("some name")); }
public void testPropertyLayoutAnnotationNamedEscapedFalse() { final PropertyLayoutFacetFactory facetFactory = new PropertyLayoutFacetFactory(); class Customer { @SuppressWarnings("unused") @PropertyLayout(named = "1st name", namedEscaped = false) public String getFirstName() { return null; } } final Method method = findMethod(Customer.class, "getFirstName"); // when final ProcessMethodContext processMethodContext = new ProcessMethodContext(Customer.class, null, null, method, methodRemover, facetedMethod); final FacetHolder holder = facetFactory.facetHolderFrom(processMethodContext); final Properties properties = facetFactory.metadataPropertiesFrom(processMethodContext); final PropertyLayout propertyLayout = facetFactory.propertyLayoutAnnotationFrom(processMethodContext); facetFactory.processNamed(holder, properties, propertyLayout); // then final NamedFacet facet = facetedMethod.getFacet(NamedFacet.class); assertThat(facet, is(notNullValue())); assertThat(facet, is(instanceOf(NamedFacetForPropertyLayoutAnnotation.class))); assertThat(facet.value(), is(equalTo("1st name"))); assertThat(facet.escaped(), is(false)); }
public void testPicksUpExplorationPrefixAndSetsNameAppropriatelyAlso() { final ActionNamedExplorationFacetFactory facetFactory = new ActionNamedExplorationFacetFactory(); facetFactory.setServicesInjector(mockServicesInjector); // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec); allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec); class Customer { @SuppressWarnings("unused") public void explorationAnActionWithExplorationPrefix() { } } final Method method = findMethod(Customer.class, "explorationAnActionWithExplorationPrefix"); facetFactory.process(new ProcessMethodContext(Customer.class, null, null, method, methodRemover, facetedMethod)); Facet facet = facetedMethod.getFacet(PrototypeFacet.class); assertNotNull(facet); assertTrue(facet instanceof PrototypeFacet); facet = facetedMethod.getFacet(NamedFacet.class); assertNotNull(facet); assertTrue(facet instanceof NamedFacet); final NamedFacet namedFacet = (NamedFacet) facet; assertEquals("An Action With Exploration Prefix", namedFacet.value()); }
public void testInstallsNamedFacetUsingNameMethodAndRemovesMethod() { final NamedFacetStaticMethodFactory facetFactory = new NamedFacetStaticMethodFactory(); facetFactory.setServicesInjector(mockServicesInjector); // mockSpecificationLoader.setLoadSpecificationStringReturn(voidSpec); allowing_specificationLoader_loadSpecification_any_willReturn(this.voidSpec); final Method actionMethod = findMethod(CustomerStatic.class, "someAction", new Class[] { int.class, Long.class }); final Method nameMethod = findMethod(CustomerStatic.class, "nameSomeAction"); facetFactory.process(new ProcessMethodContext(CustomerStatic.class, null, null, actionMethod, methodRemover, facetedMethod)); final Facet facet = facetedMethod.getFacet(NamedFacet.class); assertNotNull(facet); assertTrue(facet instanceof NamedFacetAbstract); final NamedFacetAbstract namedFacetAbstract = (NamedFacetAbstract) facet; assertEquals("Another Name", namedFacetAbstract.value()); assertTrue(methodRemover.getRemovedMethodMethodCalls().contains(nameMethod)); }