gt:             throw new InvalidLLRPMessageException(message);
context: /*
   *
   * This file was generated by LLRP Code Generator
   * see http://llrp-toolkit.cvs.sourceforge.net/llrp-toolkit
   * for more information
   * Generated on: Mon Mar 10 14:26:48 KST 2014;
   *
   */
  
  /*
   * Copyright 2007 ETH Zurich
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   *
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   * http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions
   * and limitations under the License.
   *
   */
  package kr.ac.kaist.resl.ltk.generated.parameters;
  
  import org.apache.log4j.Logger;
  
  import org.jdom.Content;
  import org.jdom.Document;
  import org.jdom.Element;
  import org.jdom.Namespace;
  
  import org.llrp.ltk.exceptions.InvalidLLRPMessageException;
  import org.llrp.ltk.exceptions.MissingParameterException;
  import kr.ac.kaist.resl.ltk.generated.LLRPConstants;
  import org.llrp.ltk.types.Bit;
  import org.llrp.ltk.types.BitList;
  import org.llrp.ltk.types.LLRPBitList;
  import org.llrp.ltk.types.LLRPMessage;
  import org.llrp.ltk.types.SignedShort;
  import org.llrp.ltk.types.TLVParameter;
  import org.llrp.ltk.types.TVParameter;
  import org.llrp.ltk.types.UnsignedShort;
  
  import java.util.LinkedList;
  import java.util.List;
  
  
  /**
   * A reader reports this event every time an enabled GPI changes GPIstate.
  
  See also {@link <a href="http://www.epcglobalinc.org/standards/llrp/llrp_1_0_1-standard-20070813.pdf#page=88&view=fit">LLRP Specification Section 13.2.6.3</a>}
   and {@link <a href="http://www.epcglobalinc.org/standards/llrp/llrp_1_0_1-standard-20070813.pdf#page=149&view=fit">LLRP Specification Section 16.2.7.6.2</a>}
  
  
   */
  
  /**
   * A reader reports this event every time an enabled GPI changes GPIstate.
  
  See also {@link <a href="http://www.epcglobalinc.org/standards/llrp/llrp_1_0_1-standard-20070813.pdf#page=88&view=fit">LLRP Specification Section 13.2.6.3</a>}
   and {@link <a href="http://www.epcglobalinc.org/standards/llrp/llrp_1_0_1-standard-20070813.pdf#page=149&view=fit">LLRP Specification Section 16.2.7.6.2</a>}
  
        .
   */
  public class GPIEvent extends TLVParameter {
      public static final SignedShort TYPENUM = new SignedShort(248);
      private static final Logger LOGGER = Logger.getLogger(GPIEvent.class);
      protected UnsignedShort gPIPortNumber;
      protected Bit gPIEvent;
      protected BitList reserved0 = new BitList(7);
  
      /**
       * empty constructor to create new parameter.
       */
      public GPIEvent() {
      }
  
      /**
       * Constructor to create parameter from binary encoded parameter
       * calls decodeBinary to decode parameter.
       * @param list to be decoded
       */
      public GPIEvent(LLRPBitList list) {
          decodeBinary(list);
      }
  
      /**
      * Constructor to create parameter from xml encoded parameter
      * calls decodeXML to decode parameter.
      * @param element to be decoded
      */
      public GPIEvent(Element element) throws InvalidLLRPMessageException {
          decodeXML(element);
      }
  
      /**
      * {@inheritDoc}
      */
      public LLRPBitList encodeBinarySpecific() {
          LLRPBitList resultBits = new LLRPBitList();
  
          if (gPIPortNumber == null) {
              LOGGER.warn(" gPIPortNumber not set");
              throw new MissingParameterException(
                  " gPIPortNumber not set  for Parameter of Type GPIEvent");
          }
  
          resultBits.append(gPIPortNumber.encodeBinary());
  
          if (gPIEvent == null) {
              LOGGER.warn(" gPIEvent not set");
              throw new MissingParameterException(
                  " gPIEvent not set  for Parameter of Type GPIEvent");
          }
  
          resultBits.append(gPIEvent.encodeBinary());
          resultBits.append(reserved0.encodeBinary());
  
          return resultBits;
      }
  
      /**
      * {@inheritDoc}
      */
      public Content encodeXML(String name, Namespace ns) {
          // element in namespace defined by parent element
          Element element = new Element(name, ns);
          // child element are always in default LLRP namespace
          ns = Namespace.getNamespace("llrp", LLRPConstants.LLRPNAMESPACE);
  
          if (gPIPortNumber == null) {
              LOGGER.warn(" gPIPortNumber not set");
              throw new MissingParameterException(" gPIPortNumber not set");
          } else {
              element.addContent(gPIPortNumber.encodeXML("GPIPortNumber", ns));
          }
  
          if (gPIEvent == null) {
              LOGGER.warn(" gPIEvent not set");
              throw new MissingParameterException(" gPIEvent not set");
          } else {
              element.addContent(gPIEvent.encodeXML("GPIEvent", ns));
          }
  
          //element.addContent(reserved0.encodeXML("reserved",ns));
          //parameters
          return element;
      }
  
      /**
      * {@inheritDoc}
      */
      protected void decodeBinarySpecific(LLRPBitList binary) {
          int position = 0;
          int tempByteLength;
          int tempLength = 0;
          int count;
          SignedShort type;
          int fieldCount;
          Custom custom;
          gPIPortNumber = new UnsignedShort(binary.subList(position,
                      UnsignedShort.length()));
          position += UnsignedShort.length();
          gPIEvent = new Bit(binary.subList(position, Bit.length()));
          position += Bit.length();
          position += reserved0.length();
      }
  
      /**
      * {@inheritDoc}
      */
      public void decodeXML(Element element) throws InvalidLLRPMessageException {
          List<Element> tempList = null;
          boolean atLeastOnce = false;
          Custom custom;
  
          Element temp = null;
  
          // child element are always in default LLRP namespace
          Namespace ns = Namespace.getNamespace(LLRPConstants.LLRPNAMESPACE);
  
          temp = element.getChild("GPIPortNumber", ns);
  
          if (temp != null) {
              gPIPortNumber = new UnsignedShort(temp);
          }
  
          element.removeChild("GPIPortNumber", ns);
          temp = element.getChild("GPIEvent", ns);
  
          if (temp != null) {
              gPIEvent = new Bit(temp);
          }
  
          element.removeChild("GPIEvent", ns);
  
          if (element.getChildren().size() > 0) {
              String message = "GPIEvent has unknown element " +
                  ((Element) element.getChildren().get(0)).getName();
  