samples/misuse/src/org/apidesign/misuse/projectconfig/ProjectConfigurationCorrect.java
Updating to NBMs from NetBeans 8.0.1 as some of them are required to run on JDK8
1 package org.apidesign.misuse.projectconfig;
3 public class ProjectConfigurationCorrect {
4 // BEGIN: misuse.prjconfig.correct
5 interface ProjectConfigurationProvider
6 <Configuration extends ProjectConfiguration> {
7 public Configuration[] getConfigurations();
8 public Configuration getActive();
9 public void setActive(Configuration c);
11 interface ProjectConfiguration {
12 public String getDisplayName();
14 // END: misuse.prjconfig.correct
18 /* Following does not work:
20 // BEGIN: misuse.prjconfig.correct.trivial.access
21 ProjectConfigurationProvider<?> provider = null; // obtain elsewhere;
22 provider.setActive(provider.getConfigurations()[0]);
23 // END: misuse.prjconfig.correct.trivial.access
28 // BEGIN: misuse.prjconfig.correct.access
30 ProjectConfigurationProvider<?> provider = null; // obtain elsewhere;
31 resetToZero(provider);
33 // END: misuse.prjconfig.correct.access
35 // BEGIN: misuse.prjconfig.correct.openmethod
36 private static <C extends ProjectConfiguration> void resetToZero(
37 ProjectConfigurationProvider<C> provider
39 provider.setActive(provider.getConfigurations()[0]);
41 // END: misuse.prjconfig.correct.openmethod
43 // BEGIN: misuse.prjconfig.correct.openclass
44 static void workWithProjectConfigurationProvider(
45 ProjectConfigurationProvider<?> p
47 ResetToZero<?> rtz = ResetToZero.create(p);
53 static class ResetToZero<C extends ProjectConfiguration> {
55 final ProjectConfigurationProvider<C> provider;
57 ResetToZero(ProjectConfigurationProvider<C> provider) {
58 this.provider = provider;
61 static <C extends ProjectConfiguration> ResetToZero<C> create(
62 ProjectConfigurationProvider<C> p
64 return new ResetToZero<C>(p);
67 public void obtainFirst() {
68 active = provider.getConfigurations()[0];
72 provider.setActive(active);
75 // END: misuse.prjconfig.correct.openclass