List of usage examples for org.springframework.expression.spel.standard SpelExpressionParser parseExpression
@Override public Expression parseExpression(String expressionString) throws ParseException
From source file:com.px100systems.util.RuleEngine.java
/** * Set the list of rules. teh first one returning non-null, wins. * @param rules a list of Spring EL expressions typically "condition ? result : laternateResult" ones */// w w w . j a va2s.c o m @Required public void setRules(List<String> rules) { this.rules = new ArrayList<Expression>(); SpelExpressionParser parser = new SpelExpressionParser(); for (String s : rules) this.rules.add(parser.parseExpression(s)); }
From source file:guru.qas.martini.DefaultMixologist.java
@Override public Collection<Martini> getMartinis(@Nullable String spelFilter) { String trimmed = null == spelFilter ? "" : spelFilter.trim(); Collection<Martini> martinis = null; if (!trimmed.isEmpty()) { SpelExpressionParser parser = new SpelExpressionParser(); Expression expression = parser.parseExpression(trimmed); martinis = getMartinis(expression); }/*w ww. ja v a 2 s . c om*/ return null == martinis ? getMartinis() : martinis; }
From source file:bugs.TestEL.java
/** * Test the EL./*from w w w .jav a 2 s. com*/ */ @SuppressWarnings({ "boxing", "deprecation" }) @Test public void testName() { // Arrange final SpelExpressionParser parser = new SpelExpressionParser(); final StandardEvaluationContext context = new StandardEvaluationContext(); final String spelExpression1 = "testDate.date"; final String spelExpression2 = "class"; final String spelExpression3 = "class.name"; final String spelExpression4 = "name"; final Date now = new Date(); final String name = "Testname"; final TestObject testObject = new TestObject(); testObject.setTestDate(now); testObject.setName(name); final SpelExpression exp1 = (SpelExpression) parser.parseExpression(spelExpression1); final SpelExpression exp2 = (SpelExpression) parser.parseExpression(spelExpression2); final SpelExpression exp3 = (SpelExpression) parser.parseExpression(spelExpression3); final SpelExpression exp4 = (SpelExpression) parser.parseExpression(spelExpression4); // Act final Object value1 = exp1.getValue(context, testObject); final Object value2 = exp2.getValue(context, testObject); final Object value3 = exp3.getValue(context, testObject); Object value4 = null; try { value4 = exp4.getValue(context, testObject); } catch (SpelEvaluationException e) { Assert.assertEquals( "EL1021E:(pos 0): A problem occurred whilst " + "attempting to access the property 'name': " + "'Unable to access property 'name' through getter'", e.getMessage()); // CSOFF: RegexpSinglelineJava System.err.println("Spring-Bug SPR-9017 happens!"); // CSON: RegexpSinglelineJava value4 = name; } // Assert Assert.assertEquals(value1, now.getDate()); Assert.assertEquals(value2, TestObject.class); Assert.assertEquals(value3, TestObject.class.getName()); Assert.assertEquals(value4, name); }
From source file:org.vaadin.addons.springsecurityviewprovider.SpringSecurityViewProvider.java
@SuppressWarnings("unchecked") public final static ViewProvider createViewProvider(final Authentication authentication, Boolean enableCaching) {/*from www .ja v a 2s .com*/ final SpringSecurityViewProvider springViewProvider = new SpringSecurityViewProvider(); springViewProvider.enableCaching = enableCaching; try { final ApplicationContext applicationContext = springViewProvider.applicationContext; // Retrieve the default SecurityExpressionHandler final MethodSecurityExpressionHandler securityExpressionHandler = applicationContext .getBean(DefaultMethodSecurityExpressionHandler.class); // The method that is protected in the end final Method getViewMethod = SpringSecurityViewProvider.class.getMethod("getView", String.class); // A parser to evaluate parse the permissions. final SpelExpressionParser parser = new SpelExpressionParser(); // Although beans can be retrieved by annotation they must be retrieved by name // to avoid instanciating them for (String beanName : applicationContext.getBeanDefinitionNames()) { final Class<?> beanClass = applicationContext.getType(beanName); // only work with Views that are described by our specialed Description if (beanClass.isAnnotationPresent(ViewDescription.class) && View.class.isAssignableFrom(beanClass)) { final ViewDescription viewDescription = beanClass.getAnnotation(ViewDescription.class); // requires no special permissions and can be immediatly added if (StringUtils.isBlank(viewDescription.requiredPermissions())) { springViewProvider.views.put(viewDescription.name(), (Class<? extends View>) beanClass); } // requires permissions else { // this is actually borrowed from the code in org.springframework.security.access.prepost.PreAuthorize final EvaluationContext evaluationContext = securityExpressionHandler .createEvaluationContext(authentication, new SimpleMethodInvocation( springViewProvider, getViewMethod, viewDescription.name())); // only add the view to my provider if the permissions evaluate to true if (ExpressionUtils.evaluateAsBoolean( parser.parseExpression(viewDescription.requiredPermissions()), evaluationContext)) springViewProvider.views.put(viewDescription.name(), (Class<? extends View>) beanClass); } } } } catch (NoSuchMethodException | SecurityException e) { // Won't happen } return springViewProvider; }
From source file:org.springframework.cloud.gateway.discovery.DiscoveryClientRouteDefinitionLocator.java
@Override public Flux<RouteDefinition> getRouteDefinitions() { SpelExpressionParser parser = new SpelExpressionParser(); Expression includeExpr = parser.parseExpression(properties.getIncludeExpression()); Expression urlExpr = parser.parseExpression(properties.getUrlExpression()); Predicate<ServiceInstance> includePredicate; if (properties.getIncludeExpression() == null || "true".equalsIgnoreCase(properties.getIncludeExpression())) { includePredicate = instance -> true; } else {//from ww w . java 2s .c o m includePredicate = instance -> { Boolean include = includeExpr.getValue(evalCtxt, instance, Boolean.class); if (include == null) { return false; } return include; }; } return Flux.fromIterable(discoveryClient.getServices()).map(discoveryClient::getInstances) .filter(instances -> !instances.isEmpty()).map(instances -> instances.get(0)) .filter(includePredicate).map(instance -> { String serviceId = instance.getServiceId(); RouteDefinition routeDefinition = new RouteDefinition(); routeDefinition.setId(this.routeIdPrefix + serviceId); String uri = urlExpr.getValue(evalCtxt, instance, String.class); routeDefinition.setUri(URI.create(uri)); final ServiceInstance instanceForEval = new DelegatingServiceInstance(instance, properties); for (PredicateDefinition original : this.properties.getPredicates()) { PredicateDefinition predicate = new PredicateDefinition(); predicate.setName(original.getName()); for (Map.Entry<String, String> entry : original.getArgs().entrySet()) { String value = getValueFromExpr(evalCtxt, parser, instanceForEval, entry); predicate.addArg(entry.getKey(), value); } routeDefinition.getPredicates().add(predicate); } for (FilterDefinition original : this.properties.getFilters()) { FilterDefinition filter = new FilterDefinition(); filter.setName(original.getName()); for (Map.Entry<String, String> entry : original.getArgs().entrySet()) { String value = getValueFromExpr(evalCtxt, parser, instanceForEval, entry); filter.addArg(entry.getKey(), value); } routeDefinition.getFilters().add(filter); } return routeDefinition; }); }
From source file:org.springframework.cloud.gateway.discovery.DiscoveryClientRouteDefinitionLocator.java
String getValueFromExpr(SimpleEvaluationContext evalCtxt, SpelExpressionParser parser, ServiceInstance instance, Map.Entry<String, String> entry) { try {//from w w w .j av a2 s. com Expression valueExpr = parser.parseExpression(entry.getValue()); return valueExpr.getValue(evalCtxt, instance, String.class); } catch (ParseException | EvaluationException e) { if (log.isDebugEnabled()) { log.debug("Unable to parse " + entry.getValue(), e); } throw e; } }
From source file:org.springframework.cloud.netflix.turbine.CommonsInstanceDiscovery.java
protected CommonsInstanceDiscovery(TurbineProperties turbineProperties, String defaultExpression) { this.turbineProperties = turbineProperties; SpelExpressionParser parser = new SpelExpressionParser(); String clusterNameExpression = turbineProperties.getClusterNameExpression(); if (clusterNameExpression == null) { clusterNameExpression = defaultExpression; }//from w ww.j a va2s.c o m this.clusterNameExpression = parser.parseExpression(clusterNameExpression); this.combineHostPort = turbineProperties.isCombineHostPort(); }
From source file:org.springframework.cloud.stream.app.tasklaunchrequest.DataFlowTaskLaunchRequestAutoConfiguration.java
public DataFlowTaskLaunchRequestAutoConfiguration( DataflowTaskLaunchRequestProperties taskLaunchRequestProperties) { this.taskLaunchRequestProperties = taskLaunchRequestProperties; this.deploymentProperties = KeyValueListParser .parseCommaDelimitedKeyValuePairs(taskLaunchRequestProperties.getDeploymentProperties()); argExpressionsMap = new HashMap<>(); if (StringUtils.hasText(taskLaunchRequestProperties.getArgExpressions())) { SpelExpressionParser expressionParser = new SpelExpressionParser(); KeyValueListParser.parseCommaDelimitedKeyValuePairs(taskLaunchRequestProperties.getArgExpressions()) .forEach((k, v) -> argExpressionsMap.put(k, expressionParser.parseExpression(v))); }//from w w w .j av a 2 s . c o m }
From source file:org.springframework.integration.xmpp.inbound.ChatMessageListeningEndpointTests.java
@Test public void testExpression() throws Exception { TestXMPPConnection testXMPPConnection = new TestXMPPConnection(); QueueChannel inputChannel = new QueueChannel(); ChatMessageListeningEndpoint endpoint = new ChatMessageListeningEndpoint(testXMPPConnection); SpelExpressionParser parser = new SpelExpressionParser(); endpoint.setPayloadExpression(parser.parseExpression("#root")); endpoint.setOutputChannel(inputChannel); endpoint.setBeanFactory(mock(BeanFactory.class)); endpoint.afterPropertiesSet();/* w ww .jav a 2 s . c o m*/ endpoint.start(); Message smackMessage = new Message(); smackMessage.setBody("foo"); XmlPullParser xmlPullParser = PacketParserUtils.newXmppParser(new StringReader(smackMessage.toString())); xmlPullParser.next(); testXMPPConnection.parseAndProcessStanza(xmlPullParser); org.springframework.messaging.Message<?> receive = inputChannel.receive(10000); assertNotNull(receive); Object payload = receive.getPayload(); assertThat(payload, instanceOf(Message.class)); assertEquals(smackMessage.getStanzaId(), ((Message) payload).getStanzaId()); assertEquals(smackMessage.getBody(), ((Message) payload).getBody()); Log logger = Mockito.spy(TestUtils.getPropertyValue(endpoint, "logger", Log.class)); given(logger.isInfoEnabled()).willReturn(true); final CountDownLatch logLatch = new CountDownLatch(1); willAnswer(invocation -> { Object result = invocation.callRealMethod(); logLatch.countDown(); return result; }).given(logger).info(anyString()); new DirectFieldAccessor(endpoint).setPropertyValue("logger", logger); endpoint.setPayloadExpression(null); smackMessage = new Message(); xmlPullParser = PacketParserUtils.newXmppParser(new StringReader(smackMessage.toString())); xmlPullParser.next(); testXMPPConnection.parseAndProcessStanza(xmlPullParser); ArgumentCaptor<String> argumentCaptor = ArgumentCaptor.forClass(String.class); assertTrue(logLatch.await(10, TimeUnit.SECONDS)); verify(logger).info(argumentCaptor.capture()); assertEquals("The XMPP Message [" + smackMessage + "] with empty body is ignored.", argumentCaptor.getValue()); endpoint.stop(); }