BUG-865: deprecate pre-Beryllium parser elements
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / util / ModuleOrModuleBuilder.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.yangtools.yang.parser.util;
9
10 import com.google.common.base.Optional;
11 import java.util.ArrayList;
12 import java.util.Collection;
13 import java.util.List;
14 import org.opendaylight.yangtools.yang.model.api.Module;
15 import org.opendaylight.yangtools.yang.parser.builder.impl.ModuleBuilder;
16
17 /**
18  * @deprecated Pre-Beryllium implementation, scheduled for removal.
19  *
20  * This class needs to be removed and its sole user, {@link ModuleDependencySort}, use Module instances only.
21  */
22 @Deprecated
23 class ModuleOrModuleBuilder {
24     private final Optional<Module> maybeModule;
25     private final Optional<ModuleBuilder> maybeModuleBuilder;
26
27     ModuleOrModuleBuilder(final Module module) {
28         maybeModule = Optional.of(module);
29         maybeModuleBuilder = Optional.absent();
30     }
31
32     ModuleOrModuleBuilder(final ModuleBuilder moduleBuilder) {
33         maybeModule = Optional.absent();
34         maybeModuleBuilder = Optional.of(moduleBuilder);
35     }
36     boolean isModule(){
37         return maybeModule.isPresent();
38     }
39     boolean isModuleBuilder(){
40         return maybeModuleBuilder.isPresent();
41     }
42     Module getModule(){
43         return maybeModule.get();
44     }
45     ModuleBuilder getModuleBuilder(){
46         return maybeModuleBuilder.get();
47     }
48
49     static List<ModuleOrModuleBuilder> fromAll(final Collection<Module> modules, final Collection<ModuleBuilder> moduleBuilders) {
50         List<ModuleOrModuleBuilder> result = new ArrayList<>(modules.size() + moduleBuilders.size());
51         for(Module m: modules){
52             result.add(new ModuleOrModuleBuilder(m));
53         }
54         for (ModuleBuilder mb : moduleBuilders) {
55             result.add(new ModuleOrModuleBuilder(mb));
56         }
57         return result;
58     }
59 }