View Javadoc
1   /*
2    *   Licensed to the Apache Software Foundation (ASF) under one
3    *   or more contributor license agreements.  See the NOTICE file
4    *   distributed with this work for additional information
5    *   regarding copyright ownership.  The ASF licenses this file
6    *   to you under the Apache License, Version 2.0 (the
7    *   "License"); you may not use this file except in compliance
8    *   with the License.  You may obtain a copy of the License at
9    *
10   *     https://www.apache.org/licenses/LICENSE-2.0
11   *
12   *   Unless required by applicable law or agreed to in writing,
13   *   software distributed under the License is distributed on an
14   *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   *   KIND, either express or implied.  See the License for the
16   *   specific language governing permissions and limitations
17   *   under the License.
18   *
19   */
20  
21  package org.apache.directory.api.ldap.extras.controls.vlv_impl;
22  
23  
24  import org.apache.directory.api.asn1.ber.grammar.AbstractGrammar;
25  import org.apache.directory.api.asn1.ber.grammar.Grammar;
26  import org.apache.directory.api.asn1.ber.grammar.GrammarTransition;
27  import org.apache.directory.api.asn1.ber.tlv.UniversalTag;
28  import org.slf4j.Logger;
29  import org.slf4j.LoggerFactory;
30  
31  
32  /**
33   * The VLV grammar
34   *
35   * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
36   */
37  public final class VirtualListViewRequestGrammar extends AbstractGrammar<VirtualListViewRequestContainer>
38  {
39      static final Logger LOG = LoggerFactory.getLogger( VirtualListViewRequestGrammar.class );
40  
41      private static Grammar<?> instance = new VirtualListViewRequestGrammar();
42  
43  
44      @SuppressWarnings("unchecked")
45      private VirtualListViewRequestGrammar()
46      {
47          setName( VirtualListViewRequestGrammar.class.getName() );
48  
49          super.transitions = new GrammarTransition[VirtualListViewRequestStates.END_STATE.ordinal()][256];
50  
51          super.transitions[VirtualListViewRequestStates.START_STATE.ordinal()][UniversalTag.SEQUENCE.getValue()] =
52              new GrammarTransition<VirtualListViewRequestContainer>(
53                  VirtualListViewRequestStates.START_STATE,
54                  VirtualListViewRequestStates.VLV_SEQUENCE_STATE,
55                  UniversalTag.SEQUENCE.getValue(),
56                  null );
57  
58          super.transitions[VirtualListViewRequestStates.VLV_SEQUENCE_STATE.ordinal()][UniversalTag.INTEGER.getValue()] =
59              new GrammarTransition<VirtualListViewRequestContainer>(
60                  VirtualListViewRequestStates.VLV_SEQUENCE_STATE,
61                  VirtualListViewRequestStates.VLV_BEFORE_COUNT_STATE,
62                  UniversalTag.INTEGER.getValue(),
63                  new StoreBeforeCount() );
64  
65          super.transitions[VirtualListViewRequestStates.VLV_BEFORE_COUNT_STATE.ordinal()][UniversalTag.INTEGER
66              .getValue()] =
67              new GrammarTransition<VirtualListViewRequestContainer>(
68                  VirtualListViewRequestStates.VLV_BEFORE_COUNT_STATE,
69                  VirtualListViewRequestStates.VLV_AFTER_COUNT_STATE,
70                  UniversalTag.INTEGER.getValue(),
71                  new StoreAfterCount() );
72  
73          super.transitions[VirtualListViewRequestStates.VLV_AFTER_COUNT_STATE.ordinal()][VirtualListViewerTags.BY_OFFSET_TAG
74              .getValue()] =
75              new GrammarTransition<VirtualListViewRequestContainer>(
76                  VirtualListViewRequestStates.VLV_AFTER_COUNT_STATE,
77                  VirtualListViewRequestStates.VLV_TARGET_BY_OFFSET_STATE,
78                  ( byte ) VirtualListViewerTags.BY_OFFSET_TAG.getValue(),
79                  null );
80  
81          super.transitions[VirtualListViewRequestStates.VLV_AFTER_COUNT_STATE.ordinal()][VirtualListViewerTags.ASSERTION_VALUE_TAG
82              .getValue()] =
83              new GrammarTransition<VirtualListViewRequestContainer>(
84                  VirtualListViewRequestStates.VLV_AFTER_COUNT_STATE,
85                  VirtualListViewRequestStates.VLV_ASSERTION_VALUE_STATE,
86                  ( byte ) VirtualListViewerTags.ASSERTION_VALUE_TAG.getValue(),
87                  new StoreAssertionValue() );
88  
89          super.transitions[VirtualListViewRequestStates.VLV_TARGET_BY_OFFSET_STATE.ordinal()][UniversalTag.INTEGER
90              .getValue()] =
91              new GrammarTransition<VirtualListViewRequestContainer>(
92                  VirtualListViewRequestStates.VLV_TARGET_BY_OFFSET_STATE,
93                  VirtualListViewRequestStates.VLV_OFFSET_STATE,
94                  UniversalTag.INTEGER.getValue(),
95                  new StoreOffset() );
96  
97          super.transitions[VirtualListViewRequestStates.VLV_OFFSET_STATE.ordinal()][UniversalTag.INTEGER.getValue()] =
98              new GrammarTransition<VirtualListViewRequestContainer>(
99                  VirtualListViewRequestStates.VLV_OFFSET_STATE,
100                 VirtualListViewRequestStates.VLV_CONTENT_COUNT_STATE,
101                 UniversalTag.INTEGER.getValue(),
102                 new StoreContentCount() );
103 
104         super.transitions[VirtualListViewRequestStates.VLV_CONTENT_COUNT_STATE.ordinal()][UniversalTag.OCTET_STRING
105             .getValue()] =
106             new GrammarTransition<VirtualListViewRequestContainer>(
107                 VirtualListViewRequestStates.VLV_CONTENT_COUNT_STATE,
108                 VirtualListViewRequestStates.VLV_CONTEXT_ID_STATE,
109                 UniversalTag.OCTET_STRING.getValue(),
110                 new StoreContextId() );
111 
112         super.transitions[VirtualListViewRequestStates.VLV_ASSERTION_VALUE_STATE.ordinal()][UniversalTag.OCTET_STRING
113             .getValue()] =
114             new GrammarTransition<VirtualListViewRequestContainer>(
115                 VirtualListViewRequestStates.VLV_ASSERTION_VALUE_STATE,
116                 VirtualListViewRequestStates.VLV_CONTEXT_ID_STATE,
117                 UniversalTag.OCTET_STRING.getValue(),
118                 new StoreContextId() );
119     }
120 
121 
122     /**
123      * @return the singleton instance of the VirtualListViewRequestGrammar
124      */
125     public static Grammar<?> getInstance()
126     {
127         return instance;
128     }
129 }