projects
/
Mograsim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fixed a bug in Am2900; created dlatch8/80; relayouted some components
[Mograsim.git]
/
net.mograsim.logic.model
/
src
/
net
/
mograsim
/
logic
/
model
/
snippets
/
CodeSnippetSupplier.java
diff --git
a/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/CodeSnippetSupplier.java
b/net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/CodeSnippetSupplier.java
index
619254a
..
22ebc09
100644
(file)
--- a/
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/CodeSnippetSupplier.java
+++ b/
net.mograsim.logic.model/src/net/mograsim/logic/model/snippets/CodeSnippetSupplier.java
@@
-3,12
+3,13
@@
package net.mograsim.logic.model.snippets;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
-import java.util.Set;
+
+import net.mograsim.logic.model.serializing.ReflectionHelper;
public class CodeSnippetSupplier<C, S>
{
private final Map<String, String> standardSnippetIDClassNames = new HashMap<>();
public class CodeSnippetSupplier<C, S>
{
private final Map<String, String> standardSnippetIDClassNames = new HashMap<>();
- private final
Set<String> standardSnippetIDSetUnmodifiable = Collections.unmodifiableSet(standardSnippetIDClassNames.keySet()
);
+ private final
Map<String, String> standardSnippetIDClassNamesUnmodifiable = Collections.unmodifiableMap(standardSnippetIDClassNames
);
private final Map<String, SnippetDefinintion<C, ?, S>> snippetSuppliersForClassNames = new HashMap<>();
private final SnippetDefinintion<C, ?, S> defaultSnippetSupplier;
private final Map<String, SnippetDefinintion<C, ?, S>> snippetSuppliersForClassNames = new HashMap<>();
private final SnippetDefinintion<C, ?, S> defaultSnippetSupplier;
@@
-17,14
+18,16
@@
public class CodeSnippetSupplier<C, S>
this.defaultSnippetSupplier = defaultSnippetSupplier;
}
this.defaultSnippetSupplier = defaultSnippetSupplier;
}
- public void addStandardSnippetID(String standardSnippetID, String associatedSnippet
ClassName
)
+ public void addStandardSnippetID(String standardSnippetID, String associatedSnippet
ID
)
{
{
- standardSnippetIDClassNames.put(standardSnippetID, associatedSnippetClassName);
+ if (!associatedSnippetID.startsWith("class:"))
+ throw new IllegalArgumentException("Unrecognized snippet ID format: " + associatedSnippetID);
+ standardSnippetIDClassNames.put(standardSnippetID, associatedSnippetID);
}
}
- public
Set<
String> getStandardSnippetIDs()
+ public
Map<String,
String> getStandardSnippetIDs()
{
{
- return standardSnippetID
Set
Unmodifiable;
+ return standardSnippetID
ClassNames
Unmodifiable;
}
public void setSnippetSupplier(String id, SnippetDefinintion<C, ?, S> snippetSupplier)
}
public void setSnippetSupplier(String id, SnippetDefinintion<C, ?, S> snippetSupplier)
@@
-37,13
+40,10
@@
public class CodeSnippetSupplier<C, S>
{
if (id != null)
{
{
if (id != null)
{
- String snippetClassName;
- if (id.startsWith("class:"))
- snippetClassName = id.substring(6);
- else
- snippetClassName = standardSnippetIDClassNames.get(id);
- if (snippetClassName != null)
+ String resolvedID = resolveID(id);
+ if (resolvedID != null)
{
{
+ String snippetClassName = resolvedID.substring(6);
tryLoadSnippetClass(snippetClassName);
SnippetDefinintion<C, ?, S> snippetSupplier = snippetSuppliersForClassNames.get(snippetClassName);
if (snippetSupplier != null)
tryLoadSnippetClass(snippetClassName);
SnippetDefinintion<C, ?, S> snippetSupplier = snippetSuppliersForClassNames.get(snippetClassName);
if (snippetSupplier != null)
@@
-56,23
+56,17
@@
public class CodeSnippetSupplier<C, S>
return defaultSnippetSupplier;
}
return defaultSnippetSupplier;
}
- // static helpers
-
- private static void tryLoadSnippetClass(String snippetClassName)
+ public String resolveID(String id)
{
{
- tryInvokeStaticInitializer(snippetClassName, "Error getting snippet class: %s: %s\n");
+ if (id.startsWith("class:"))
+ return id;
+ return standardSnippetIDClassNames.get(id);
}
}
- public static void tryInvokeStaticInitializer(String className, String errorMessageFormat)
+ // static helpers
+
+ private static void tryLoadSnippetClass(String snippetClassName)
{
{
- try
- {
- Class.forName(className, true, CodeSnippetSupplier.class.getClassLoader());
- }
- catch (ClassNotFoundException e)
- {
- System.err.printf(errorMessageFormat, className, "ClassNotFoundException thrown: " + e.getMessage());
- }
+ ReflectionHelper.tryInvokeStaticInitializer(snippetClassName, "Error getting snippet class: %s: %s\n");
}
}
-
}
\ No newline at end of file
}
\ No newline at end of file