This repository has been archived by the owner on Jan 4, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit b041f30
Showing
729 changed files
with
100,991 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
Copyright 2011-2022 TriggerCorp, Inc. | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining | ||
a copy of this software and associated documentation files (the | ||
"Software"), to deal in the Software without restriction, including | ||
without limitation the rights to use, copy, modify, merge, publish, | ||
distribute, sublicense, and/or sell copies of the Software, and to | ||
permit persons to whom the Software is furnished to do so, subject to | ||
the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be | ||
included in all copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | ||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | ||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
# Forge Platform | ||
|
||
|
||
## Installation | ||
|
||
### Install `pyenv`: | ||
|
||
curl https://pyenv.run | bash | ||
|
||
### Install Python 2.7.18: | ||
|
||
pyenv install 2.7.18 | ||
|
||
Remember to add the following to your shell startup script: (`~/.zshenv` for `zsh`) | ||
|
||
export PATH="~/.pyenv/bin:$PATH" | ||
eval "$(pyenv init --path)" # <-- fixes setup.py paths | ||
eval "$(pyenv init -)" | ||
eval "$(pyenv virtualenv-init -)" | ||
|
||
### Create libreforge python environment: | ||
|
||
git clone https://github.com/trigger-corp/libreforge.git libreforge.git | ||
cd libreforge.git | ||
|
||
pyenv virtualenv 2.7.18 libreforge | ||
pyenv local libreforge | ||
|
||
### Install python dependencies: | ||
|
||
pip install -r generate/requirements.txt | ||
|
||
|
||
|
||
|
||
Requires python 2.7 and virtualenv:: | ||
|
||
virtualenv ./python-env | ||
source python-env/bin/activate ("python-env/Scripts/activate.bat" on windows) | ||
cd generate | ||
pip install -r requirements.txt | ||
python setup.py develop | ||
|
||
|
||
## Commands | ||
|
||
All commands have their own help, run with -h for detaisl | ||
|
||
`forge-generate`, `forge-inspector`, `forge-module-test-app` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
package="io.trigger.forge.android.core" | ||
android:versionCode="1" | ||
android:versionName="1.0"> | ||
</manifest> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
apply plugin: "com.android.library" | ||
|
||
android { | ||
compileSdkVersion rootProject.ext.compileSdkVersion | ||
buildToolsVersion rootProject.ext.buildToolsVersion | ||
|
||
defaultConfig { | ||
minSdkVersion rootProject.ext.minSdkVersion | ||
targetSdkVersion rootProject.ext.targetSdkVersion | ||
compileOptions rootProject.ext.compileOptions | ||
|
||
buildConfigField "long", "TIMESTAMP", System.currentTimeMillis() + "L" | ||
} | ||
|
||
flavorDimensions "default" | ||
|
||
productFlavors { | ||
vanilla { | ||
dimension "default" | ||
} | ||
} | ||
|
||
sourceSets { | ||
main { | ||
manifest.srcFile "AndroidManifest.xml" | ||
java.srcDirs = ["src"] | ||
resources.srcDirs = ["src"] | ||
aidl.srcDirs = ["src"] | ||
renderscript.srcDirs = ["src"] | ||
res.srcDirs = ["res"] | ||
assets.srcDirs = ["assets"] | ||
} | ||
vanilla { | ||
java.srcDirs = ["flavors/vanilla/src"] | ||
} | ||
} | ||
|
||
buildTypes { | ||
debug rootProject.ext.debug | ||
release { | ||
debuggable false | ||
minifyEnabled false | ||
shrinkResources false | ||
} | ||
} | ||
|
||
lintOptions { | ||
abortOnError false | ||
} | ||
|
||
dexOptions { | ||
preDexLibraries false | ||
} | ||
|
||
useLibrary "org.apache.http.legacy" | ||
} | ||
|
||
dependencies { | ||
implementation rootProject.ext.dependencies | ||
|
||
implementation files("libs/metadata-extractor-2.6.4.jar") | ||
implementation files("libs/xmpcore.jar") | ||
} |
Binary file not shown.
Binary file not shown.
Binary file not shown.
119 changes: 119 additions & 0 deletions
119
android/ForgeCore/src/com/google/gson/DefaultDateTypeAdapter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
/* | ||
* Copyright (C) 2008 Google Inc. | ||
* | ||
* 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 com.google.gson; | ||
|
||
import java.lang.reflect.Type; | ||
import java.sql.Timestamp; | ||
import java.text.DateFormat; | ||
import java.text.ParseException; | ||
import java.text.SimpleDateFormat; | ||
import java.util.Date; | ||
import java.util.Locale; | ||
import java.util.TimeZone; | ||
|
||
/** | ||
* This type adapter supports three subclasses of date: Date, Timestamp, and | ||
* java.sql.Date. | ||
* | ||
* @author Inderjeet Singh | ||
* @author Joel Leitch | ||
*/ | ||
final class DefaultDateTypeAdapter implements JsonSerializer<Date>, JsonDeserializer<Date> { | ||
|
||
// TODO: migrate to streaming adapter | ||
|
||
private final DateFormat enUsFormat; | ||
private final DateFormat localFormat; | ||
private final DateFormat iso8601Format; | ||
|
||
DefaultDateTypeAdapter() { | ||
this(DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT, Locale.US), | ||
DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT)); | ||
} | ||
|
||
DefaultDateTypeAdapter(String datePattern) { | ||
this(new SimpleDateFormat(datePattern, Locale.US), new SimpleDateFormat(datePattern)); | ||
} | ||
|
||
DefaultDateTypeAdapter(int style) { | ||
this(DateFormat.getDateInstance(style, Locale.US), DateFormat.getDateInstance(style)); | ||
} | ||
|
||
public DefaultDateTypeAdapter(int dateStyle, int timeStyle) { | ||
this(DateFormat.getDateTimeInstance(dateStyle, timeStyle, Locale.US), | ||
DateFormat.getDateTimeInstance(dateStyle, timeStyle)); | ||
} | ||
|
||
DefaultDateTypeAdapter(DateFormat enUsFormat, DateFormat localFormat) { | ||
this.enUsFormat = enUsFormat; | ||
this.localFormat = localFormat; | ||
this.iso8601Format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US); | ||
this.iso8601Format.setTimeZone(TimeZone.getTimeZone("UTC")); | ||
} | ||
|
||
// These methods need to be synchronized since JDK DateFormat classes are not thread-safe | ||
// See issue 162 | ||
public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) { | ||
synchronized (localFormat) { | ||
String dateFormatAsString = enUsFormat.format(src); | ||
return new JsonPrimitive(dateFormatAsString); | ||
} | ||
} | ||
|
||
public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) | ||
throws JsonParseException { | ||
if (!(json instanceof JsonPrimitive)) { | ||
throw new JsonParseException("The date should be a string value"); | ||
} | ||
Date date = deserializeToDate(json); | ||
if (typeOfT == Date.class) { | ||
return date; | ||
} else if (typeOfT == Timestamp.class) { | ||
return new Timestamp(date.getTime()); | ||
} else if (typeOfT == java.sql.Date.class) { | ||
return new java.sql.Date(date.getTime()); | ||
} else { | ||
throw new IllegalArgumentException(getClass() + " cannot deserialize to " + typeOfT); | ||
} | ||
} | ||
|
||
private Date deserializeToDate(JsonElement json) { | ||
synchronized (localFormat) { | ||
try { | ||
return localFormat.parse(json.getAsString()); | ||
} catch (ParseException ignored) { | ||
} | ||
try { | ||
return enUsFormat.parse(json.getAsString()); | ||
} catch (ParseException ignored) { | ||
} | ||
try { | ||
return iso8601Format.parse(json.getAsString()); | ||
} catch (ParseException e) { | ||
throw new JsonSyntaxException(json.getAsString(), e); | ||
} | ||
} | ||
} | ||
|
||
@Override | ||
public String toString() { | ||
StringBuilder sb = new StringBuilder(); | ||
sb.append(DefaultDateTypeAdapter.class.getSimpleName()); | ||
sb.append('(').append(localFormat.getClass().getSimpleName()).append(')'); | ||
return sb.toString(); | ||
} | ||
} |
109 changes: 109 additions & 0 deletions
109
android/ForgeCore/src/com/google/gson/ExclusionStrategy.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
/* | ||
* Copyright (C) 2008 Google Inc. | ||
* | ||
* 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 com.google.gson; | ||
|
||
/** | ||
* A strategy (or policy) definition that is used to decide whether or not a field or top-level | ||
* class should be serialized or deserialized as part of the JSON output/input. For serialization, | ||
* if the {@link #shouldSkipClass(Class)} method returns false then that class or field type | ||
* will not be part of the JSON output. For deserialization, if {@link #shouldSkipClass(Class)} | ||
* returns false, then it will not be set as part of the Java object structure. | ||
* | ||
* <p>The following are a few examples that shows how you can use this exclusion mechanism. | ||
* | ||
* <p><strong>Exclude fields and objects based on a particular class type:</strong> | ||
* <pre class="code"> | ||
* private static class SpecificClassExclusionStrategy implements ExclusionStrategy { | ||
* private final Class<?> excludedThisClass; | ||
* | ||
* public SpecificClassExclusionStrategy(Class<?> excludedThisClass) { | ||
* this.excludedThisClass = excludedThisClass; | ||
* } | ||
* | ||
* public boolean shouldSkipClass(Class<?> clazz) { | ||
* return excludedThisClass.equals(clazz); | ||
* } | ||
* | ||
* public boolean shouldSkipField(FieldAttributes f) { | ||
* return excludedThisClass.equals(f.getDeclaredClass()); | ||
* } | ||
* } | ||
* </pre> | ||
* | ||
* <p><strong>Excludes fields and objects based on a particular annotation:</strong> | ||
* <pre class="code"> | ||
* public @interface FooAnnotation { | ||
* // some implementation here | ||
* } | ||
* | ||
* // Excludes any field (or class) that is tagged with an "@FooAnnotation" | ||
* private static class FooAnnotationExclusionStrategy implements ExclusionStrategy { | ||
* public boolean shouldSkipClass(Class<?> clazz) { | ||
* return clazz.getAnnotation(FooAnnotation.class) != null; | ||
* } | ||
* | ||
* public boolean shouldSkipField(FieldAttributes f) { | ||
* return f.getAnnotation(FooAnnotation.class) != null; | ||
* } | ||
* } | ||
* </pre> | ||
* | ||
* <p>Now if you want to configure {@code Gson} to use a user defined exclusion strategy, then | ||
* the {@code GsonBuilder} is required. The following is an example of how you can use the | ||
* {@code GsonBuilder} to configure Gson to use one of the above sample: | ||
* <pre class="code"> | ||
* ExclusionStrategy excludeStrings = new UserDefinedExclusionStrategy(String.class); | ||
* Gson gson = new GsonBuilder() | ||
* .setExclusionStrategies(excludeStrings) | ||
* .create(); | ||
* </pre> | ||
* | ||
* <p>For certain model classes, you may only want to serialize a field, but exclude it for | ||
* deserialization. To do that, you can write an {@code ExclusionStrategy} as per normal; | ||
* however, you would register it with the | ||
* {@link GsonBuilder#addDeserializationExclusionStrategy(ExclusionStrategy)} method. | ||
* For example: | ||
* <pre class="code"> | ||
* ExclusionStrategy excludeStrings = new UserDefinedExclusionStrategy(String.class); | ||
* Gson gson = new GsonBuilder() | ||
* .addDeserializationExclusionStrategy(excludeStrings) | ||
* .create(); | ||
* </pre> | ||
* | ||
* @author Inderjeet Singh | ||
* @author Joel Leitch | ||
* | ||
* @see GsonBuilder#setExclusionStrategies(ExclusionStrategy...) | ||
* @see GsonBuilder#addDeserializationExclusionStrategy(ExclusionStrategy) | ||
* @see GsonBuilder#addSerializationExclusionStrategy(ExclusionStrategy) | ||
* | ||
* @since 1.4 | ||
*/ | ||
public interface ExclusionStrategy { | ||
|
||
/** | ||
* @param f the field object that is under test | ||
* @return true if the field should be ignored; otherwise false | ||
*/ | ||
public boolean shouldSkipField(FieldAttributes f); | ||
|
||
/** | ||
* @param clazz the class object that is under test | ||
* @return true if the class should be ignored; otherwise false | ||
*/ | ||
public boolean shouldSkipClass(Class<?> clazz); | ||
} |
Oops, something went wrong.