Salve a tutti. Vi espongo il problema che mi si è presentato. Sto al momento preparando l'esame di programmazione in java e, provando a risolvere un vecchio compito d'esame non capisco come devo affrontare una cosa . Posto il testo dell'esame
codice:
public class TestProvider {



        public static void main(String[] args) {

       

                //C--

                Provider p = Provider.getProvider(); // when asked for a page, returns its url without protocol

                WebPage page = p.getPage("http://www.microsoft.com");

                WebPage page2 = p.getPage("http://www.google.com");

                assert "www.microsoft.com".equals(page.content());

                assert "www.google.com".equals(page2.content());

                assert page2.size() == 14;

               

               

                // C

                WebPage page3 = p.getPage("http://www.google.com");

                assert page3.equals(page2);

                assert !page3.equals(p.getPage("https://www.google.com"));

                assert page3.content().equals(p.getPage("https://www.google.com").content());

               

                // B (hint: you can use String.split() )

                Provider p2 = Provider.getProvider(Provider.REVERSE); // returns its reversed url

                assert p2.getPage("http://www.microsoft.com").content().equals("com.microsoft.www");

                assert page3.equals(p2.getPage("http://www.google.com"));

       

                // B++/A--

                p2.enableFirewall(); // by default everything works the same

                p2.addFirewallRule("http://www."); // if something starts with this, it is not accepted.

                p2.addFirewallRule("https://www.");

                p2.addFirewallRule("www.");

                p2.removeFirewallRule("https://www.");

                List<String> rules = p2.firewallRules();

                assert rules.get(0).equals("http://www.");

                assert rules.size() == 2;

                assert p2.firewallEnabled();

                assert !p2.isAllowed("http://www.microsoft.com"); // rule 0 does not allow this page

                assert p2.isAllowed("https://www.microsoft.com");

                p2.disableFirewall();

                assert !p2.firewallEnabled();

                assert p2.isAllowed("http://www.microsoft.com"); // firewall is disabled

                assert p2.isAllowed("https://www.microsoft.com");

               

                // A++

                try {

                        p2.enableFirewall(); // keeps previous rules

                        p2.getPage("http://www.microsoft.com"); // rule 0 does not allow this page

                        assert false; // exception should be thrown instead

                } catch (NotAcceptedByFirewall e) {

                        assert e.violatedRule() == 0;

                }

       

        }



}
Premetto che non chiedo la soluzione dell'esame, ma qualche consiglio su come partire. Il compito consiste nel rendere compilabile e funzionante la classe TestProvider implementando ciò che manca. Ora, mi viene un primo dubbio. Devo implementare la classe WebPage, ma non riesco a capire se la devo implementare come classe interna a Provider o separatamente, e dunque già qua mi blocco e non riesco ad andare avanti perchè non sto trovando lo spunto giusto. Un'altra cosa che non sto capendo è cosa fa in realtà la seguente riga:

Provider p = Provider.getProvider();

Spero di riuscire a cogliere al meglio i vostri preziosi aiuti, Grazie a tutti in anticipo e scusatemi se ho fatto domande banali ...