Skip to content

Commit 1e66239

Browse files
committed
Merge branch 'develop_2' into issue/332_maven_plugin_improvements
2 parents f989151 + 7617c68 commit 1e66239

File tree

121 files changed

+1144
-531
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

121 files changed

+1144
-531
lines changed

dsf-bpe/dsf-bpe-process-api-v1-impl/pom.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@
4949
<artifactId>hapi-fhir-validation-resources-r4</artifactId>
5050
<version>${hapi.fhir.version.v1}</version>
5151
</dependency>
52+
53+
<dependency>
54+
<groupId>org.ow2.asm</groupId>
55+
<artifactId>asm</artifactId>
56+
</dependency>
5257

5358
<dependency>
5459
<groupId>org.apache.logging.log4j</groupId>
@@ -194,6 +199,10 @@
194199
<artifactId>hapi-fhir-base</artifactId>
195200
<version>${hapi.fhir.version.v1}</version>
196201
</artifactItem>
202+
<artifactItem>
203+
<groupId>org.ow2.asm</groupId>
204+
<artifactId>asm</artifactId>
205+
</artifactItem>
197206
</artifactItems>
198207
</configuration>
199208
</execution>

dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/ProcessPluginApiImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import java.util.Objects;
44

5-
import org.camunda.bpm.engine.delegate.DelegateExecution;
5+
import org.operaton.bpm.engine.delegate.DelegateExecution;
66
import org.springframework.beans.factory.InitializingBean;
77

88
import com.fasterxml.jackson.databind.ObjectMapper;

dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/listener/AbstractListener.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66
import java.util.Objects;
77
import java.util.function.Function;
88

9-
import org.camunda.bpm.engine.delegate.DelegateExecution;
10-
import org.camunda.bpm.engine.delegate.ExecutionListener;
119
import org.hl7.fhir.r4.model.Coding;
1210
import org.hl7.fhir.r4.model.ResourceType;
1311
import org.hl7.fhir.r4.model.StringType;
1412
import org.hl7.fhir.r4.model.Task;
1513
import org.hl7.fhir.r4.model.Task.ParameterComponent;
14+
import org.operaton.bpm.engine.delegate.DelegateExecution;
15+
import org.operaton.bpm.engine.delegate.ExecutionListener;
1616
import org.springframework.beans.factory.InitializingBean;
1717

1818
public abstract class AbstractListener implements ExecutionListener, InitializingBean

dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/listener/ContinueListener.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
import java.util.function.Function;
44

5-
import org.camunda.bpm.engine.delegate.DelegateExecution;
6-
import org.camunda.bpm.engine.delegate.ExecutionListener;
75
import org.hl7.fhir.r4.model.Task;
6+
import org.operaton.bpm.engine.delegate.DelegateExecution;
7+
import org.operaton.bpm.engine.delegate.ExecutionListener;
88
import org.slf4j.Logger;
99
import org.slf4j.LoggerFactory;
1010

dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/listener/EndListener.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
import java.util.Objects;
55
import java.util.function.Function;
66

7-
import org.camunda.bpm.engine.delegate.DelegateExecution;
8-
import org.camunda.bpm.engine.delegate.ExecutionListener;
97
import org.hl7.fhir.r4.model.Task;
108
import org.hl7.fhir.r4.model.Task.TaskStatus;
9+
import org.operaton.bpm.engine.delegate.DelegateExecution;
10+
import org.operaton.bpm.engine.delegate.ExecutionListener;
1111
import org.slf4j.Logger;
1212
import org.slf4j.LoggerFactory;
1313

@@ -116,4 +116,4 @@ private void logEnd(boolean subProcess, Task endTask, Task mainTask)
116116
getCurrentTime(), endTaskUrl, requester, businessKey);
117117
}
118118
}
119-
}
119+
}

dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/listener/StartListener.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
import java.util.function.Function;
44

5-
import org.camunda.bpm.engine.delegate.DelegateExecution;
6-
import org.camunda.bpm.engine.delegate.ExecutionListener;
75
import org.hl7.fhir.r4.model.Task;
6+
import org.operaton.bpm.engine.delegate.DelegateExecution;
7+
import org.operaton.bpm.engine.delegate.ExecutionListener;
88
import org.slf4j.Logger;
99
import org.slf4j.LoggerFactory;
1010

dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/logging/PluginMdcImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
import java.util.Objects;
44
import java.util.function.Function;
55

6-
import org.camunda.bpm.engine.delegate.DelegateExecution;
76
import org.hl7.fhir.r4.model.Coding;
87
import org.hl7.fhir.r4.model.ResourceType;
98
import org.hl7.fhir.r4.model.StringType;
109
import org.hl7.fhir.r4.model.Task;
1110
import org.hl7.fhir.r4.model.Task.ParameterComponent;
11+
import org.operaton.bpm.engine.delegate.DelegateExecution;
1212

