// Path: app/src/main/java/me/martinez/sergio/daggertwobasearchitecture/activities/MainActivityComponent.java
// @PerActivity
// @Component(dependencies = AppComponent.class, modules = {ActivityModule.class, MainActivityModule.class})
// public interface MainActivityComponent extends MainFragment.Pluser{
//   void injectActivity(MainActivity mainActivity);
//   A provideA();
//   List<String> provideDiInjectionHistory();
//   Log4Me provideLog4Me();
// }
// 
// Path: app/src/main/java/me/martinez/sergio/daggertwobasearchitecture/fragments/sections/testsection/TestSectionModule.java
// @Module
// public class TestSectionModule{
// 
//   @PerSection @Provides public SectionProperty provideSectionProperty(){
//     return new SectionProperty();
//   }
// 
//   @Provides public NotScopedProperty provideNotScopedProperty(){
//     return new NotScopedProperty();
//   }
// }
// 
// Path: app/src/main/java/me/martinez/sergio/daggertwobasearchitecture/fragments/sections/testsection/firststep/FirstFragment.java
// public class FirstFragment extends BaseFragment<FirstFragmentComponent> implements
//     FirstFragmentView {
// 
//   @Inject A a;
//   @Inject E e;
//   @Inject D d;
//   @Inject List<String> diInjectionHistory;
//   @Inject FirstFragmentPresenter firstFragmentPresenter;
//   @Inject SectionProperty sectionProperty;
//   @Inject NotScopedProperty notScopedProperty;
// 
//   @Override
//   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//     return inflater.inflate(R.layout.fragment_main, container, false);
//   }
// 
//   @Override public void onStart() {
//     super.onStart();
//     testDI();
//   }
// 
//   //region Test DI stuff
//   private void testDI() {
// 
//     diInjectionHistory.add(FirstFragment.class.getName());
//     diInjectionHistory.add(firstFragmentPresenter.toString());
//     diInjectionHistory.add(notScopedProperty.toString());
//     diInjectionHistory.add(sectionProperty.toString());
//     diInjectionHistory.add(a.toString());
//     diInjectionHistory.add(e.toString());
//     diInjectionHistory.add(d.toString());
// 
//   }
// 
//   @Override protected void initDIComponent() {
//     fragmentComponent = (getParentComponent(SectionComponentMain.class)).plus(
//         new FragmentModule(this), new FirstFragmentModule(this));
//     fragmentComponent.injectFragment(this);
//   }
// 
//   public interface Pluser{
//     FirstFragmentComponent plus(FragmentModule fragmentModule, FirstFragmentModule firstFragmentModule);
//   }
// 
// }
// 
// Path: app/src/main/java/me/martinez/sergio/daggertwobasearchitecture/fragments/sections/testsection/secondstep/SecondFragment.java
// public class SecondFragment extends BaseFragment<SecondFragmentComponent> implements
//     SecondFragmentView{
// 
//   @Inject SecondFragmentPresenter secondFragmentPresenter;
//   @Inject SectionProperty sectionProperty;
//   @Inject NotScopedProperty notScopedProperty;
//   @Inject List<String> diInjectionHistory;
//   @Inject Log4Me logger;
//   @Inject E e;
//   @Inject D d;
// 
//   @Override
//   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//     return inflater.inflate(R.layout.fragment_main, container, false);
//   }
// 
//   @Override public void onStart() {
//     super.onStart();
//       testDI();
//     }
// 
//     //region Test DI stuff
//   private void testDI() {
// 
//     diInjectionHistory.add(SecondFragment.class.getName());
//     diInjectionHistory.add(secondFragmentPresenter.toString());
//     diInjectionHistory.add(notScopedProperty.toString());
//     diInjectionHistory.add(sectionProperty.toString());
//     diInjectionHistory.add(logger.toString());
//     diInjectionHistory.add(e.toString());
//     diInjectionHistory.add(d.toString());
// 
//     logger.log(diInjectionHistory.toString());
// 
// 
//   }
// 
//   @Override protected void initDIComponent() {
//     fragmentComponent = (getParentComponent(SectionComponentMain.class)).plus(
//         new FragmentModule(this), new SecondFragmentModule(this));
//     fragmentComponent.injectFragment(this);
//   }
// 
//   public interface Pluser{
//     SecondFragmentComponent plus(FragmentModule secondFragmentModule, SecondFragmentModule firstFragmentModule);
//   }
// 
// }
// 
// Path: app/src/main/java/me/martinez/sergio/daggertwobasearchitecture/test/SectionProperty.java
// public class SectionProperty {
// 
// }


import dagger.Component;
import me.martinez.sergio.daggertwobasearchitecture.activities.MainActivityComponent;
import me.martinez.sergio.daggertwobasearchitecture.di.anotations.scopes.PerSection;
import me.martinez.sergio.daggertwobasearchitecture.fragments.sections.testsection.TestSectionModule;
import me.martinez.sergio.daggertwobasearchitecture.fragments.sections.testsection.firststep.FirstFragment;
import me.martinez.sergio.daggertwobasearchitecture.fragments.sections.testsection.secondstep.SecondFragment;
import me.martinez.sergio.daggertwobasearchitecture.test.SectionProperty;
/*
 *  Copyright (C) 2015 Sergio Martinez Open Source Project
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package me.martinez.sergio.daggertwobasearchitecture.di.components;

/**
 * Created by Sergio Martinez Rodriguez
 * Date 15/7/15.
 */


