blob: 32271c9033e502fb4d32ac5710aadad709e8b639 [file] [log] [blame]
/**
* Copyright (c) 2008-2010 Andrey Somov
*
* 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 org.yaml.snakeyaml.issues.issue9;
import org.yaml.snakeyaml.constructor.Constructor;
import org.yaml.snakeyaml.nodes.Node;
import org.yaml.snakeyaml.nodes.NodeId;
import org.yaml.snakeyaml.nodes.ScalarNode;
import org.yaml.snakeyaml.nodes.Tags;
public class BeanConstructor extends Constructor {
public BeanConstructor() {
super(BeanHolder.class);
yamlConstructors.put(Tags.getGlobalTagForClass(Bean1.class), new Bean1ScalarConstructor());
yamlConstructors.put(Tags.getGlobalTagForClass(BeanHolder.class),
new BeanHolderScalarConstructor());
}
private class Bean1ScalarConstructor extends ConstructScalar {
@Override
public Object construct(Node node) {
ScalarNode snode = (ScalarNode) node;
if (snode.getValue().length() == 0) {
return new Bean1();
} else {
return new Bean1(Integer.parseInt(snode.getValue()));
}
}
}
private class BeanHolderScalarConstructor extends ConstructScalar {
@Override
public Object construct(Node node) {
if (node.getNodeId() == NodeId.scalar) {
ScalarNode n = (ScalarNode) node;
String value = n.getValue();
int i = 3;
if (value.length() != 0) {
i = Integer.parseInt(value);
}
return new BeanHolder(new Bean1(i));
} else {
return new BeanHolder();
}
}
}
}