home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / ldapjdk.jar / netscape / ldap / client / JDAPMessage.class (.txt) < prev   
Encoding:
Java Class File  |  1999-04-13  |  3.2 KB  |  143 lines

  1. package netscape.ldap.client;
  2.  
  3. import java.io.IOException;
  4. import java.io.OutputStream;
  5. import netscape.ldap.ber.stream.BERConstruct;
  6. import netscape.ldap.ber.stream.BERElement;
  7. import netscape.ldap.ber.stream.BERInteger;
  8. import netscape.ldap.ber.stream.BERIntegral;
  9. import netscape.ldap.ber.stream.BERSequence;
  10. import netscape.ldap.ber.stream.BERTag;
  11. import netscape.ldap.client.opers.JDAPAddResponse;
  12. import netscape.ldap.client.opers.JDAPBindResponse;
  13. import netscape.ldap.client.opers.JDAPCompareResponse;
  14. import netscape.ldap.client.opers.JDAPDeleteResponse;
  15. import netscape.ldap.client.opers.JDAPExtendedResponse;
  16. import netscape.ldap.client.opers.JDAPModifyRDNResponse;
  17. import netscape.ldap.client.opers.JDAPModifyResponse;
  18. import netscape.ldap.client.opers.JDAPProtocolOp;
  19. import netscape.ldap.client.opers.JDAPSearchResponse;
  20. import netscape.ldap.client.opers.JDAPSearchResult;
  21. import netscape.ldap.client.opers.JDAPSearchResultReference;
  22.  
  23. public class JDAPMessage {
  24.    protected int m_msgid;
  25.    protected JDAPProtocolOp m_protocolOp;
  26.    protected JDAPControl[] m_controls;
  27.  
  28.    public JDAPMessage(int var1, JDAPProtocolOp var2) {
  29.       this.m_msgid = var1;
  30.       this.m_protocolOp = var2;
  31.    }
  32.  
  33.    public JDAPMessage(int var1, JDAPProtocolOp var2, JDAPControl[] var3) {
  34.       this.m_msgid = var1;
  35.       this.m_protocolOp = var2;
  36.       this.m_controls = var3;
  37.    }
  38.  
  39.    public JDAPMessage(BERElement var1) throws IOException {
  40.       if (var1.getType() != 48) {
  41.          throw new IOException("SEQUENCE in jdap message expected");
  42.       } else {
  43.          BERSequence var2 = (BERSequence)var1;
  44.          BERInteger var3 = (BERInteger)((BERConstruct)var2).elementAt(0);
  45.          this.m_msgid = ((BERIntegral)var3).getValue();
  46.          BERElement var4 = ((BERConstruct)var2).elementAt(1);
  47.          if (var4.getType() != -1) {
  48.             throw new IOException("TAG in protocol operation is expected");
  49.          } else {
  50.             BERTag var5 = (BERTag)var4;
  51.             switch (var5.getTag() & 31) {
  52.                case 1:
  53.                   this.m_protocolOp = new JDAPBindResponse(var4);
  54.                   break;
  55.                case 3:
  56.                case 5:
  57.                   this.m_protocolOp = new JDAPSearchResult(var4);
  58.                   break;
  59.                case 4:
  60.                   this.m_protocolOp = new JDAPSearchResponse(var4);
  61.                   break;
  62.                case 7:
  63.                   this.m_protocolOp = new JDAPModifyResponse(var4);
  64.                   break;
  65.                case 9:
  66.                   this.m_protocolOp = new JDAPAddResponse(var4);
  67.                   break;
  68.                case 11:
  69.                   this.m_protocolOp = new JDAPDeleteResponse(var4);
  70.                   break;
  71.                case 13:
  72.                   this.m_protocolOp = new JDAPModifyRDNResponse(var4);
  73.                   break;
  74.                case 15:
  75.                   this.m_protocolOp = new JDAPCompareResponse(var4);
  76.                   break;
  77.                case 19:
  78.                   this.m_protocolOp = new JDAPSearchResultReference(var4);
  79.                   break;
  80.                case 24:
  81.                   this.m_protocolOp = new JDAPExtendedResponse(var4);
  82.                   break;
  83.                default:
  84.                   throw new IOException("Unknown rotocol operation");
  85.             }
  86.  
  87.             if (((BERConstruct)var2).size() >= 3) {
  88.                var5 = (BERTag)((BERConstruct)var2).elementAt(2);
  89.                if (var5.getTag() == 160) {
  90.                   BERSequence var6 = (BERSequence)var5.getValue();
  91.                   this.m_controls = new JDAPControl[((BERConstruct)var6).size()];
  92.  
  93.                   for(int var7 = 0; var7 < ((BERConstruct)var6).size(); ++var7) {
  94.                      this.m_controls[var7] = new JDAPControl(((BERConstruct)var6).elementAt(var7));
  95.                   }
  96.                }
  97.             }
  98.  
  99.          }
  100.       }
  101.    }
  102.  
  103.    public int getId() {
  104.       return this.m_msgid;
  105.    }
  106.  
  107.    public JDAPProtocolOp getProtocolOp() {
  108.       return this.m_protocolOp;
  109.    }
  110.  
  111.    public JDAPControl[] getControls() {
  112.       return this.m_controls;
  113.    }
  114.  
  115.    public void write(OutputStream var1) throws IOException {
  116.       BERSequence var2 = new BERSequence();
  117.       BERInteger var3 = new BERInteger(this.m_msgid);
  118.       ((BERConstruct)var2).addElement(var3);
  119.       BERElement var4 = this.m_protocolOp.getBERElement();
  120.       if (var4 == null) {
  121.          throw new IOException("Bad BER element");
  122.       } else {
  123.          ((BERConstruct)var2).addElement(var4);
  124.          if (this.m_controls != null) {
  125.             BERSequence var5 = new BERSequence();
  126.  
  127.             for(int var6 = 0; var6 < this.m_controls.length; ++var6) {
  128.                ((BERConstruct)var5).addElement(this.m_controls[var6].getBERElement());
  129.             }
  130.  
  131.             BERTag var7 = new BERTag(160, var5, true);
  132.             ((BERConstruct)var2).addElement(var7);
  133.          }
  134.  
  135.          ((BERConstruct)var2).write(var1);
  136.       }
  137.    }
  138.  
  139.    public String toString() {
  140.       return "[JDAPMessage] " + this.m_msgid + " " + this.m_protocolOp.toString();
  141.    }
  142. }
  143.