@PerSection
@Component( dependencies = MainActivityComponent.class, modules = TestSectionModule.class)
public interface SectionComponentMain extends
// Path: app/src/main/java/me/martinez/sergio/daggertwobasearchitecture/activities/MainActivityComponent.java
// @PerActivity
// @Component(dependencies = AppComponent.class, modules = {ActivityModule.class, MainActivityModule.class})
// public interface MainActivityComponent extends MainFragment.Pluser{
//   void injectActivity(MainActivity mainActivity);
//   A provideA();
//   List<String> provideDiInjectionHistory();
//   Log4Me provideLog4Me();
// }
// 
// Path: app/src/main/java/me/martinez/sergio/daggertwobasearchitecture/fragments/sections/testsection/TestSectionModule.java
// @Module
// public class TestSectionModule{
// 
//   @PerSection @Provides public SectionProperty provideSectionProperty(){
//     return new SectionProperty();
//   }
// 
//   @Provides public NotScopedProperty provideNotScopedProperty(){
//     return new NotScopedProperty();
//   }
// }
// 
// Path: app/src/main/java/me/martinez/sergio/daggertwobasearchitecture/fragments/sections/testsection/firststep/FirstFragment.java
// public class FirstFragment extends BaseFragment<FirstFragmentComponent> implements
//     FirstFragmentView {
// 
//   @Inject A a;
//   @Inject E e;
//   @Inject D d;
//   @Inject List<String> diInjectionHistory;
//   @Inject FirstFragmentPresenter firstFragmentPresenter;
//   @Inject SectionProperty sectionProperty;
//   @Inject NotScopedProperty notScopedProperty;
// 
//   @Override
//   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//     return inflater.inflate(R.layout.fragment_main, container, false);
//   }
// 
//   @Override public void onStart() {
//     super.onStart();
//     testDI();
//   }
// 
//   //region Test DI stuff
//   private void testDI() {
// 
//     diInjectionHistory.add(FirstFragment.class.getName());
//     diInjectionHistory.add(firstFragmentPresenter.toString());
//     diInjectionHistory.add(notScopedProperty.toString());
//     diInjectionHistory.add(sectionProperty.toString());
//     diInjectionHistory.add(a.toString());
//     diInjectionHistory.add(e.toString());
//     diInjectionHistory.add(d.toString());
// 
//   }
// 
//   @Override protected void initDIComponent() {
//     fragmentComponent = (getParentComponent(SectionComponentMain.class)).plus(
//         new FragmentModule(this), new FirstFragmentModule(this));
//     fragmentComponent.injectFragment(this);
//   }
// 
//   public interface Pluser{
//     FirstFragmentComponent plus(FragmentModule fragmentModule, FirstFragmentModule firstFragmentModule);
//   }
// 
// }
// 
// Path: app/src/main/java/me/martinez/sergio/daggertwobasearchitecture/fragments/sections/testsection/secondstep/SecondFragment.java
// public class SecondFragment extends BaseFragment<SecondFragmentComponent> implements
//     SecondFragmentView{
// 
//   @Inject SecondFragmentPresenter secondFragmentPresenter;
//   @Inject SectionProperty sectionProperty;
//   @Inject NotScopedProperty notScopedProperty;
//   @Inject List<String> diInjectionHistory;
//   @Inject Log4Me logger;
//   @Inject E e;
//   @Inject D d;
// 
//   @Override
//   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//     return inflater.inflate(R.layout.fragment_main, container, false);
//   }
// 
//   @Override public void onStart() {
//     super.onStart();
//       testDI();
//     }
// 
//     //region Test DI stuff
//   private void testDI() {
// 
//     diInjectionHistory.add(SecondFragment.class.getName());
//     diInjectionHistory.add(secondFragmentPresenter.toString());
//     diInjectionHistory.add(notScopedProperty.toString());
//     diInjectionHistory.add(sectionProperty.toString());
//     diInjectionHistory.add(logger.toString());
//     diInjectionHistory.add(e.toString());
//     diInjectionHistory.add(d.toString());
// 
//     logger.log(diInjectionHistory.toString());
// 
// 
//   }
// 
//   @Override protected void initDIComponent() {
//     fragmentComponent = (getParentComponent(SectionComponentMain.class)).plus(
//         new FragmentModule(this), new SecondFragmentModule(this));
//     fragmentComponent.injectFragment(this);
//   }
// 
//   public interface Pluser{
//     SecondFragmentComponent plus(FragmentModule secondFragmentModule, SecondFragmentModule firstFragmentModule);
//   }
// 
// }
// 
// Path: app/src/main/java/me/martinez/sergio/daggertwobasearchitecture/test/SectionProperty.java
// public class SectionProperty {
// 
// }


// Path: app/src/main/java/me/martinez/sergio/daggertwobasearchitecture/di/components/SectionComponentMain.java
import dagger.Component;
import me.martinez.sergio.daggertwobasearchitecture.activities.MainActivityComponent;
import me.martinez.sergio.daggertwobasearchitecture.di.anotations.scopes.PerSection;
import me.martinez.sergio.daggertwobasearchitecture.fragments.sections.testsection.TestSectionModule;
import me.martinez.sergio.daggertwobasearchitecture.fragments.sections.testsection.firststep.FirstFragment;
import me.martinez.sergio.daggertwobasearchitecture.fragments.sections.testsection.secondstep.SecondFragment;
import me.martinez.sergio.daggertwobasearchitecture.test.SectionProperty;

/*
 *  Copyright (C) 2015 Sergio Martinez Open Source Project
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */

package me.martinez.sergio.daggertwobasearchitecture.di.components;

/**
 * Created by Sergio Martinez Rodriguez
 * Date 15/7/15.
 */


@PerSection
@Component( dependencies = MainActivityComponent.class, modules = TestSectionModule.class)
public interface SectionComponentMain extends
    FirstFragment.Pluser,