Results 1 to 3 of 3
- 06-29-2009, 07:12 PM #1
[newbie] java.lang.NullPointerException
What kind of file does the following code expect? Why is it breaking?
:confused:
ErrorJava Code:import java.net.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import javax.naming.*; import javax.naming.directory.*; import javax.swing.*; /** This program demonstrates access to a hierarchical database through LDAP */ public class LDAPTest { public static void main(String[] args) { JFrame frame = new LDAPFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } } /** The frame that holds the data panel and the navigation buttons. */ class LDAPFrame extends JFrame { public LDAPFrame() { setTitle("LDAPTest"); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); JPanel northPanel = new JPanel(); northPanel.setLayout(new java.awt.GridLayout(1, 2, 3, 1)); northPanel.add(new JLabel("uid", SwingConstants.RIGHT)); uidField = new JTextField(); northPanel.add(uidField); add(northPanel, BorderLayout.NORTH); JPanel buttonPanel = new JPanel(); add(buttonPanel, BorderLayout.SOUTH); findButton = new JButton("Find"); findButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { findEntry(); } }); buttonPanel.add(findButton); saveButton = new JButton("Save"); saveButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { saveEntry(); } }); buttonPanel.add(saveButton); deleteButton = new JButton("Delete"); deleteButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { deleteEntry(); } }); buttonPanel.add(deleteButton); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent event) { try { if (context != null) context.close(); } catch (NamingException e) { e.printStackTrace(); } } }); } /** Finds the entry for the uid in the text field. */ public void findEntry() { try { if (scrollPane != null) remove(scrollPane); String dn = "uid=" + uidField.getText() + ",ou=people,dc=mycompany,dc=com"; if (context == null) context = getContext(); attrs = context.getAttributes(dn); dataPanel = new DataPanel(attrs); scrollPane = new JScrollPane(dataPanel); add(scrollPane, BorderLayout.CENTER); validate(); uid = uidField.getText(); } catch (NamingException e) { JOptionPane.showMessageDialog(this, e); } catch (IOException e) { JOptionPane.showMessageDialog(this, e); } } /** Saves the changes that the user made. */ public void saveEntry() { try { if (dataPanel == null) return; if (context == null) context = getContext(); if (uidField.getText().equals(uid)) // update existing entry { String dn = "uid=" + uidField.getText() + ",ou=people,dc=mycompany,dc=com"; Attributes editedAttrs = dataPanel.getEditedAttributes(); NamingEnumeration<? extends Attribute> attrEnum = attrs.getAll(); while (attrEnum.hasMore()) { Attribute attr = attrEnum.next(); String id = attr.getID(); Object value = attr.get(); Attribute editedAttr = editedAttrs.get(id); if (editedAttr != null && !attr.get().equals(editedAttr.get())) context.modifyAttributes(dn, DirContext.REPLACE_ATTRIBUTE, new BasicAttributes(id, editedAttr.get())); } } else // create new entry { String dn = "uid=" + uidField.getText() + ",ou=people,dc=mycompany,dc=com"; attrs = dataPanel.getEditedAttributes(); Attribute objclass = new BasicAttribute("objectClass"); objclass.add("uidObject"); objclass.add("person"); attrs.put(objclass); attrs.put("uid", uidField.getText()); context.createSubcontext(dn, attrs); } findEntry(); } catch (NamingException e) { JOptionPane.showMessageDialog(LDAPFrame.this, e); e.printStackTrace(); } catch (IOException e) { JOptionPane.showMessageDialog(LDAPFrame.this, e); e.printStackTrace(); } } /** Deletes the entry for the uid in the text field. */ public void deleteEntry() { try { String dn = "uid=" + uidField.getText() + ",ou=people,dc=mycompany,dc=com"; if (context == null) context = getContext(); context.destroySubcontext(dn); uidField.setText(""); remove(scrollPane); scrollPane = null; repaint(); } catch (NamingException e) { JOptionPane.showMessageDialog(LDAPFrame.this, e); e.printStackTrace(); } catch (IOException e) { JOptionPane.showMessageDialog(LDAPFrame.this, e); e.printStackTrace(); } } /** Gets a context from the properties specified in the file ldapserver.properties @return the directory context */ public static DirContext getContext() throws NamingException, IOException { Properties props = new Properties(); FileInputStream in = new FileInputStream("ldapserver.properties"); props.load(in); in.close(); String url = props.getProperty("ldap.url"); String username = props.getProperty("ldap.username"); String password = props.getProperty("ldap.password"); Hashtable<String, String> env = new Hashtable<String, String>(); env.put(Context.SECURITY_PRINCIPAL, username); env.put(Context.SECURITY_CREDENTIALS, password); DirContext initial = new InitialDirContext(env); DirContext context = (DirContext) initial.lookup(url); return context; } public static final int DEFAULT_WIDTH = 300; public static final int DEFAULT_HEIGHT = 200; private JButton findButton; private JButton saveButton; private JButton deleteButton; private JTextField uidField; private DataPanel dataPanel; private Component scrollPane; private DirContext context; private String uid; private Attributes attrs; } /** This panel displays the contents of a result set. */ class DataPanel extends JPanel { /** Constructs the data panel. @param attributes the attributes of the given entry */ public DataPanel(Attributes attrs) throws NamingException { setLayout(new java.awt.GridLayout(0, 2, 3, 1)); NamingEnumeration<? extends Attribute> attrEnum = attrs.getAll(); while (attrEnum.hasMore()) { Attribute attr = attrEnum.next(); String id = attr.getID(); NamingEnumeration<?> valueEnum = attr.getAll(); while (valueEnum.hasMore()) { Object value = valueEnum.next(); if (id.equals("userPassword")) value = new String((byte[]) value); JLabel idLabel = new JLabel(id, SwingConstants.RIGHT); JTextField valueField = new JTextField("" + value); if (id.equals("objectClass")) valueField.setEditable(false); if (!id.equals("uid")) { add(idLabel); add(valueField); } } } } public Attributes getEditedAttributes() { Attributes attrs = new BasicAttributes(); for (int i = 0; i < getComponentCount(); i += 2) { JLabel idLabel = (JLabel) getComponent(i); JTextField valueField = (JTextField) getComponent(i + 1); String id = idLabel.getText(); String value = valueField.getText(); if (id.equals("userPassword")) attrs.put("userPassword", value.getBytes()); else if (!id.equals("") && !id.equals("objectClass")) attrs.put(id, value); } return attrs; } }
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.util.Hashtable.put(Hashtable.java:394)
at LDAPFrame.getContext(LDAPTest.java:215)
at LDAPFrame.findEntry(LDAPTest.java:102)
at LDAPFrame$1.actionPerformed(LDAPTest.java:49)
at javax.swing.AbstractButton.fireActionPerformed(Abs tractButton.java:19
95)
at javax.swing.AbstractButton$Handler.actionPerformed (AbstractButton.jav
a:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed (DefaultButtonModel
.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultB uttonModel.java:242
)
at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(BasicButtonL
istener.java:236)
at java.awt.Component.processMouseEvent(Component.jav a:6216)
at javax.swing.JComponent.processMouseEvent(JComponen t.java:3265)
at java.awt.Component.processEvent(Component.java:598 1)
at java.awt.Container.processEvent(Container.java:204 1)
at java.awt.Component.dispatchEventImpl(Component.jav a:4583)
at java.awt.Container.dispatchEventImpl(Container.jav a:2099)
at java.awt.Component.dispatchEvent(Component.java:44 13)
at java.awt.LightweightDispatcher.retargetMouseEvent( Container.java:4556
)
at java.awt.LightweightDispatcher.processMouseEvent(C ontainer.java:4220)
at java.awt.LightweightDispatcher.dispatchEvent(Conta iner.java:4150)
at java.awt.Container.dispatchEventImpl(Container.jav a:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2475 )
at java.awt.Component.dispatchEvent(Component.java:44 13)
at java.awt.EventQueue.dispatchEvent(EventQueue.java: 599)
at java.awt.EventDispatchThread.pumpOneEventForFilter s(EventDispatchThre
ad.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(E ventDispatchThread.
java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarch y(EventDispatchThre
ad.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispa tchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThre ad.java:122)
Java Code:[B]ldapserver.properties (originally named sample.ldif; then renamed it)[/B] # Define top-level entry dn: dc=mycompany,dc=com objectClass: dcObject objectClass: organization dc: mycompany o: Core Java Team # Define an entry to contain people # searches for users are based on this entry dn: ou=people,dc=mycompany,dc=com objectClass: organizationalUnit ou: people # Define a user entry for John Q. Public dn: uid=jqpublic,ou=people,dc=mycompany,dc=com objectClass: person objectClass: uidObject uid: jqpublic sn: Public cn: John Q. Public telephoneNumber: +1 408 555 0017 userPassword: wombat # Define a user entry for Jane Doe dn: uid=jdoe,ou=people,dc=mycompany,dc=com objectClass: person objectClass: uidObject uid: jdoe sn: Doe cn: Jane Doe telephoneNumber: +1 408 555 0029 userPassword: heffalump # Define an entry to contain LDAP groups # searches for roles are based on this entry dn: ou=groups,dc=mycompany,dc=com objectClass: organizationalUnit ou: groups # Define an entry for the "techstaff" group dn: cn=techstaff,ou=groups,dc=mycompany,dc=com objectClass: groupOfUniqueNames cn: techstaff uniqueMember: uid=jdoe,ou=people,dc=mycompany,dc=com # Define an entry for the "staff" group dn: cn=staff,ou=groups,dc=mycompany,dc=com objectClass: groupOfUniqueNames cn: staff uniqueMember: uid=jqpublic,ou=people,dc=mycompany,dc=com uniqueMember: uid=jdoe,ou=people,dc=mycompany,dc=com
Last edited by jon80; 06-29-2009 at 07:15 PM.
- 06-29-2009, 07:19 PM #2
i am not sure,But i think,You might have passed null value into the HashTable.
Mak
(Living @ Virtual World)
- 06-30-2009, 04:37 AM #3
- Join Date
- Jul 2007
- Location
- Colombo, Sri Lanka
- Posts
- 11,374
- Blog Entries
- 1
- Rep Power
- 18
Ya, somewhere cause with a null value. Cannot you debug near the hash table insertion? I think it's the easiest way to find the solution.
Similar Threads
-
[newbie] java.lang.NullPointerException
By jon80 in forum New To JavaReplies: 5Last Post: 09-25-2009, 08:43 AM -
[SOLVED] [newbie] java.lang.NullPointerException
By jon80 in forum New To JavaReplies: 5Last Post: 05-07-2009, 04:19 PM -
java.lang.NullPointerException
By vasavi.singh in forum New To JavaReplies: 1Last Post: 02-27-2009, 12:36 PM -
java.lang.NullPointerException
By stevemcc in forum AWT / SwingReplies: 2Last Post: 02-08-2008, 09:01 AM -
java.lang.NullPointerException
By Felissa in forum Advanced JavaReplies: 1Last Post: 07-05-2007, 06:02 AM


LinkBack URL
About LinkBacks
Reply With Quote
Bookmarks