Example usage for org.apache.wicket.util.parse.metapattern MetaPattern matcher

List of usage examples for org.apache.wicket.util.parse.metapattern MetaPattern matcher

Introduction

In this page you can find the example usage for org.apache.wicket.util.parse.metapattern MetaPattern matcher.

Prototype

public final Matcher matcher(final CharSequence input) 

Source Link

Document

Creates a matcher against a given input character sequence.

Usage

From source file:com.locke.tricks.u.U.java

License:Apache License

@SuppressWarnings("unchecked")
public U() {//from w w w.j av  a2  s.c  o  m

    final IColumn<Utility>[] columns = new IColumn[2];
    columns[0] = new PropertyColumn<Utility>(new Model<String>("Code"), "code", "code");
    columns[1] = new PropertyColumn<Utility>(new Model<String>("Output"), "output", "output");

    final DataTable<Utility> dataTable = new DataTable<Utility>("utilities", columns,
            this.utilitiesDataProvider, Integer.MAX_VALUE);
    dataTable.addTopToolbar(new HeadersToolbar(dataTable, new ISortStateLocator() {

        private ISortState sortState = new SingleSortState();

        public ISortState getSortState() {
            return this.sortState;
        }

        public void setSortState(final ISortState state) {
            this.sortState = state;
        }
    }));
    add(dataTable);

    this.utilities.add(new Utility("Time.now().toString()") {

        @Override
        public String getOutput() {
            return Time.now().toString();
        }
    });
    this.utilities.add(new Utility("Duration.ONE_WEEK.toString()") {

        @Override
        public String getOutput() {
            return Duration.ONE_WEEK.toString();
        }
    });
    this.utilities.add(new Utility("Duration.ONE_WEEK.add(Duration.ONE_DAY).toString()") {

        @Override
        public String getOutput() {
            return Duration.ONE_WEEK.add(Duration.ONE_DAY).toString();
        }
    });
    this.utilities.add(new Utility("Time.now().add(Duration.ONE_WEEK).toString()") {

        @Override
        public String getOutput() {
            return Time.now().add(Duration.ONE_WEEK).toString();
        }
    });
    this.utilities.add(new Utility("Bytes.valueOf(\"512K\") + Bytes.megabytes(1.3)") {

        @Override
        public String getOutput() {
            return Bytes.bytes(Bytes.valueOf("512K").bytes() + Bytes.megabytes(1.3).bytes()).toString();
        }
    });
    this.utilities.add(new Utility("Parsing \'13 + 13\' using MetaPattern") {

        @Override
        public String getOutput() {
            final IntegerGroup a = new IntegerGroup(MetaPattern.DIGITS);
            final IntegerGroup b = new IntegerGroup(MetaPattern.DIGITS);
            final MetaPattern sum = new MetaPattern(new MetaPattern[] { a, MetaPattern.OPTIONAL_WHITESPACE,
                    MetaPattern.PLUS, MetaPattern.OPTIONAL_WHITESPACE, b });
            final Matcher matcher = sum.matcher("13 + 13");
            if (matcher.matches()) {
                return Integer.toString(a.getInt(matcher) + b.getInt(matcher));
            }
            return "Failed to match.";
        }
    });
}

From source file:org.wicketstuff.rest.resource.urlsegments.visitor.ScoreMethodAndExtractPathVars.java

License:Apache License

@Override
public void visit(MultiParamSegment segment) {
    String segmentValue = segmentActualValue(segment);

    MetaPattern metaPatternWithGroups = segment.getMetaPatternWithGroups();
    Matcher matcher = metaPatternWithGroups.matcher(segmentValue);

    if (isSegmentValid = matcher.matches()) {
        List<ParamSegment> paramSegments = new ArrayList<>();
        CollectionUtils.filterCollectionByType(segment.getSubSegments(), paramSegments, ParamSegment.class);

        for (int i = 1; i <= matcher.groupCount(); i++) {
            String group = matcher.group(i);
            String groupName = paramSegments.get(i - 1).getParamName();

            addPathVariable(groupName, group);
        }/* w w w . ja va  2s.  co  m*/

        addScore(1);
    }
}

From source file:org.wicketstuff.rest.SegmentClassesTest.java

License:Apache License

@Test
public void testStandardUrlSegmentPattern() {
    MetaPattern pattern = new MetaPattern(AbstractURLSegment.SEGMENT_PARAMETER);

    Matcher matcher = pattern.matcher("");
    assertFalse(matcher.matches());/*from   w ww  .  ja va  2  s  . com*/

    matcher = pattern.matcher("seg&ment");
    assertFalse(matcher.matches());

    matcher = pattern.matcher("segment:");
    assertFalse(matcher.matches());

    matcher = pattern.matcher("{*}");
    assertFalse(matcher.matches());

    matcher = pattern.matcher("{segment}");
    assertTrue(matcher.matches());

    matcher = pattern.matcher("{segment0} a segment {segment1} another segment {segment2}");
    assertTrue(matcher.find());

    matcher.reset();
    assertFalse(matcher.matches());

    matcher = pattern.matcher("{117}");
    assertFalse(matcher.matches());

    pattern = new MetaPattern(AbstractURLSegment.REGEXP_BODY);
    matcher = pattern.matcher("[0-9]*:abba");
    assertTrue(matcher.matches());

    matcher = pattern.matcher("^\\(?\\d{3}\\)?[ -]?\\d{3}[ -]?\\d{4}$anotherseg");
    assertTrue(matcher.matches());
}

