Skip to content

Instantly share code, notes, and snippets.

View asouza's full-sized avatar

Alberto Luiz Souza asouza

View GitHub Profile
public SomeClass(StateParameter parameter) {
/* se você criou essa classe e espera que o construtor seja chamado de outra determinada classe, pq não deixar isso claro
* e ajudar a próxima pessoa?
*/
//inclusive a linguagem podia abraçar e garantir o acoplamento em compilação
ForceSiteCall.from(Other.class);
//como você sabe o ponto de chamada, fica mais aberto você mexer no estado alheio. A ideia é ficar mais claro que essa classe só foi criada para ser usada naquele outro lugar.
parameter.chanceState();
public class CaracteristicaRequest implements CriadorCaracteristica{
new Produto(...., caracteristicasRequest)
}
public Produto(@NotNull Usuario usuario,
@NotNull Categoria categoria,
@NotEmpty String nome,
@Min(value = 1) BigDecimal valor,
@Min(value = 0) int quantidade,
@NotEmpty @Length(max = 1000) String descricao,
//exemplo mexendo nas referências que não deveria
public class PagamentoController {
@Post("/pagamento/usuario/{usuarioId}")
public void aceita(@PathVariable("usuarioId") Long usuarioId,@Valid NovoPagamentoForm dadosPagamento) {
Usuario novoCliente = usuarioRepository.findyId(usuarioId);
//novoCliente.getPagamento() => Optional.empty aqui
novoPagamentoService.executa(novoCliente,dadosPagamento);
//novoCliente.getPagamento() => Optional(pagamento)
//como você ia saber que o estado foi alterado?
public CustomValidtor implements Validator {
public void validate(Object currentForm, Errors validationErrors) {
//O spring já espera que você mexa na referência de Errors passada com argumento e isso muda tudo.
if(...) {
validationErrors.rejectValue("fieldName","customKey", "defaultMessage");
}
}
}
///// simulando o spring validator
@RestController
public class TeamController {
@Autowired
private FormFlow formFlow;
@PostMapping(...)
public void save(@Valid NewTeamForm newTeamForm){
formFlow.transform(newTeamForm).save().andThen(savedObject -> {
public class DataView<T> {
private T proxy;
private Trace trace;
private T original;
private Map<String, Object> complexValues = new HashMap<>();
private DataView(T instance) {
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(instance.getClass());
public static void main(String[] args) {
Team team = new Team("instrutores");
Cycle cycle = new Cycle("novo ciclo", LocalDate.now().minusDays(60), LocalDate.now());
ArrayList<SupportStrategy> strategies = new ArrayList<>();
strategies.add(new SupportStrategy("descricao"));
TeamCycle teamCycle = new TeamCycle(cycle, team, strategies);
System.out.println(DataView.of(teamCycle)
.add(TeamCycle :: getId)
<Form onSubmit={handleSubmit} subscription={{ submitting: true }} validate={validate}>
{({ handleSubmit2, submitting }) => (
<form onSubmit={handleSubmit2} className={classes.form} noValidate>
<Field
autoComplete="email"
autoFocus
component={RFTextField}
disabled={submitting || sent}
fullWidth
label="Email"
@asouza
asouza / agendaDynamic
Created August 28, 2011 14:43
exemplo of dynamics no scala
//para compilar o exemplo faça => scalac arquivo.scala -Xexperimental
package br.com.caelum.dynamic
import java.util.{GregorianCalendar, Calendar}
import java.text.SimpleDateFormat
case class Contato(val nome: String, val email: String, val nascimento: Calendar) {
override def toString = nome + ";" + email + ";" + new SimpleDateFormat("dd/MM/yyyy").format(nascimento.getTime)
}
<form action="/connect/facebook" method="POST">
<input type="hidden" name="scope" value="email" />
<p>
<button type="submit">Connect to Facebook</button>
</p>
</form>