human
human

Reputation: 647

Send multiple server objects from client to server

I have this code where there are two types of Object ObjectA and ObjectB on server. I send these data to client on some action done on client side. After I update these objects on client side I need to send it back to sever to reflect the new values. I tried getting multiple objects using same ObjectInputStream and ObjectOutputStream object from server but it throws ClassCastException for reading objects from client. How can I approach this. My code is as shown below.

Server Class

private static class CustomerServer implements Runnable {
    private Socket socket;
    private int clientNumber;

    public CustomerServer(Socket socket, int clientNumber) {
        this.socket = socket;
        this.clientNumber = clientNumber;
    }

    @SuppressWarnings("unchecked")
    public void run() {
        try {

            ObjectInputStream oin = new ObjectInputStream(socket.getInputStream());
            ObjectOutputStream sOut = new ObjectOutputStream(socket.getOutputStream());
            while (true) {
                sOut.writeObject(items);
                Object s = oin.readObject();
                if(s instanceof CustomerAccount){
                    CustomerAccount cust = (CustomerAccount) s; // logged in customer, received from client login action
                    cust.accNumber = ++clientNumber;
                    customers.add(cust);
                    CustomerAccount delCust = (CustomerAccount)s; //customer who logged out, received from client logout action
                    //remove logged out customers from logged in customers list
                    if(customers.contains(delCust)){
                        customers.remove(delCust);
                    }
                }else if(s instanceof ArrayList<?>){
                    if(((ArrayList<?>)s).get(0) instanceof ItemsForSale){
                        items = (ArrayList<ItemsForSale>) s;
                    }
                }
            }
        } catch (IOException e) {
            log("Error handling client# " + clientNumber + ": " + e);
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                socket.close();
            } catch (IOException e) {
                log("Couldn't close a socket, what's going on?");
            }
        }
    }

Client Class

public static void main(String[] args) throws IOException // main method
{
    String serverName = "127.0.0.1"; // server IP address
    int port = 4456; // port to get connected to server. This should match
                        // ServerSocket port in PatilVivekStoreServer

    EventQueue.invokeLater(new Runnable() {
        public void run() // define run method
        {
            try // try block
            {
                System.out.println("Connecting to " + serverName + " on port " + port);
                Socket socket = new Socket(serverName, port);
                System.out.println("Just connected to " + socket.getRemoteSocketAddress());
                oout = new ObjectOutputStream(socket.getOutputStream()); // initialize
                                                                            // new
                                                                            // ObjectOutputStream
                cIn = new ObjectInputStream(socket.getInputStream());
                //dOut = new DataOutputStream(socket.getOutputStream());
                //dIn = new DataInputStream(socket.getInputStream());
                NewUser frame = new NewUser(); // new customer


                // set NewUser frame visible
                frame.setVisible(true);
            } catch (Exception e) // catch block
            {
                e.printStackTrace();
            }
        }
    });
}

NewUser Class

public static class NewUser extends JFrame// create class NewUser
{
    private JPanel contentPane; // declare variable
    private JButton btnSignup;
    CustomerAccount customer;
    ArrayList<ItemsForSale> items;