From source file:org.wicketstuff.rest.SegmentClassesTest.java

License:Apache License

@Test
public void testParamSegment() throws Exception {
    String segmentWithRegEx = "{id:[0-9]*:abba}";
    AbstractURLSegment segment = AbstractURLSegment.newSegment(segmentWithRegEx);

    assertTrue(segment instanceof ParamSegment);

    ParamSegment paramSegment = (ParamSegment) segment;

    assertEquals(paramSegment.getParamName(), "id");
    assertEquals(paramSegment.getMetaPattern().toString(), "[0-9]*:abba");

    MetaPattern metaPattern = paramSegment.getMetaPattern();

    assertTrue(metaPattern.matcher("1:abba").matches());
    assertTrue(metaPattern.matcher("1234521:abba").matches());
    assertTrue(metaPattern.matcher(":abba").matches());

    String segmentMultiParam = "{segment0}asegment{segment1:^\\(?\\d{3}\\)?[ -]?\\d{3}[ -]?\\d{4}$}anotherseg";
    segment = AbstractURLSegment.newSegment(segmentMultiParam);

    assertTrue(segment instanceof MultiParamSegment);

    MultiParamSegment multiParamSegment = (MultiParamSegment) segment;
    List<AbstractURLSegment> subSegments = multiParamSegment.getSubSegments();

    assertEquals(4, subSegments.size());
    metaPattern = subSegments.get(2).getMetaPattern();
    assertEquals(metaPattern.toString(), "^\\(?\\d{3}\\)?[ -]?\\d{3}[ -]?\\d{4}$");

    segmentMultiParam = "filename-{symbolicName:[a-z]+}-{version:\\d\\.\\d\\.\\d}{extension:\\.[a-z]+}";
    segment = AbstractURLSegment.newSegment(segmentMultiParam);
    multiParamSegment = (MultiParamSegment) segment;
    metaPattern = multiParamSegment.getMetaPatternWithGroups();

    String fileName = "filename-gsaon-1.2.3.zip";
    Matcher matcher = metaPattern.matcher(fileName);

    assertTrue(matcher.matches());// w ww.  j a v a  2s .c  o m

    // testing segment parsing with regular expressions               
    assertEquals("gsaon", matcher.group(1));
    assertEquals("1.2.3", matcher.group(2));
    assertEquals(".zip", matcher.group(3));

    matcher = metaPattern.matcher("gsaon-1.2.3.zip");

    assertFalse(matcher.matches());

}

From source file:org.wicketstuff.rest.TestSegmentClasses.java

License:Apache License

@Test
public void testParamSegment() throws Exception {
    String segmentWithRegEx = "{id:[0-9]*:abba}";
    AbstractURLSegment segment = AbstractURLSegment.newSegment(segmentWithRegEx);

    assertTrue(segment instanceof ParamSegment);

    ParamSegment paramSegment = (ParamSegment) segment;

    assertEquals(paramSegment.getParamName(), "id");
    assertEquals(paramSegment.getMetaPattern().toString(), "[0-9]*:abba");

    MetaPattern metaPattern = paramSegment.getMetaPattern();

    assertTrue(metaPattern.matcher("1:abba").matches());
    assertTrue(metaPattern.matcher("1234521:abba").matches());
    assertTrue(metaPattern.matcher(":abba").matches());

    String segmentMultiParam = "{segment0}asegment{segment1:^\\(?\\d{3}\\)?[ -]?\\d{3}[ -]?\\d{4}$}anotherseg";
    segment = AbstractURLSegment.newSegment(segmentMultiParam);

    assertTrue(segment instanceof MultiParamSegment);

    MultiParamSegment multiParamSegment = (MultiParamSegment) segment;
    List<AbstractURLSegment> subSegments = multiParamSegment.getSubSegments();

    assertEquals(4, subSegments.size());
    metaPattern = subSegments.get(2).getMetaPattern();
    assertEquals(metaPattern.toString(), "^\\(?\\d{3}\\)?[ -]?\\d{3}[ -]?\\d{4}$");

    segmentMultiParam = "filename-{symbolicName:[a-z]+}-{version:\\d\\.\\d\\.\\d}{extension:\\.[a-z]+}";
    segment = AbstractURLSegment.newSegment(segmentMultiParam);
    metaPattern = segment.getMetaPattern();

    String fileName = "filename-gsaon-1.2.3.zip";
    Matcher matcher = metaPattern.matcher(fileName);

    assertTrue(matcher.matches());//from w  w w  .j av  a2  s. c o m

    matcher = metaPattern.matcher("gsaon-1.2.3.zip");

    assertFalse(matcher.matches());

    HashMap<String, String> map;
    //testing segment parsing with regular expressions
    segment.populatePathVariables(map = new HashMap<String, String>(), fileName);

    assertEquals("gsaon", map.get("symbolicName"));
    assertEquals("1.2.3", map.get("version"));
    assertEquals(".zip", map.get("extension"));

}