7
respostas

Erros

Estou com erros nos pacotes Alurator e estoque-api

ALURATOR

package br.com.alura.alurator;

public class Alurator {

    private String pacoteBase;

    public Alurator(String pacoteBase) {
        this.pacoteBase = pacoteBase;
    }

    public Object executa(String url) {


        String[] partesUrl = url.replaceFirst("/", "")
            .split("/");

        String nomeControle = partesUrl[0] + "Controller";

        try {
            Class<?> classeControle = Class.forName(pacoteBase + nomeControle);

                Object instanciaControle = classeControle.newInstance();

                System.out.println(instanciaControle);

                return null;

        }catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }

    }
}

MAIN

package br.com.alura.estoque;

import java.util.Scanner;

import br.com.alura.alurator.Alurator;

public class Main {

    /**
     * Simula o navegador.
     * 
     */
    public static void main(String[] args) throws Exception {

        /*
         * Casos possiveis:
         * /controlador/metodo
         * /controlador/metodo?param1=valor1&param2=valor2
         */

        try (Scanner s = new Scanner(System.in)) {
            String url = s.nextLine();

            Alurator alurator = new Alurator("br.com.alura.estoque.controle.");
            while (!url.equals("exit")) {
                Object response = alurator.executa(url);

                System.out.println("Response: " + response);

                url = s.nextLine();
            }
        }
    }

}

PRODUTO CONTROLLER

package br.com.alura.estoque.controle;

import java.util.List;
import java.util.stream.Collectors;

import br.com.alura.estoque.dao.ProdutoDaoMock;
import br.com.alura.estoque.modelo.Produto;

public class ProdutoController {

    private ProdutoDaoMock produtoDao;

    public ProdutoController() {
        produtoDao = new ProdutoDaoMock();
    }

    public List<Produto> lista() {
        return produtoDao.lista();
    }

    public List<Produto> filtra(String nome) {
        return produtoDao.lista().stream()
                            .filter(produto -> produto.getNome().toLowerCase().startsWith(nome.toLowerCase()))
                            .collect(Collectors.toList());
    }

    public List<Produto> filtra(String nome, String marca) {
        return produtoDao.lista().stream()
                            .filter(produto -> 
                                produto.getNome().toLowerCase().startsWith(nome.toLowerCase())
                                && produto.getMarca().equalsIgnoreCase(marca)
                            )
                            .collect(Collectors.toList());
    }
}
7 respostas

Quais erros ?

Na classe Alurator do projeto alurator, tem new instance() declarado de forma errada e na classe TesteInstanciaObjeto do pacote do pacote alurator-playground também dá erro na declaração do newInstance(). Na classe Main do projeto estoque-api, tem um erro de import (import br.com.alura.alurator.Alurator) , e na classe ProdutoController do projeto estoque-api fica dando erro falando que o tipo da lista que retorna não está visível (The type List is not visible). O que recomendo é pegar as classes da video aula e as minhas que estão dando erro e substituir para me ajudar porque eu tinha tentado arrumar e não deu certo.

Classe Alurator

package br.com.alura.alurator;

public class Alurator {

    private String pacoteBase;

    public Alurator(String pacoteBase) {
        this.pacoteBase = pacoteBase;
    }

    public Object executa(String url) {

        String[] partesUrl = url.replaceFirst("/", "")
            .split("/");

        String nomeControle = 
                Character.toUpperCase(partesUrl[0].charAt(0))  +
                partesUrl[0].substring(1) + "Controller";

        try {
            Class<?> classeControle = Class.forName(pacoteBase + nomeControle);

                Object instanciaControle = classeControle.newInstance();

                System.out.println(instanciaControle);

                return null;

        }catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }

    }
}

Classe TesteInstanciaObjeto

package br.com.alura.alurator.playground.reflexao;

import br.com.alura.alurator.playground.controle.Controle;

public class TesteInstanciaObjeto {

    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        //url -> /controle/lista


        Class<Controle> controleClasse1 = Controle.class;

        Controle controle = new Controle();
        Class<? extends Controle> controleClasse2 = controle.getClass();

        Class<?> controleClasse3 = 
                Class.forName("br.com.alura.alurator.playground.controle.Controle");

        Controle objetoControle = controleClasse1.newInstance();

        Object outroObjetoControle = controleClasse3.newInstance();

        System.out.println(objetoControle instanceof Controle);

        System.out.println(outroObjetoControle instanceof Controle);

    }
}

Classe Main do projeto estoque-api

package br.com.alura.estoque;

import java.util.Scanner;

import br.com.alura.alurator.Alurator;

public class Main {

    public static void main(String[] args) throws Exception {

        try (Scanner s = new Scanner(System.in)) {
            String url = s.nextLine();

            Alurator alurator = new Alurator("br.com.alura.estoque.controle.");
            while (!url.equals("exit")) {
                Object response = alurator.executa(url);

                System.out.println("Response: " + response);

                url = s.nextLine();
            }
        }
    }

}

Classe ProdutoController do projeto estoque-api

package br.com.alura.estoque.controle;

import java.util.List;
import java.util.stream.Collectors;

import br.com.alura.estoque.dao.ProdutoDaoMock;
import br.com.alura.estoque.modelo.Produto;

public class ProdutoController {

    private ProdutoDaoMock produtoDao;

    public ProdutoController() {
        produtoDao = new ProdutoDaoMock();
    }

    public List<Produto> lista() {
        return produtoDao.lista();
    }

    public List<Produto> filtra(String nome) {
        return produtoDao.lista().stream()
                            .filter(produto -> produto.getNome().toLowerCase().startsWith(nome.toLowerCase()))
                            .collect(Collectors.toList());
    }

    public List<Produto> filtra(String nome, String marca) {
        return produtoDao.lista().stream()
                            .filter(produto -> 
                                produto.getNome().toLowerCase().startsWith(nome.toLowerCase())
                                && produto.getMarca().equalsIgnoreCase(marca)
                            )
                            .collect(Collectors.toList());
    }
}

O restante das classes não gera nenhum erro ou warning, mas os projetos do instrutor no video, não estão com nenhum erro, por isso fiquei na dúvida