    /**
     * Create the frame.
     * 
     * @throws IOException
     */
    public NewUser() throws IOException // create constructor
    {
        customer = new CustomerAccount();
        // set title
        setTitle("CLIENT");
        // set close operation
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // set bounds of frame
        setBounds(10, 100, 1000, 550);
        // create object of JPanel
        contentPane = new JPanel();
        // set contentPane border
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        // set ContentPane with new object
        setContentPane(contentPane);
        // set contentPane layout is null
        contentPane.setLayout(null);

        // create text field for user
        customer.setEmailAddress(new JTextField());
        // set bounds for text fields
        customer.getEmailAddress().setBounds(188, 106, 99, 20);
        // in contentPane add text field
        contentPane.add(customer.getEmailAddress());
        // set column for text field
        customer.getEmailAddress().setColumns(10);

        // create text field for password
        customer.setPassword(new JPasswordField());
        // set bound for password field
        customer.getPassword().setBounds(188, 161, 99, 20);
        // add text field on contentPane
        contentPane.add(customer.getPassword());
        // set column for password text field
        customer.getPassword().setColumns(10);

        // create text field for password
        customer.setCustomerName(new JTextField());
        // set bound for password field
        customer.getCustomerName().setBounds(188, 51, 99, 20);
        // add text field on contentPane
        contentPane.add(customer.getCustomerName());
        // set column for password text field
        customer.getCustomerName().setColumns(10);

        // create text field for password
        customer.setAddress(new JTextField());
        // set bound for password field
        customer.getAddress().setBounds(188, 216, 99, 20);
        // add text field on contentPane
        contentPane.add(customer.getAddress());
        // set column for password text field
        customer.getAddress().setColumns(10);

        // label the text field
        JLabel lblUserName = new JLabel("Email Address");
        // set bounds for label
        lblUserName.setBounds(70, 109, 86, 14);
        // add into contentPane
        contentPane.add(lblUserName);

        // label the text field
        JLabel lblPassword = new JLabel("Password");
        // set bounds for label
        lblPassword.setBounds(70, 164, 86, 14);
        // add into contentPane
        contentPane.add(lblPassword);

        // label the text field
        JLabel lblName = new JLabel("Name");
        // set bounds for label
        lblName.setBounds(70, 54, 86, 14);
        // add into contentPane
        contentPane.add(lblName);

        // label the text field
        JLabel lblAddress = new JLabel("Address");
        // set bounds for label
        lblAddress.setBounds(70, 219, 86, 14);
        // add into contentPane
        contentPane.add(lblAddress);

        // create button signup
        btnSignup = new JButton("Register");

        JSeparator vSeparator = new JSeparator();
        vSeparator.setOrientation(SwingConstants.VERTICAL);
        vSeparator.setBounds(333, 16, 2, 307);
        contentPane.add(vSeparator);

        JLabel lblItem1 = new JLabel(" ");
        lblItem1.setBounds(378, 57, 100, 20);
        contentPane.add(lblItem1);

        JLabel lblItem2 = new JLabel(" ");
        lblItem2.setBounds(378, 82, 100, 20);
        contentPane.add(lblItem2);

        JLabel lblItem3 = new JLabel(" ");
        lblItem3.setBounds(378, 109, 100, 20);
        contentPane.add(lblItem3);

        JLabel lblItem4 = new JLabel(" ");
        lblItem4.setBounds(378, 135, 100, 20);
        contentPane.add(lblItem4);

        JLabel lblItem5 = new JLabel(" ");
        lblItem5.setBounds(378, 161, 100, 20);
        contentPane.add(lblItem5);

        JLabel lblItem6 = new JLabel(" ");
        lblItem6.setBounds(378, 186, 100, 20);
        contentPane.add(lblItem6);

        JLabel lblItem7 = new JLabel(" ");
        lblItem7.setBounds(378, 211, 100, 20);
        contentPane.add(lblItem7);

        JLabel lblItem8 = new JLabel(" ");
        lblItem8.setBounds(378, 238, 100, 20);
        contentPane.add(lblItem8);

        JLabel lblItem9 = new JLabel(" ");
        lblItem9.setBounds(378, 264, 100, 20);
        contentPane.add(lblItem9);

        JLabel lblItem10 = new JLabel(" ");
        lblItem10.setBounds(378, 292, 100, 20);
        contentPane.add(lblItem10);

        // add event handler on SignUp button
        btnSignup.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                try // try block
                {
                    // declare variables
                    String username = "";
                    String pwd = "";
                    String addr = "";
                    String name = "";

                    // get values using getText() method
                    username = customer.getEmailAddress().getText().trim();
                    pwd = new String(customer.getPassword().getPassword());
                    addr = customer.getAddress().getText().trim();
                    name = customer.getCustomerName().getText().trim();

                    // check condition if field equals to blank throw error
                    // message
                    if (username.equals("") || pwd.equals("")) {
                        JOptionPane.showMessageDialog(null, " name or password or Role is wrong", "Error",
                                JOptionPane.ERROR_MESSAGE);
                    } else // else register customer
                    {
                        accountNumber++;
                        String[] cust = new String[5];
                        cust[0] = Integer.toString(accountNumber);
                        cust[1] = name;
                        cust[2] = username;
                        cust[3] = pwd;
                        cust[4] = addr;
                        customers.add(cust);
                        System.out.println("In this methid register\n" + customers);

                        String SMessage = "Record added for " + name;

                        // create dialog ox which is print message
                        JOptionPane.showMessageDialog(null, SMessage, "Message", JOptionPane.PLAIN_MESSAGE);

                    }
                } catch (Exception a) // catch block
                {
                    a.printStackTrace();
                }
            }
        });
        // set bound for SignUp button
        btnSignup.setBounds(70, 270, 115, 26);
        // add button into contentPane
        contentPane.add(btnSignup);

        JLabel lblCustomerDetails = new JLabel("Customer Details:");
        lblCustomerDetails.setBounds(439, 344, 136, 20);
        contentPane.add(lblCustomerDetails);

        JLabel dispName = new JLabel("");
        dispName.setBounds(466, 51, 69, 20);
        contentPane.add(dispName);

        JLabel dispEmail = new JLabel("");
        dispEmail.setBounds(466, 106, 69, 20);
        contentPane.add(dispEmail);

        JLabel dispAddress = new JLabel("");
        dispAddress.setBounds(466, 161, 69, 20);
        contentPane.add(dispAddress);

        JSeparator separator = new JSeparator();
        separator.setBounds(15, 328, 798, 14);
        contentPane.add(separator);

        JLabel lblLoginForm = new JLabel("Login Form");
        lblLoginForm.setBounds(70, 344, 86, 20);
        contentPane.add(lblLoginForm);

        JLabel lblUsernameemail = new JLabel("Username/Email:");
        lblUsernameemail.setBounds(70, 380, 122, 20);
        contentPane.add(lblUsernameemail);

        loginEmail = new JTextField();
        loginEmail.setBounds(224, 377, 146, 26);
        contentPane.add(loginEmail);
        loginEmail.setColumns(10);

        JLabel lblPassword_1 = new JLabel("Password:");
        lblPassword_1.setBounds(70, 416, 86, 20);
        contentPane.add(lblPassword_1);

        loginPassword = new JPasswordField();
        loginPassword.setBounds(224, 413, 146, 26);
        contentPane.add(loginPassword);
        loginPassword.setColumns(10);

        JButton btnLogin = new JButton("Login");
        btnLogin.setBounds(70, 449, 115, 29);
        contentPane.add(btnLogin);

        JLabel lblName_1 = new JLabel("Name:");
        lblName_1.setBounds(435, 380, 69, 20);
        contentPane.add(lblName_1);

        JLabel lblAddress_1 = new JLabel("Address:");
        lblAddress_1.setBounds(435, 429, 69, 20);
        contentPane.add(lblAddress_1);

        JLabel detailName = new JLabel("");
        detailName.setBounds(519, 380, 69, 20);
        contentPane.add(detailName);

        JLabel detailAddress = new JLabel("");
        detailAddress.setBounds(519, 429, 160, 20);
        contentPane.add(detailAddress);

        JButton btnLogout = new JButton("Logout");
        btnLogout.setBounds(234, 449, 115, 29);
        contentPane.add(btnLogout);

        JButton btnAddToCart_0 = new JButton("Add to Cart");
        JButton btnAddToCart_1 = new JButton("Add to Cart");
        JButton btnAddToCart_2 = new JButton("Add to Cart");
        JButton btnAddToCart_3 = new JButton("Add to Cart");
        JButton btnAddToCart_4 = new JButton("Add to Cart");
        JButton btnAddToCart_5 = new JButton("Add to Cart");
        JButton btnAddToCart_6 = new JButton("Add to Cart");
        JButton btnAddToCart_7 = new JButton("Add to Cart");
        JButton btnAddToCart_8 = new JButton("Add to Cart");
        JButton btnAddToCart_9 = new JButton("Add to Cart");
        JButton btnRemove_0 = new JButton("Remove");
        JButton btnRemove_1 = new JButton("Remove");
        JButton btnRemove_2 = new JButton("Remove");
        JButton btnRemove_3 = new JButton("Remove");
        JButton btnRemove_4 = new JButton("Remove");
        JButton btnRemove_5 = new JButton("Remove");
        JButton btnRemove_6 = new JButton("Remove");
        JButton btnRemove_7 = new JButton("Remove");
        JButton btnRemove_8 = new JButton("Remove");
        JButton btnRemove_9 = new JButton("Remove");
        JLabel lblInventory = new JLabel("Inventory");
        JLabel lblQuantity = new JLabel("Quantity");

        textField = new JTextField();
        textField_1 = new JTextField();
        textField_2 = new JTextField();
        textField_3 = new JTextField();
        textField_4 = new JTextField();
        textField_5 = new JTextField();
        textField_6 = new JTextField();
        textField_7 = new JTextField();
        textField_8 = new JTextField();
        textField_9 = new JTextField();
        textField.setBounds(502, 62, 79, 20);
        contentPane.add(textField);
        textField.setColumns(10);

        textField_1.setBounds(502, 86, 79, 20);
        contentPane.add(textField_1);
        textField_1.setColumns(10);

        textField_2.setBounds(502, 113, 79, 20);
        contentPane.add(textField_2);
        textField_2.setColumns(10);

        textField_3.setColumns(10);
        textField_3.setBounds(502, 140, 79, 20);
        contentPane.add(textField_3);

        textField_4.setColumns(10);
        textField_4.setBounds(502, 166, 79, 20);
        contentPane.add(textField_4);

        textField_5.setColumns(10);
        textField_5.setBounds(502, 191, 79, 20);
        contentPane.add(textField_5);

        textField_6.setColumns(10);
        textField_6.setBounds(502, 217, 79, 20);
        contentPane.add(textField_6);

        textField_7.setColumns(10);
        textField_7.setBounds(502, 243, 79, 20);
        contentPane.add(textField_7);

        textField_8.setColumns(10);
        textField_8.setBounds(502, 267, 79, 20);
        contentPane.add(textField_8);

        textField_9.setColumns(10);
        textField_9.setBounds(502, 292, 79, 20);
        contentPane.add(textField_9);

        JButton btnCartContents = new JButton("Cart Contents");
        btnCartContents.setBounds(872, 71, 115, 29);
        contentPane.add(btnCartContents);

        JButton btnRefreshInventory = new JButton("Refresh Inventory");
        btnRefreshInventory.addActionListener(new ActionListener() {

            @SuppressWarnings("unchecked")
            @Override
            public void actionPerformed(ActionEvent e) {
                //items = (ArrayList<ItemsForSale>) cIn.readObject();
                lblItem1.setText(
                        items.get(0).getItemName() + "           " + items.get(0).getItemsInStock());
                lblItem2.setText(
                        items.get(1).getItemName() + "           " + items.get(1).getItemsInStock());
                lblItem3.setText(
                        items.get(2).getItemName() + "           " + items.get(2).getItemsInStock());
                lblItem4.setText(
                        items.get(3).getItemName() + "           " + items.get(3).getItemsInStock());
                lblItem5.setText(
                        items.get(4).getItemName() + "           " + items.get(4).getItemsInStock());
                lblItem6.setText(
                        items.get(5).getItemName() + "           " + items.get(5).getItemsInStock());
                lblItem7.setText(
                        items.get(6).getItemName() + "           " + items.get(6).getItemsInStock());
                lblItem8.setText(
                        items.get(7).getItemName() + "           " + items.get(7).getItemsInStock());
                lblItem9.setText(
                        items.get(8).getItemName() + "           " + items.get(8).getItemsInStock());
                lblItem10
                        .setText(items.get(9).getItemName() + "         " + items.get(9).getItemsInStock());
            }
        });
        btnRefreshInventory.setBounds(872, 31, 115, 29);
        contentPane.add(btnRefreshInventory);

        lblInventory.setBounds(436, 41, 69, 20);
        contentPane.add(lblInventory);

        lblQuantity.setBounds(515, 41, 69, 20);
        contentPane.add(lblQuantity);

        btnAddToCart_0.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnAddToCart_0";
                textFieldValidation(textField,'a',s);
            }
        });
        btnAddToCart_0.setBounds(603, 62, 115, 20);
        contentPane.add(btnAddToCart_0);

        btnAddToCart_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnAddToCart_1";
                textFieldValidation(textField_1,'a',s);
            }
        });
        btnAddToCart_1.setBounds(603, 86, 115, 20);
        contentPane.add(btnAddToCart_1);

        btnAddToCart_2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnAddToCart_2";
                textFieldValidation(textField_2,'a',s);
            }
        });
        btnAddToCart_2.setBounds(603, 113, 115, 20);
        contentPane.add(btnAddToCart_2);

        btnAddToCart_3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnAddToCart_3";
                textFieldValidation(textField_3,'a',s);
            }
        });
        btnAddToCart_3.setBounds(603, 140, 115, 20);
        contentPane.add(btnAddToCart_3);

        btnAddToCart_4.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnAddToCart_4";
                textFieldValidation(textField_4,'a',s);
            }
        });
        btnAddToCart_4.setBounds(603, 166, 115, 20);
        contentPane.add(btnAddToCart_4);

        btnAddToCart_5.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnAddToCart_5";
                textFieldValidation(textField_5,'a',s);
            }
        });
        btnAddToCart_5.setBounds(603, 191, 115, 20);
        contentPane.add(btnAddToCart_5);

        btnAddToCart_6.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnAddToCart_6";
                textFieldValidation(textField_6,'a',s);
            }
        });
        btnAddToCart_6.setBounds(603, 217, 115, 20);
        contentPane.add(btnAddToCart_6);

        btnAddToCart_7.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnAddToCart_7";
                textFieldValidation(textField_7,'a',s);
            }
        });
        btnAddToCart_7.setBounds(603, 243, 115, 20);
        contentPane.add(btnAddToCart_7);

        btnAddToCart_8.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnAddToCart_8";
                textFieldValidation(textField_8,'a',s);
            }
        });
        btnAddToCart_8.setBounds(603, 267, 115, 20);
        contentPane.add(btnAddToCart_8);

        btnAddToCart_9.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnAddToCart_9";
                textFieldValidation(textField_9,'a',s);
            }
        });
        btnAddToCart_9.setBounds(603, 292, 115, 20);
        contentPane.add(btnAddToCart_9);

        btnRemove_0.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnRemove_0";
                textFieldValidation(textField,'r',s);
            }
        });
        btnRemove_0.setBounds(743, 62, 115, 20);
        contentPane.add(btnRemove_0);

        btnRemove_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnRemove_1";
                textFieldValidation(textField_1,'r',s);
            }
        });
        btnRemove_1.setBounds(743, 86, 115, 20);
        contentPane.add(btnRemove_1);

        btnRemove_2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnRemove_2";
                textFieldValidation(textField_2,'r',s);
            }
        });
        btnRemove_2.setBounds(743, 113, 115, 20);
        contentPane.add(btnRemove_2);

        btnRemove_3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnRemove_3";
                textFieldValidation(textField_3,'r',s);
            }
        });
        btnRemove_3.setBounds(743, 140, 115, 20);
        contentPane.add(btnRemove_3);

        btnRemove_4.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnRemove_4";
                textFieldValidation(textField_4,'r',s);
            }
        });
        btnRemove_4.setBounds(743, 166, 115, 20);
        contentPane.add(btnRemove_4);

        btnRemove_5.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnRemove_5";
                textFieldValidation(textField_5,'r',s);
            }
        });
        btnRemove_5.setBounds(743, 191, 115, 20);
        contentPane.add(btnRemove_5);

        btnRemove_6.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnRemove_6";
                textFieldValidation(textField_6,'r',s);
            }
        });
        btnRemove_6.setBounds(743, 217, 115, 20);
        contentPane.add(btnRemove_6);

        btnRemove_7.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnRemove_7";
                textFieldValidation(textField_7,'r',s);
            }
        });
        btnRemove_7.setBounds(743, 243, 115, 20);
        contentPane.add(btnRemove_7);

        btnRemove_8.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnRemove_8";
                textFieldValidation(textField_8,'r',s);
            }
        });
        btnRemove_8.setBounds(743, 267, 115, 20);
        contentPane.add(btnRemove_8);

        btnRemove_9.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String s = "btnRemove_9";
                textFieldValidation(textField_9,'r',s);
            }
        });
        btnRemove_9.setBounds(743, 292, 115, 20);
        contentPane.add(btnRemove_9);

        btnRemove_0.setEnabled(false);
        btnRemove_1.setEnabled(false);
        btnRemove_2.setEnabled(false);
        btnRemove_3.setEnabled(false);
        btnRemove_4.setEnabled(false);
        btnRemove_5.setEnabled(false);
        btnRemove_6.setEnabled(false);
        btnRemove_7.setEnabled(false);
        btnRemove_8.setEnabled(false);
        btnRemove_9.setEnabled(false);
        btnAddToCart_0.setEnabled(false);
        btnAddToCart_9.setEnabled(false);
        btnAddToCart_1.setEnabled(false);
        btnAddToCart_2.setEnabled(false);
        btnAddToCart_3.setEnabled(false);
        btnAddToCart_4.setEnabled(false);
        btnAddToCart_5.setEnabled(false);
        btnAddToCart_6.setEnabled(false);
        btnAddToCart_7.setEnabled(false);
        btnAddToCart_8.setEnabled(false);
        btnRefreshInventory.setEnabled(false);
        btnCartContents.setEnabled(false);

        btnLogin.addActionListener(new ActionListener() {

            @SuppressWarnings("unchecked")
            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub
                try // try block
                {
                    // declare variables
                    String username = "";
                    String pwd = "";
                    // get values using getText() method
                    username = loginEmail.getText().trim();
                    pwd = new String(loginPassword.getPassword());

                    // check condition it field equals to blank throw error
                    // message
                    if (username.equals("") || pwd.equals("")) {
                        JOptionPane.showMessageDialog(null, " name or password or Role is wrong", "Error",
                                JOptionPane.ERROR_MESSAGE);
                    } else if (detailName.getText().length() != 0 || detailAddress.getText().length() != 0) {
                        JOptionPane.showMessageDialog(null, "Logout from previous user to login", "Error",
                                JOptionPane.ERROR_MESSAGE);
                    } else // else insert query is run properly
                    {
                        String accnum = null;
                        // get logged in customer details
                        for (String[] x : customers) {
                            if (x[2].compareTo(username) == 0 && x[3].compareTo(pwd) == 0) {
                                detailName.setText(x[1]);
                                detailAddress.setText(x[4]);
                            }
                        }
                        // send customer details to server
                        oout.writeChar('n');
                        oout.writeObject(customer);

                        items = (ArrayList<ItemsForSale>) cIn.readObject();
                        lblItem1.setText(
                                items.get(0).getItemName() + "           " + items.get(0).getItemsInStock());
                        lblItem2.setText(
                                items.get(1).getItemName() + "           " + items.get(1).getItemsInStock());
                        lblItem3.setText(
                                items.get(2).getItemName() + "           " + items.get(2).getItemsInStock());
                        lblItem4.setText(
                                items.get(3).getItemName() + "           " + items.get(3).getItemsInStock());
                        lblItem5.setText(
                                items.get(4).getItemName() + "           " + items.get(4).getItemsInStock());
                        lblItem6.setText(
                                items.get(5).getItemName() + "           " + items.get(5).getItemsInStock());
                        lblItem7.setText(
                                items.get(6).getItemName() + "           " + items.get(6).getItemsInStock());
                        lblItem8.setText(
                                items.get(7).getItemName() + "           " + items.get(7).getItemsInStock());
                        lblItem9.setText(
                                items.get(8).getItemName() + "           " + items.get(8).getItemsInStock());
                        lblItem10
                                .setText(items.get(9).getItemName() + "         " + items.get(9).getItemsInStock());

                        btnRemove_0.setEnabled(true);
                        btnRemove_1.setEnabled(true);
                        btnRemove_2.setEnabled(true);
                        btnRemove_3.setEnabled(true);
                        btnRemove_4.setEnabled(true);
                        btnRemove_5.setEnabled(true);
                        btnRemove_6.setEnabled(true);
                        btnRemove_7.setEnabled(true);
                        btnRemove_8.setEnabled(true);
                        btnRemove_9.setEnabled(true);
                        btnAddToCart_0.setEnabled(true);
                        btnAddToCart_9.setEnabled(true);
                        btnAddToCart_1.setEnabled(true);
                        btnAddToCart_2.setEnabled(true);
                        btnAddToCart_3.setEnabled(true);
                        btnAddToCart_4.setEnabled(true);
                        btnAddToCart_5.setEnabled(true);
                        btnAddToCart_6.setEnabled(true);
                        btnAddToCart_7.setEnabled(true);
                        btnAddToCart_8.setEnabled(true);
                        btnRefreshInventory.setEnabled(true);
                        btnCartContents.setEnabled(true);
                    }
                } catch (Exception se) {
                    // handle errors for JDBC

                    se.printStackTrace();
                }
            }
        });

        btnLogout.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                // TODO Auto-generated method stub

                try {
                    String username = "";
                    String pwd = "";

                    // get values using getText() method
                    username = loginEmail.getText().trim();
                    pwd = new String(loginPassword.getPassword());

                    // check condition if field equals to blank throw error
                    // message
                    if (username.equals("") || pwd.equals("")) {
                        JOptionPane.showMessageDialog(null, " Not logged in", "Error", JOptionPane.ERROR_MESSAGE);
                    } else {
                        detailName.setText("");
                        detailAddress.setText("");
                        oout.writeObject(customer);


                        btnRemove_0.setEnabled(false);
                        btnRemove_1.setEnabled(false);
                        btnRemove_2.setEnabled(false);
                        btnRemove_3.setEnabled(false);
                        btnRemove_4.setEnabled(false);
                        btnRemove_5.setEnabled(false);
                        btnRemove_6.setEnabled(false);
                        btnRemove_7.setEnabled(false);
                        btnRemove_8.setEnabled(false);
                        btnRemove_9.setEnabled(false);
                        btnAddToCart_0.setEnabled(false);
                        btnAddToCart_9.setEnabled(false);
                        btnAddToCart_1.setEnabled(false);
                        btnAddToCart_2.setEnabled(false);
                        btnAddToCart_3.setEnabled(false);
                        btnAddToCart_4.setEnabled(false);
                        btnAddToCart_5.setEnabled(false);
                        btnAddToCart_6.setEnabled(false);
                        btnAddToCart_7.setEnabled(false);
                        btnAddToCart_8.setEnabled(false);
                        btnRefreshInventory.setEnabled(false);
                        btnCartContents.setEnabled(false);
                    }
                } catch (Exception e2) {
                    // TODO: handle exception
                }
            }
        });

    }

    public void textFieldValidation(JTextField t, char a, String s){
        int i = Integer.parseInt(t.getText());
        s = s.substring(s.length()-1);
        int n = Integer.parseInt(s);
        int iStock = items.get(n).getItemsInStock();
        try {
            if ((i>0)&&(i<7)) {
                if(a == 'a'){
                    iStock = iStock - i;
                }else if(a == 'r'){
                    iStock = iStock + i;
                }
                items.get(n).setItemsInStock(iStock);

                try {
                    oout.writeObject(items);
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        } catch (NumberFormatException n1) {
            JOptionPane.showMessageDialog(null, " Please input valid quantity", "Error",
                    JOptionPane.ERROR_MESSAGE);
        }
    }
}

A sample code of sending multiple objects from different client threads to server will be helpful

Upvotes: 0

Views: 687

Answers (1)

user207421
user207421

Reputation: 310893

If you're going to use this system of sending a char before an object to tell you what it is, you need to send it before every object. Otherwise when you read the char you're throwing away part of the object if it isn't the 'n' case.

As for your ClassCastException, you've provided zero information, but the message that comes with it tells you what the desired and actual classes were.

EDIT

Object s = oin.readObject();
if(s instanceof CustomerAccount){
    CustomerAccount cust = (CustomerAccount) oin.readObject(); 

This is nonsense. It should be

CustomerAccount cust = (CustomerAccount)s;

Obviously.

Upvotes: 1

Related Questions