blob: e8c39e32417e6ec656d043007da94b2daf3eeb3d [file] [log] [blame]
/*
* Copyright 2000-2014 JetBrains s.r.o.
*
* 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.jetbrains.jps.gradle.model.impl;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonParseException;
import com.google.gson.JsonSyntaxException;
import com.google.gson.reflect.TypeToken;
import com.intellij.util.xmlb.annotations.Tag;
import org.jetbrains.annotations.NotNull;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author Vladislav.Soroka
* @since 7/22/2014
*/
@Tag("filter")
public class ResourceRootFilter {
@Tag("filterType")
@NotNull
public String filterType;
@Tag("properties")
@NotNull
public String properties;
private transient Map<Object, Object> propertiesMap;
public int computeConfigurationHash() {
int result = filterType.hashCode();
result = 31 * result + properties.hashCode();
return result;
}
@NotNull
public Map<Object, Object> getProperties() {
if (propertiesMap == null) {
try {
Gson gson = new GsonBuilder().create();
propertiesMap = gson.fromJson(
properties,
new TypeToken<Map<Object, Object>>() {
}.getType());
if("RenamingCopyFilter".equals(filterType)) {
final Object pattern = propertiesMap.get("pattern");
final Matcher matcher = Pattern.compile(pattern instanceof String ? (String)pattern : "").matcher("");
propertiesMap.put("matcher", matcher);
}
}
catch (JsonSyntaxException e) {
throw new RuntimeException("Unsupported filter: " + properties , e);
} catch (JsonParseException e) {
throw new RuntimeException("Unsupported filter: " + properties , e);
}
}
return propertiesMap;
}
}