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)); }
/** * 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; }
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)); } }
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 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 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)); }
@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")); }
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)); }
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 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)); }
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 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)); }