/******************************************************************************* * Copyright (c) 2012-2015 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.ide.ext.java.worker.env; import org.eclipse.che.ide.collections.Array; import org.eclipse.che.ide.collections.Jso; import org.eclipse.che.ide.collections.JsonObject; import org.eclipse.che.ide.collections.js.JsoArray; import org.eclipse.che.ide.ext.java.jdt.internal.compiler.env.ClassSignature; import org.eclipse.che.ide.ext.java.jdt.internal.compiler.env.EnumConstantSignature; import org.eclipse.che.ide.ext.java.jdt.internal.compiler.impl.BooleanConstant; import org.eclipse.che.ide.ext.java.jdt.internal.compiler.impl.ByteConstant; import org.eclipse.che.ide.ext.java.jdt.internal.compiler.impl.CharConstant; import org.eclipse.che.ide.ext.java.jdt.internal.compiler.impl.Constant; import org.eclipse.che.ide.ext.java.jdt.internal.compiler.impl.DoubleConstant; import org.eclipse.che.ide.ext.java.jdt.internal.compiler.impl.FloatConstant; import org.eclipse.che.ide.ext.java.jdt.internal.compiler.impl.IntConstant; import org.eclipse.che.ide.ext.java.jdt.internal.compiler.impl.LongConstant; import org.eclipse.che.ide.ext.java.jdt.internal.compiler.impl.ShortConstant; import org.eclipse.che.ide.ext.java.jdt.internal.compiler.impl.StringConstant; import org.eclipse.che.ide.ext.java.jdt.internal.compiler.lookup.TypeIds; import org.eclipse.che.ide.ext.java.worker.env.json.AnnotationJso; /** * @author Evgen Vidolob */ public class Util { public static char[][] arrayStringToCharArray(Array<String> strings) { if (strings == null) return null; if(strings.size() == 0) return null; char[][] result = new char[strings.size()][]; for (int i = 0; i < strings.size(); i++) { result[i] = strings.get(i).toCharArray(); } return result; } public static Object getDefaultValue(Jso jso){ if(jso == null) return null; if(jso.hasOwnProperty("constant")) { return getConstant(jso.getJsObjectField("constant").<Jso>cast()); } else if(jso.hasOwnProperty("class")) { return new ClassSignature(jso.getStringField("class").toCharArray()); } else if (jso.hasOwnProperty("annotation")) { return new BinaryAnnotation(jso.getJsObjectField("annotation").<AnnotationJso>cast()); }else if(jso.hasOwnProperty("enum")){ JsonObject anEnum = jso.getObjectField("enum"); return new EnumConstantSignature(anEnum.getStringField("typeName").toCharArray(), anEnum.getStringField("constantName").toCharArray()); } else if(jso.hasOwnProperty("array")){ JsoArray<JsonObject> array = jso.getArrayField("array"); Object[] arr = new Object[array.size()]; for (int i = 0; i < array.size(); i++) { arr[i] = getDefaultValue((Jso)array.get(i)); } return arr; } return null; } public static Constant getConstant(Jso constant) { int typeId = constant.getIntField("typeId"); Constant con = null; switch (typeId) { case TypeIds.T_int : con = IntConstant.fromValue(constant.getIntField("value")); break; case TypeIds.T_byte : con = ByteConstant.fromValue(Byte.parseByte(constant.getStringField("value"))); break; case TypeIds.T_short : con = ShortConstant.fromValue((short)constant.getIntField("value")); break; case TypeIds.T_char : con = CharConstant.fromValue(constant.getStringField("value").charAt(0)); break; case TypeIds.T_float : con = FloatConstant.fromValue(Float.valueOf(constant.getStringField("value"))); break; case TypeIds.T_double : if(constant.hasOwnProperty("NotAConstant")){ con = Constant.NotAConstant; } else { con = DoubleConstant.fromValue(Double.valueOf(constant.getStringField("value"))); } break; case TypeIds.T_boolean : con = BooleanConstant.fromValue(constant.getBooleanField("value")); break; case TypeIds.T_long : con = LongConstant.fromValue(Long.parseLong(constant.getStringField("value"))); break; case TypeIds.T_JavaLangString : con = StringConstant.fromValue(constant.getStringField("value")); } return con; } }