Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/*******************************************************************************
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.apache.sling.scripting.sightly.render;
import java.lang.reflect.Method;
import java.util.Calendar;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.lang3.math.NumberUtils;
import org.apache.sling.scripting.sightly.Record;
import org.apache.sling.scripting.sightly.compiler.util.ObjectModel;
/**
* Default abstract implementation of {@link RuntimeObjectModel}.
*/
public abstract class AbstractRuntimeObjectModel implements RuntimeObjectModel {
/**
* A {@link Set} that stores all the supported primitive classes.
*/
public static final Set> PRIMITIVE_CLASSES = ObjectModel.PRIMITIVE_CLASSES;
public static final String TO_STRING_METHOD = "toString";
@Override
public boolean isPrimitive(Object obj) {
return ObjectModel.isPrimitive(obj);
}
@Override
public boolean isDate(Object target) {
return (target instanceof Date || target instanceof Calendar);
}
@Override
public boolean isNumber(Object target) {
if (target == null) {
return false;
}
if (target instanceof Number) {
return true;
}
String value = toString(target);
return NumberUtils.isCreatable(value);
}
@Override
public boolean isCollection(Object target) {
return (target instanceof Collection) || (target instanceof Object[]) || (target instanceof Iterable) ||
(target instanceof Iterator);
}
@Override
public Object resolveProperty(Object target, Object property) {
if (target == null || property == null) {
return null;
}
Object resolved = null;
if (property instanceof Number) {
resolved = ObjectModel.getIndex(target, ((Number) property).intValue());
}
if (resolved == null) {
resolved = getProperty(target, property);
}
return resolved;
}
@Override
public boolean toBoolean(Object object) {
return ObjectModel.toBoolean(object);
}
@Override
public Number toNumber(Object object) {
return ObjectModel.toNumber(object);
}
@Override
public Date toDate(Object object) {
if (object instanceof Date) {
return (Date)object;
} else if (object instanceof Calendar) {
return ((Calendar)object).getTime();
}
return null;
}
@Override
public String toString(Object target) {
return ObjectModel.toString(target);
}
@Override
public Collection