1313
import dev.dsf.bpe.api.Constants;
1414
import dev.dsf.bpe.api.logging.AbstractPluginMdc;
@@ -89,4 +89,4 @@ private String getFirstInputParameter(Task task, Coding code)
8989
.filter(v -> v instanceof StringType).map(v -> (StringType) v).map(StringType::getValue).findFirst()
9090
.orElse(null);
9191
}
92-
}
92+
}
Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
package dev.dsf.bpe.v1.plugin;
2+
3+
import java.io.IOException;
4+
import java.io.InputStream;
5+
import java.net.URL;
6+
import java.net.URLClassLoader;
7+
8+
import org.objectweb.asm.ClassReader;
9+
import org.objectweb.asm.ClassVisitor;
10+
import org.objectweb.asm.ClassWriter;
11+
import org.objectweb.asm.FieldVisitor;
12+
import org.objectweb.asm.Handle;
13+
import org.objectweb.asm.MethodVisitor;
14+
import org.objectweb.asm.Opcodes;
15+
import org.objectweb.asm.Type;
16+
17+
public class ProcessPluginClassLoader extends URLClassLoader
18+
{
19+
private static final String FROM_PACKAGE = "org/camunda/bpm";
20+
private static final String TO_PACKAGE = "org/operaton/bpm";
21+
22+
public ProcessPluginClassLoader(String name, URL[] urls, ClassLoader parent)
23+
{
24+
super(name, urls, parent);
25+
}
26+
27+
@Override
28+
protected Class<?> findClass(String name) throws ClassNotFoundException
29+
{
30+
try (InputStream is = getResourceAsStream(name.replace('.', '/') + ".class"))
31+
{
32+
if (is == null)
33+
throw new ClassNotFoundException(name);
34+
35+
ClassReader reader = new ClassReader(is);
36+
ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_FRAMES)
37+
{
38+
@Override
39+
protected ClassLoader getClassLoader()
40+
{
41+
return ProcessPluginClassLoader.this;
42+
}
43+
};
44+
45+
ClassVisitor visitor = new ClassVisitor(Opcodes.ASM9, writer)
46+
{
47+
@Override
48+
public void visit(int version, int access, String name, String signature, String superName,
49+
String[] interfaces)
50+
{
51+
super.visit(version, access, name, signature, replace(superName), replaceAll(interfaces));
52+
}
53+
54+
@Override
55+
public FieldVisitor visitField(int access, String name, String descriptor, String signature,
56+
Object value)
57+
{
58+
return super.visitField(access, name, replace(descriptor), replace(signature), value);
59+
}
60+
61+
@Override
62+
public MethodVisitor visitMethod(int access, String name, String descriptor, String signature,
63+
String[] exceptions)
64+
{
65+
MethodVisitor mv = super.visitMethod(access, name, replace(descriptor), replace(signature),
66+
replaceAll(exceptions));
67+
68+
return new MethodVisitor(Opcodes.ASM9, mv)
69+
{
70+
@Override
71+
public void visitTypeInsn(int opcode, String type)
72+
{
73+
super.visitTypeInsn(opcode, replace(type));
74+
}
75+
76+
@Override
77+
public void visitFieldInsn(int opcode, String owner, String name, String descriptor)
78+
{
79+
super.visitFieldInsn(opcode, replace(owner), name, replace(descriptor));
80+
}
81+
82+
@Override
83+
public void visitMethodInsn(int opcode, String owner, String name, String descriptor,
84+
boolean isInterface)
85+
{
86+
super.visitMethodInsn(opcode, replace(owner), name, replace(descriptor), isInterface);
87+
}
88+
89+
@Override
90+
public void visitLdcInsn(Object value)
91+
{
92+
if (value instanceof Type t)
93+
value = Type.getType(replace(t.getDescriptor()));
94+
else if (value instanceof String s)
95+
value = replace(s);
96+
97+
super.visitLdcInsn(value);
98+
}
99+
100+
@Override
101+
public void visitInvokeDynamicInsn(String name, String descriptor, Handle bootstrapMethodHandle,
102+
Object... bootstrapMethodArguments)
103+
{
104+
super.visitInvokeDynamicInsn(name, replace(descriptor), bootstrapMethodHandle,
105+
replaceMethodArguments(bootstrapMethodArguments));
106+
}
107+
};
108+
}
109+
};
110+
111+
reader.accept(visitor, ClassReader.EXPAND_FRAMES);
112+
113+
byte[] modified = writer.toByteArray();
114+
115+
return defineClass(name, modified, 0, modified.length);
116+
}
117+
catch (IOException e)
118+
{
119+
throw new ClassNotFoundException("Failed to load class: " + name, e);
120+
}
121+
}
122+
123+
private String replace(String name)
124+
{
125+
return name == null ? null : name.replace(FROM_PACKAGE, TO_PACKAGE);
126+
}
127+
128+
private String[] replaceAll(String[] names)
129+
{
130+
if (names == null)
131+
return null;
132+
133+
String[] result = new String[names.length];
134+
135+
for (int i = 0; i < names.length; i++)
136+
result[i] = replace(names[i]);
137+
138+
return result;
139+
}
140+
141+
private Object[] replaceMethodArguments(Object... args)
142+
{
143+
Object[] newArgs = new Object[args.length];
144+
145+
for (int i = 0; i < args.length; i++)
146+
{
147+
Object arg = args[i];
148+
if (arg instanceof Type t)
149+
newArgs[i] = Type.getType(replace(t.getDescriptor()));
150+
else if (arg instanceof Handle h)
151+
newArgs[i] = new Handle(h.getTag(), h.getOwner(), h.getName(), replace(h.getDesc()), h.isInterface());
152+
else
153+
newArgs[i] = arg;
154+
}
155+
156+
return newArgs;
157+
}
158+
}

dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/plugin/ProcessPluginFactoryImpl.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package dev.dsf.bpe.v1.plugin;
22

3+
import java.net.URL;
34
import java.net.URLClassLoader;
45
import java.nio.file.Path;
56
import java.util.stream.Stream;
67

7-
import org.camunda.bpm.engine.impl.variable.serializer.TypedValueSerializer;
8+
import org.operaton.bpm.engine.impl.variable.serializer.TypedValueSerializer;
89
import org.springframework.context.ApplicationContext;
910
import org.springframework.core.env.ConfigurableEnvironment;
1011

@@ -25,9 +26,15 @@ public ProcessPluginFactoryImpl(ClassLoader apiClassLoader, ApplicationContext a
2526
ProcessPluginDefinition.class);
2627
}
2728

29+
@Override
30+
protected URLClassLoader createPluginClassLoader(String name, URL[] urls, ClassLoader parent)
31+
{
32+
return new ProcessPluginClassLoader(name, urls, parent);
33+
}
34+
2835
@Override
2936
protected ProcessPlugin createProcessPlugin(Object processPluginDefinition, boolean draft, Path jarFile,
30-
URLClassLoader pluginClassLoader)
37+
ClassLoader pluginClassLoader)
3138
{
3239
return new ProcessPluginImpl((ProcessPluginDefinition) processPluginDefinition, API_VERSION, draft, jarFile,
3340
pluginClassLoader, environment, apiApplicationContext, serverBaseUrl);

dsf-bpe/dsf-bpe-process-api-v1-impl/src/main/java/dev/dsf/bpe/v1/plugin/ProcessPluginImpl.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,6 @@
1515
import java.util.function.Predicate;
1616
import java.util.stream.Stream;
1717

18-
import org.camunda.bpm.engine.delegate.ExecutionListener;
19-
import org.camunda.bpm.engine.delegate.JavaDelegate;
20-
import org.camunda.bpm.engine.delegate.TaskListener;
21-
import org.camunda.bpm.engine.delegate.VariableScope;
22-
import org.camunda.bpm.engine.impl.bpmn.parser.FieldDeclaration;
23-
import org.camunda.bpm.engine.impl.util.ClassDelegateUtil;
24-
import org.camunda.bpm.engine.variable.value.PrimitiveValue;
2518
import org.hl7.fhir.instance.model.api.IBaseResource;
2619
import org.hl7.fhir.r4.model.ActivityDefinition;
2720
import org.hl7.fhir.r4.model.CanonicalType;
@@ -42,6 +35,13 @@
4235
import org.hl7.fhir.r4.model.Task;
4336
import org.hl7.fhir.r4.model.Task.TaskStatus;
4437
import org.hl7.fhir.r4.model.ValueSet;
38+
import org.operaton.bpm.engine.delegate.ExecutionListener;
39+
import org.operaton.bpm.engine.delegate.JavaDelegate;
40+
import org.operaton.bpm.engine.delegate.TaskListener;
41+
import org.operaton.bpm.engine.delegate.VariableScope;
42+
import org.operaton.bpm.engine.impl.bpmn.parser.FieldDeclaration;
43+
import org.operaton.bpm.engine.impl.util.ClassDelegateUtil;
44+
import org.operaton.bpm.engine.variable.value.PrimitiveValue;
4545
import org.slf4j.Logger;
4646
import org.slf4j.LoggerFactory;
4747
import org.springframework.beans.BeansException;

0 commit comments

Comments
 (0)